본문 바로가기

IT인생_스크랩/Windows

Active Directory 의 일반 이해

[  출처 : http://blog.naver.com/reddangun/120019412955  ]



Active Directory란 바로 Directory Service의 개념에서 출발한 것이다. 이를 이해하기 위해 우선 Directory Service에 관하여 우선 알아 보자.

Directory Service란

 

Directory란 일종의 저장 용기(container)로서, 여기에는 사용자에 관한 데이터, 프린터, 서버, 데이터베이스, 그룹, 컴퓨터, 보안 정책등과 같은 object가 들어 있다. 예를 들면 전화번호부를 directory라고 부르는 이유는 그 전화번호부 안에 각 전화 이용자의 이름이나 회사의 전화번호부와 주소가 있기 때문이다.

Directory Service는 이 Directory에 있는 정보를 사용자가 찾아서 해당 네트워크 자원에 액세스할 수 있도록 하는 서비스를 말한다. 여기서 네트워크 자원이라고 하는 것은 사용자 계정, 그룹 계정, 컴퓨터, 프린터 등과 같은 주변 기기들을 말한다. 이는 관리자(Administrators)가 directory object과 그 속성(attributes)을 정의 하고 관리하도록 되어 있다.

 

Active Directory란?

Active Directory란 Windows 2000 Server에 들어 있는 Directory Service를 말한다. Active Directory는 directory service로서 기본 기능뿐만 아니라 거대 기업의 네트워크 환경을 관리 할 수 있는 기능까지 들어 있다.

Active Directory의 directory service로서의 기본 기능을 다음과 같이 수행한다.

조직이나 회사의 확장이나 성장에 따라 같이 확장할 수 있는 정보 소오스의 역할.
관리자가 한 컴퓨터에서 전체 네트워크의 정보를 입력하고 관리할 수 있는 기능.
Schema에서 정의한 룰이나 정책을 정의할 수 있는 방법을 갖춤.
DNS(Domain Name System)이나 LDAP(Lightweight Directory Access Protocol)을 이용하는 Internet 관련 directory object를 검색할 수 있는 방법을 제공함.
Active Directory 의 전체 기능(Full capabilities)

Active Directory의 전체 기능을 이해하기 위해서는 Active Directory가 가지고 있는 기본 기능 이외에 이가 가지고 있는 다른 기능 까지도 알아 볼 필요가 있다. 이는 사용자의 현재 네트워크 환경에 있는 시스템과 서로 호환되면서 장애 발생시도에도 서비스를 계속할 수 있는 기능과 directory object에 허가 받지 않는 사용자들이 접근할 수 없도록 보호하는 기능도 들어 있다.

그러면 이제 Active Directory의 기본 기능과 전체 기능에 대해서 알아 보자.

 

Active Directory 기본 기능

 

Active Directory의 기본 기능을 다음과 같이 5 가지 정도로 정리해서 살펴 보자.

확장가능 Directory (Extensible Directory)

Active Directory가 적게는 몇 백 개 수준의 object에서 부터 몇 백 만개 의 object를 관리할 수 있는 것은 Active Directory가 기본적으로 여러 개의 섹션으로 나누어져서 관리 될 수 있도록 하는 파티션 개념을 도입했기 때문이다. Active Directory는 여러 개의 파티션으로 이루어져 있기 때문에 회사나 조직이 성장하더라도 이에 따라 계속 확장할 수 있는 것이다.

스키마(Schema)- 공통된 정의 방법

Directory service를 하기 위해선 object 에 대한 기술 방법이나 이를 유형별로 구분하는 일정한 룰이 필요한 데, Active Directory는 스키마(schema)를 이용하여 각 object를 관리하고 이용한다. 스키마(Schema)가 정의하는 데로 Active Directory의 내용과 구조가 구축된다. 그리고 이 스키마 자체도 바로 Active Directory내에 포함 되어 있다.

Internet표준 이름 명명법- DNS를 이용

Active Directory는 Internet 이름 영역(name space) 개념인 DNS을 도입하여 사용한다. 이는 이름을 IP주소로 이름 풀이하는 방법인 데, Active Directory는 이 DNS를 이용하여 Internet에 있는 자원이나 object를 찾는다. 이는 바로 네트워크 상의 물리적 지리적 위치에 상관없이 자원이나 object의 이름으로 바로 찾을 수 있는 방법을 제공하게 되는 것이다.

 

LDAP지원(Lightweight Directory Access Protocol)

Active Directory을 검색하고 directory와 응용 프로그램간의 정보 교환을 할 때에 바로 이 LDAP 프로토콜을 사용한다.

한 곳에서 관리할 수 있는 기능(Single Point of Administration)

Directory를 관리한 다는 것은 네트워크 상의 자원이나 object를 끊임 없이 추가하거나, 변경하고 삭제하는 작업을 말한다. Active Directory에서는 네트워크 상의 어떤 자원이나 object도 한 컴퓨터에서 액세스하여 관리할 수 있도록 되어 있다. 이는 관리 비용과 시간의 절약을 말하는 것이다.

 

Active Directory 의 정상 기능(Full capabilities)


Directory Service로서의 Active Directory 기본 기능 이외에 다음 4 가지 정도의 추가 기능이 Active Directory에서 제공된다.

향상된 질의/응답 기능(Enhanced Queries)

Active Directory 에는 Global catalog server에 전체 directory 에 대한 index를 만들어 둔다. 이 Global catalog server에다가 사용자는 질의 함으로서, 전 네트워크에 대한 자원이나 object를 찾을 수 있고, 이를 view해 볼 수 있다. Global catalog server는 Active Directory가 replication(복제)될 때에 자동으로 생성되기 때문에 전 네트워크에 걸쳐 복제된 정보를 이중화로 가지고 있다.

결함 허용(Fault Tolerance)

Active Directory가 복제 되기 때문에 이는 한 쪽에 장애가 발생하더라도 복제된 정보를 이용해서 계속 서비스를 할 수 있기 때문에 결함허용 기능을 가지게 된다. 다시 말하며 전 네트워크 사용자는 똑 같이 복제된 데이터를 사용하기 때문에 그 중 하나에 장애가 발생하더라도 동일한 서비스를 계속 받을 수 있다는 것을 말한다.

보안 통제(Security Controls)

사용자나 관리자가 Active Directory를 사용하고 관리하는 것은 보안 정책(Security Policy)으로 규정된다. Active Directory에는 ACL(Access Control List)가 있어서 directory내의 object 에 대한 정보를 연결해서 읽어 오는 것을 행위는 퍼미션이 부여된 사람 많이 할 수 있도록 통제 된다. 그리고 전체 네트워크의 자원과 object에 대한 모든 액세스 통제를 한 사람이 다 할 수는 없기 때문에 이를 여러 책임 있는 그룹에게 관리 권한과 책임을 분산하여 이양할 수도 있다.

호환성(Interoperability)

Active Directory는 다음과 같이 다른 운영체제나 서비스, 플랫폼(platform), 프로토콜과 문제없이 상호 운용된다.

NT 3.51, 4.0과 같이 호환된다.
DNS서비스를 이용하여 Internet 이름 영역 과 통합되어 운영된다.
코 어 프로토콜은 LDAP 버전 2 버전 3을 사용한다.
ISO X.500 표준을 따르며, MS Exchange 4.0과 5.x 클라이언트가 사용하는 NSPI(Name Service Provider Interface)도 지원한다.
WWW을 통하여 정보를 제공할 수 있는 Internet 프로토콜인 HTTP(Hypertext Transfer Protocol)을 지원한다.
NDS(Novell Directory Service)등과 같은 다른 directory service와도 정보를 공유할 수 있다.
Active Directory는 어떻게 동작하는가?

Active Directory 는 분산 네트워크에 적용될 수 있도록 만들어진 directory service이다. 그러므로 이는 각 분산된 네트워크나 사용자들이 지역이나 하드웨어의 제약을 떠나서, 다국적 기업일 경우에는 각 국가가 사용하는 서버의 언어도 극복해서 구축 관리 할 수 있도록 만들어진 것이다. 다시 말하면 회사나 조직의 그 크기에 한계에 상관없이 적용할 수 있는 directory service이기 때문에 단일 서버를 사용하는 아주 작은 조직에서부터 수천 대의 서버에서 수 백만 개의 object를 관리해야 하는 거대 기업에 까지 이를 적용할 수 있는 것이다.

이러한 분산 처리 방식의 directory service인 Active Directory의 동작 원리를 이해하기 위하여 다음과 같은 4 가지 정도의 개념을 이해하도록 하자.

표준 이름 명명법(Naming Standards)
논리적 구조 요소와 organization 그리고 이 들의 상관관계
각  컴포넌트의 물리적 구조와 동작
Active Directory의 보안 특징
 

 

Active Directory에서의 표준 이름 명명법(Naming Standards)


Active Directory는 각 object 를 기준으로 하여 동작한다. 각 object는 Active Directory내에서 각각 고유한 이름을 갖게 되며 이것으로 서로 구분된다.

이름영역(Namespace)

Active Directory는 각 고유의 이름을 가진 object로 구성되며, 그 이름을 기술적이 용어로 이름영역(namespace)이라고 한다. 이 namespace는 일종의 경계를 포함하는 영역을 나타내는 것이다.

이름 풀이(Name Resolution)

이름 풀이(Name resolution)라고 하는 것은 이름을 object 나 그 이름이 나타내고 있는 정보로 번역하는 과정을 말한다. 예를 들면 전화 번호부라는 것은 전화 가입자의 이름으로 그 사람의 전화 번호와 주소에 관한 정보를 알아 낼 수 있는 이름 영역(Namespace)이라고 할 수 있는 것이다. 이와 같이 Active Directory도 object의 이름이 object 그 자체로 변환될 수 있는 이름 영역을 구성하는 것이다. 실례를 들자면, 사용자 James Smith는 Active Directory 내에서 그가 속한 domain의 이름도 풀이가(알 수 있게 되는)되는 것이다.

관리자가 Active Directory 구조를 생성할 때에, 그 컨텐츠는 논리적 계층적 구조로 만들어 져서 보관된다.

예를 들면, Tailspin Toy사는 icmarket.com로 되어 있으며, 이 회사의 생산과 국제부 그리고 마케팅 부서는 Tailspin Topy사의 이름 영역을 붙여서, 각기 manu.icmarket.com, inter.icmarket.com, 그리고 market.icmarket.com로 만들어 지며 이 것이 바로 Active Directory내에서 논리적 계층 구조로 이름이 명명된다는 것을 말하는 것이다.

Active Directory Name Types

Active Directory내의 각 object의 이름에는 다음과 같은 3 가지 타입이 있다.

DN(Distinguished Name)

Active Directory내의 모든 object 는 DN을 가진다. James Smith 가 ICMARKET 회사의 Marketing 부서에서 근무하는 사용자라고 할 때, 이 James Smith 의 DN은 다음과 같이 표현 된다.

James Smith라는 object의 DN = James Smith@market.icmarket.com

여기서 각 부분을 살펴보면;

James Smith: 이것은 Active Directory내에 정의된 user object의 실제 이름이다.

Market: 이것은 ICMARKET사의 Marketing 부서를 나타내는 컨테이너(container)이다.

Icmarket: 이것은 Active Directory내의 ICMARKET사의 이름 영역(namespace)이다.

Com: Internet에서  일반 회사임을 나타내는 (edu, mil처럼) 컨테이너(container)이다.

Relative Distinguished Name

RDN(Relative Distinguished Name)은 object의 attribute(속성)을 나타내는 이름의 한 부분을 말한다. Active Directory에서 질의를 할 때에 DN 뿐만 아니라 object의 한 속성을 가지고 찾을 수도 있다. James Smith라는 user object의 RDN은 바로 James Smith이다. 이 object의 부모(parent) object 의 RDN은 Users이다.

User Principal Name

UPN(User Principal Name)이란 Windows 2000에서 사용자의 로그온 이름이다. UPN은 사용자 object가 있는 컨테이너의 DNS 이름이나 user object 를 대신하는 줄인 이름인 것이다. James Smith 는 jsmith 등과 같은 UPN을 갖을 수 있을 것이다.

Naming Conventions(이름 명명법)

Active Directory는 다음과 같은 업계 표준인2 가지의 이름 명명법을 사용하기 때문에 사용자나 응용프로그램이 Active Directory를 액세스 할 때에 비슷한 포맷으로 사용할 수 있다.

Domain Name System

Internet 의 표준 이름 영역(namespace) 방식이 DNS이다. Active Directory는 이 DNS와 같은 이름 영역 표시법을 사용하고 또 이를 이용해서 이름을 주소로 풀이(Name resolution)해서 그 자원이 있는 장소를 찾을 수 있는 서비스를 제공하기도 한다. DNS는 계층적 구조를 가진 이름 영역 표시법이기 때문에 이를 이용하여 네트워크 상의 컴퓨터나 다른 자원들을 찾을 수 있는 방법으로 쓰이는 것이다.

Lightweight Directory Access Protocol

LDAP 버전 2 와 버전 3을 지원한다. 그리고 이는 Active Directory가 directory database와 응용 프로그램 간의 핵심 프로토콜로 사용된다.

 

Active Directory의 논리 구조와 그 요소들


Active Directory를 구성하는 각 요소들은 논리적인 구조로 엮어져 있다. 정보나 자원들은 사용자나 회사가 그것을 사용하는 용도나 내용에 따라서 논리적으로 그룹화 되어 있으며, 이 그룹화 된 object를 위치에 상관없이 그 이름만으로 손쉽게 탐색할 수 있는 것이다. 이러한 Active Directory의 논리 구조에 대해서 우선 이를 구성하는 기본 구성 요소에 대해서 알아 보자.

Objects

object란 공통된 속성을 가지며 class(클래스)별로 구성된다. Users, computers, printers, applications등이 object이다.

Object Attributes

Attribute(속성 혹은 properties)는 각 object가 가지고 있는 특징을 정의하는 정보의 카테고리이다. 같은 타입의 모든 object는 동일한 attribute를 가진다. 그리고 그 attribute의 값이 서로 틀리기 때문에 해당 object를 고유(unique)하게 되는 것이다. 예를 들면 User Account object의 attribute 중에 First Name 이 있을 경우에, 이 First Name 속성의 값에는 John, 이나 Jane등 어떤 이름이던지 들어 갈 수가 있으며, 이 속성 값으로 네트워크 상의 누구라도 찾을 수 있는 것이다.

Object Classes

Object Classes는 object의 논리적 그룹이다. 이 클래스의 특징을 기술하는 것을 properties라고 부른다. 예를 들면 object classes는 users, groups, computers, domains, organizational units 그리고 security policies등이 있다.

Schema

Schema는 Active Directory의 object 를 정의한다. 이는 각 object 의 attributes, classes, 그리고 classes properties등을 규정한다. 이 schema는 각 object의 attributes에 특정 값이 반드시 필요한 지 아니면 선택인지(optional)인지를 규정한다. 그리고 이 schema는 손쉽게 확장되는 데, User Account object의 First Name 이라는 attribute에는 반드시 입력되어야 하는 값이 있어야 하는 반면에, Telephone Number나 Address라는 attribute에는 값이 들어가도 되고 안 들어가도 되는 optional로 정의 되어 있다.

 

Active Directory의 논리 구조


Active Directory object는 다음과 같이 containers, domains 그리고 OUs를 구성한다.

Containers

Container는 다른 object를 포함하고 있는 일종의 directory object이다. 컴퓨터 네트워크나 domain은 container의 한 일종이다.

Domains

Active Directory의 논리 구조의 핵심 단위가 domain이다. 이 domain은 사용자 계정 정보와 이DNS이름을 바탕으로 서로를 각기 구별하고 보안 정보를 공유하는 object의 논리적 container이다.

한 domain은 보안 관리 체계를 이루는 최소 단위가 되면서 Windows 2000 네트워크에 복제가 일어나는 단위가 된다. 다시 말하면, security policy던가, 관리 권한(administrative right), ACL등과 같은 것은 domain 내부에서만 일어나는 것이지 다른 domain으로 적용할 수 없는 것이다. 하지만 domain은 다른 domain과 보안 관계를 맺을 수 있다.

한 domain은 지리적으로 여러 곳을 커버 할 수 있다.

Domain Controller

Active Directory의 물리적 구조를 살펴 보면, domain controller라는 서버가 domain의 directory를 한 벌 저장하고 있다. 한 domain내에서 여러 개의 domain controller가 있으며, 이는 각기 해당 domain의 directory 정보의 복제 본을 한 벌씩 가지고 있다.

Organizational Units

OU(Organizational Units)는 일종의 container object로서 domain내의 object 들을 관리할 수 있는 그룹으로 묶어 놓은 것을 말한다. 하나의 OU는 user accounts, groups, computers, printers, applications, security policies, file shares, 그리고 다른 OU등을 포함할 수 있다.

한 domain내의 OU는 그 계층 구조가 다른 domain의 계층구조와 전혀 상관이 없이 구성된다. 그러므로 OU는 각 domain에서 독립적인 계층 구조를 가진다고 말할 수 있다.

 

Active Directory의 논리 구조와 그 상관 관계


Domain은 서로 연결되어Tree와 Forest를 구성한다.

Trees

연속되는 이름영역(namespace)을 가진 하나 이상의 domain으로 구성된 계층적 조직을 tree라고 한다. 이 연속된 이름영역(contiguous namespace)이라는 것은 parent container의 이름이 child object의 이름의 뒤에 붙는다는 것을 말한다. Active Directory내에서 tree내의 domain끼리는 서로 trust relationship을 가지면서 공통된 schema, configuration, global catalog server를 사용한다. 여기서 trust relationship이라고 하는 것은 두 개 이상의 domain을 논리적으로 연결하여 하나의 관리 단위로 이용하는 것을 의미하기 때문에 각 object는 domain에 상관없이 서로 공유된다. 여기에 사용된 trust relationship은 2 way trust relationship혹은 transitive trust라고 불리며, Kerberos 버전 5 프로토콜이 trust relationship을 인증하는데 사용된다.

예를 들면, ICMARKET 사는 Manufacturing 부서를 위해 하나의 domain을 만들어 manu.icmarket.com라고 이름하고 Marketing 부서는 market.icmarket.com라고 이름 짓는 다면, 각 부서의 domain은 공동의 application과 자원을 공유하게 해야 한다. 이 것이 가능한 것은 이 두개의 domain이 icmarket.com라는 연속되는 이름영역(namespace)을 사용하기 때문이다.

Forests

Forest는 연속되지 않는 이름영역(namespace)을 가진 하나 이상의 tree로 이루어 진다. Forest내의 각 tree는 독립적인 이름영역(namespace)을 가지는 데, 이들 tree간에 각기 틀린 이름영역을 disjointed namespace라고 부른다. 디폴트로 root tree나 forest내에서 제일 먼저 만들어 지는 tree의 이름이 forest의 이름으로 사용된다.

비록 그 이름은 서로 공유되지 않더라도 forest내의 tree들은 schema, configuration 그리고 global catalog server는 공유한다. 예를 들면 미국에 있는 icmarket.com와 한국에 새로 만들어진 tainspintoys.co.kr은 서로 다른 이름영역을 가지더라도 동일한 application, objects 등을 공유할 수 있는 것이다.

Global Catalog Server

Global catalog server는 전체 directory의 모든 구성 요소와 그 상관 관계를 한눈에 알아 볼 수 있도록 한다. 이것은 Active Directory가 복제 될 때에 만들어 지며, 전 directory의 복제 본을 저장하고 있다. 이것을 통하여 사용자나 관리자가 object의 attribute 로서 모든 directory object를 이를 저장하고 있는 domain이나 domain내의 서버나 그 서버의 지리적 위치에 상관없이 찾을 수 있다.

Global catalog server는 모든 directory object를 담고 있지만 이는 Active Directory의 각 object와 attribute의 일부분을 복제하여 저장하고 있다. 다시 말하면 각 object의 전 attribute를 저장하는 것이 아니라 검색에서 가장 자주 이용되는 attribute 들만 저장하고 있는 것이다. 예를 들면 user account object의 First Name은 들어 있어도, Last Name 이나 logon name은 들어 있지 않은 것이다.

 

물리적 구조의 구성 요소


Active Directory는 논리 구조와 물리 구조로 나누어 접근해 볼 수 있다. 앞장에서의 논리구조와는 달리 Active Directory는 Site내에서 domain controller를 포함하는 site topology 를 구성하여 하나의 물리적 디렉토리 구조를 이룬다.

Sites

Site란 Active Directory server가 물리적으로 위치하는 장소 정도로 이해하면 된다. Administrators는 신뢰성 있고 아주 빠른 LAN 네트워크 망에 있는 여러 서버들을 묶어서 Site를 만든다. 여기서 신뢰성 있고 아주 빠른 LAN 네트워크가 필요한 까닭은 Site내의 서버 끼리 일어나는 복제 작업에 따른 네트워크 트래픽을 감당해야 하기 때문이다. Site는 서버나, 컴퓨터, 프린터, 팩스 등과 같은 하드웨어를 포함한다. IP 네트워크의 서브 넷을 Site로 만들게 되면 관리자가 Active Directory를 설정하거나 관리하기가 용이해진다.

Site를 만들 때 고려해야 하는 것은;

복제 트래픽이 원할 하게 전송될 것
사용자가 domain controller에 신뢰성 있고 아주 빠른 LAN 망으로 접속할 수 있게 할 것.
한 Site는 여러 domain의 여러 domain controller를 포함할 수 있고, 한 domain의 여러 domain controller는 여러 site에 포함될 수 있다.
Site는 이름영역(namespace)에 속하지 않는다. Site topology정보나 그 구조에 관한 사항은 directory에 별개로 저장된다.

Site Topology

Site Topology는 기업의 전 네트워크에 site를 어떻게 분산 배치 할 것인가를 기술하고 있다. 한 site에 최소 하나의 domain controller를 두도록 설계하는 것이 좋다.

Domain Controllers

Domain controller란 domain directory를 업데이트 할 수 있는 복사본을 가지고 있는 서버를 말한다. 모든 domain controller는 계층적 구조가 아닌 동등한 관계를 유지하기 때문에 NT 4.0 이전 버전에 있었던 primary나 backup domain controller라는 개념은 더 이상 사용하지 않는다.

Domain controller가 없는 Site도 있을 수 있다. 이 경우에는 복제가 일어나지 않는다.

 

물리적 구조 내에서의 동작


Site를 이루는 물리적 구성 요소와 domain controller가 구성되면 이는 Active Directory운용에 함께 어울려 동작한다. 이 동작에는 디렉토리 복제, Global catalog server 업데이트, Directory 확장과 성능의 최적화를 위한 directory저장 조직의 개편 등이 포함된다.

복제(Replication)

Directory에 변경이 생기면 이는 바로 다른 domain controller에게도 복제가 일어난다. 그리고 domain내에 새 서버가 설치될 때에도 domain directory는 자동으로 이 새로 설치되는 서버에 복제가 되는 것이다.

Active Directory는 multi-master replication을 한다.

Replication이 됨으로써 다음과 같은 두 가지 이점이 있다.

서버의 장애로 인해 디렉토리 데이터에 손상이 가더라도 다른 서버에서 읽을 수 있다.
복제된 디렉토리가 네트워크 전반에 걸쳐 있기 때문에 각 사용자의 액세스가 분산되어 로드를 줄일 수 있다.
복제가 일어나게 되면 이 변경 사항이 Global catalog server에도 복제가 된다.

물리 구조에서의 Global catalog server의 역할

Global catalog server는 domain controller가 만들어 질 때에 자동으로 만들어 진다. Active Directory의 부분 복제 분이 domain controller에 있게 된다. 이것이 가능한 것은 Active Directory가 정보와 자원을 저장하기 위해 partition을 사용하기 때문이다.

Partitions

Partitions은 디렉토리 데이터의 서브 셋을 담고 있는 물리적 저장 컨테이너 이다. Active Directory는 partition에 각 domain의 디렉토리 정보를 DN별로 분리 저장한다. Active Directory의 저장 컨테이너(container)는 domain이나 OU가 될 수 있다. Global catalog server는 DN을 보면 해당 object가 있는 partition의 복제 본이 어디 있는지를 알 수 있기 때문에 object를 쉽게 찾을 수 있다.

Naming context

Naming context란 디렉토리의 연속되는 서브 트리이며 복제의 단위가 된다. 한 partition이 하나의 naming context이다. Active Directory에서는 하나의 서버가 다음과 같이 최소 3 개의 naming context를 가진다.

Configuration: Sites, services, partition과 schema에 대한 물리적 데이터를 저장한다.
Domain naming: domain directory 데이터를 포함하는 복제의 기본 단위이다.
Schema: 전 Active Directory에 대한 Schema를 저장한다.
복제(replication)가 일어 날 때 마다 이들 naming context도 복제된다.

Active Directory Security 특징

Active Directory를 관리하고 액세스하는 것은 엄격한 보안 관리를 통해서 제어된다. 이 보안 관리를 위해 다음과 같이 4 가지 기능이 있다.

Access Control List

Active Directory내의 각 object에는 해당 object를 누가 이 object를 어떤 퍼미션으로 액세스 할 수 있지를 통제할 수 있는 Access Control List(ACL)이 있다. 이 ACL의 적용 대상은 object 뿐만 아니라, object attribute과 object classes도 액세스 하는 것을 통제한다.

Delegation(권한 위임)

Delegation이란 Administrators가 특정 개인이나 그룹에게 컨테이너나 서브트리에 대한 특정 퍼미션을 주어서 이를 관리하게 할 수 있는 것을 말한다.

Inheritance

상속(Inheritance)이란 컨테이너 object에 대한 ACE(Access Control Entry)을 child container에 있는 object에게도 그대로 세습하여 적용하는 것을 말한다.

Trust Relationships

한 domain에 있는 사용자가 다른 domain에 있는 자원을 액세스 하려면 해당 domain사이에는 trust relationship이 이루어져야 한다. 이 trust relationship은 schema, configuration 그리고 global catalog server를 공유한다는 것을 의미한다.

이 trust relationship에는 다음과 같이 transitive trust와 explicit trust가 있다.

Transitive Trusts

Domain이 만들어 져서 tree에 포함 될 때에 이 transitive trust가 자동으로 설정된다. Transitive trust란 domain간에 서로 양방향 신뢰관계(trust relationship)가 설립되는 것을 말한다. 이는 forest 에서도 일정한 퍼미션만 주어진다면 사용자는 어떤 자원에도 액세스할 수 있도록 하기 위함이다.

이 Transitive Trust는 Kerberos 버전 5 프로토콜을 사용해서 사용자 인증을 한다.

이 transitive trust를 다른 용어로 implicit trust라고도 하는 데, 이는 domain A가domain B를 trust하고, domain B가 domain C를 trust할 경우에, domain A는 자동으로 domain C를 trust하는 관계가 되는 것을 의미한다.

Explicit Trusts

Explicit trust란 단 방향으로 신뢰가 설정되는 경우이다. Domain A가 domain B를 trust할 때에는 domain B의 사용자가 domain A의 자원을 액세스 할 수 있다. 그 반대는 안 된다. Forest 간에는 explicit trust가 설정된다.

 

Windows 2000 아키텍쳐 상으로 본 Active Directory


Windows 2000의 아키텍쳐를 살펴 보면 서로 분리된 모듈들이 서로 상호 보완적으로 동작하여 운영체제를 만들고 있음을 볼 수 있다. 이 중에 Active Directory는 Security subsystem 내의 LSA(Local Security Authority)내에 들어 있다. 이 Security subsystem은 user mode에서 동작하는 데, ACL(Access Control List)가 이 Active Directory내의 모든 object에의 접근을 통제하고 있다. Active Directory내의 object나 object attribute에 액세스 하려면 NT 액세스 인증 루틴이 이 ACL에 들어 있는 리스트와 비교에서 해당 사용자가 접근 권한이 있는 지를 확인하고 인증한다.

Windows 2000 보안 기반 구조는 다음과 같은 4 가지 주요 기능을 수행한다.

보안 정책(security policies)과 계정 정보를 저장하면서 directory service를 제공한다.
모 든 object에 대해 보안 모델을 구축한다.
Active Directory 에 대한 액세스를 인증하는 작업을 한다.
Active Directory의 trust relationship 정보를 저장하고 있다.
그리고 아키텍쳐 상으로 Windows 2000은 NT 4.0 과 비교해서 다음과 같은 상이점을 가지고 있다.

PNP manager와 Power Manager가 user mode와 kernel mode에 추가 되었다.
I/O manager가 QoS(Quality of Service)와 ATM 및 기타 드라이버를 포함하고 있다.
Ntoskrnl.exe(NT OS kernel)에 Terminal Server가 포함되어 있다.
 

Security Subsystem 과 Local Security Authority


Security Subsystem은 LSA(Local Security Authority: Lsass.exe)포함하고 있고, 이 LSA속에 있는 Directory Service모듈 안에 Active Directory가 들어 있다.

LSA는 로컬 컴퓨터의 보안을 관리하는 서브 시스템으로서 적절한 퍼미션을 가진 사용자만이 해당 컴퓨터에 로컬 로그온 할 수 있도록 통제하는 데, 다음과 같은 기능을 수행한다.

사용자와 그룹에 관한 정보를 담고 있는 토큰을 만들고 해당 사용자에게 권한을 부여하는 일은 한다.

Local security policy를 관리한다.

대화형 사용자 인증 서비스를 제공한다.

감사 정책(Audit Policy)과 그 설정을 관리한다.

그리고 LSA의 각 dll들은 다음과 같은 기능을 수행한다.

Netlogon.dll: 클라이언트 컴퓨터와 domain controller간에 보안 채널을 유지하는 서비스를 제공한다. 사용자의 크리덴셜(credentials: 외교에서는 신임장)을 이 보안 채널을 통하여 domain controller에게 보내게 되면 domain controller는 이 사용자를 인증하면서 사용자 권한을 확인한다. Windows 2000에서는 Netlogon은 DNS를 이용하여 domain controller를 찾아 낸다. 하지만NT 4.0에서는 이 Netlogon이 Primary domain controller와 Backup domain controller간의 복제 프로토콜로 사용되었다.
Msv1_0.dll: 이것은 NT LAN Manager(NTLM) 인증 프로토콜이다.
Schannel.dll: SSL(Secure Sockets Layer)인증 프로토콜이다.
Kerberos.dll: Kerberos v5인증 프로토콜이다.
Lsasrv.dll: LSA 서버 서비스로서 보안 정책을 강화한다.
Samsrv.dll: Security Accounts Manager 로서 이전 버전의 API를 지원하여 각종 policy를 강화하는 기능을 한다.
Ntdsa.dll: Windows 2000의 복제 프로토콜로서 LDAP를 지원하여 데이터의 partition 을 관리하는 Directory Service 모듈이다.
Secur32.dll: 다중 인증 기능을 하며, 각 컴포넌트를 함께 묶는 역할을 한다.


Directory Service모듈


Directory Service는 DSA(Directory Service Agent), Database Layer, ESE(Extensible Storage Engine)의 3 개 층으로 이루어 지며, 이 외에 NT 4.0과 같은 이전 버전의 시스템과 호환을 이룰 수 있도록 하는 인터페이스 에이전트(agent)들로 구성되어 있다. 다음은 이를 구성하는 각 요소들에 대한 설명이다.

Agents

Directory API를 이용해서 Directory Service 모듈에 액세스할 때는 다음 5 개의 인터페이스 에이전트를 거쳐야 한다.

LDAP: Lightweight Directory Access Protocol

REPL: Inter-site and intra-site replication

NSPI: Name Service Provider Interface

SAM: Security Accounts Manager

XDS: Exchange Directory Service

Directory System Agent

DSA는 현재의 이름영역(namespace)으로부터 트리 모양의 계층적 이름영역을 만든다. 이렇게 되어 있기 때문에 이용자는 각 사용자의 이름을 보다 논리적으로 뷰(view)할 수 있는 것이다. 여기에는 Active Directory policy도 포함 되어 있는 데, 바로 데이터의 파티션과 참조에 관한 것이다.

Database Layer

Database Layer 컴포넌트는 내부 함축 층(Internal abstraction layer)으로서 데이터 베이스 저장 장치와 검색 기능을 제공한다. 이는 Active Directory의 database를 뷰(view)할 때 이를 커스터마이징 해서 볼 수 있도록 하는 기능을 제공을 제공한다.

Extensible Storage Engine

ESE(Extensible Storage Engine)은 MS Exchange 4.0과 5.0에 사용되었던 Jet database를 업그레이드 한 것인데, 여기에 모든 Active Directory의 object를 저장하고 있다. 이 ESE는 약 17 terabyte정도 크기의 데이터 베이스와 domain당 약 1,000만개 정도의 object를 저장할 수 있는 구조를 가지고 있다.

Active Directory는 시스템 내부에 이미 설정되어 있는 schema와 함께 제공되는 데, ESE는 사용되는 만큼만 저장 용량을 사용한다. 다시 말하면 사용자 계정 object는 미리 약 50 개의 attribute가 설정되어 있는 데, 관리자가 어떤 사용자 계정을 만들면서 10 개의 attribute만 사용하게 될 경우에는 ESE는 나머지 40개의 attribute를 사용하기 않기 때문에 저장 용량을 필요한 것 만큼만 쓰게 된다. 나중에 이 attribute를 추가하게 되면 저장 용량이 동적으로(dynamically) 추가로 할당된다.

Windows NT File System

Windows NT file System(NTFS)은 여러 가지 특징이 있지만 이 중에 중요한 것은 File system security나, Unicode지원, 파일 복구 지원 기능 들이다. 그리고 FRS(File Replication Service)도 NTFS에서만 가능한 기능이다.

 

 

Active Directory의 내부 논리 구조


rootDSE object는 Directory Service의 DSA속에 있다. 이는 Active Directory의 최상위에 있는 이름영역(namespace)으로서 LDAP search tree의 맨 위에 위치한다.

이 rootDSE object는 Configuration 컨테이너를 포함하고 있는 데, 이 Configuration 컨테이너 안에는 전 네트워크에 대한 메타데이터(metadata)를 가지고 있다. 이 Configuration 컨테이너를 보면 Active Directory의 논리 구조를 알 수 있는 데, 왜냐하면 이 것이 전 네트워크의 스키마(schema)의 이름 명명법과, DNS이름 영역에 대한 전체 네트워크의 상호 관계와, 전 네트워크가 어떻게 파티션 되어 있는 지와, 복제 토폴로지에 관해 규정하고 있기 때문이다.

다음은 Configuration 컨테이너속에 있는 각 기능들을 설명한 것이다.

Schema: Active Directory내의 모든 object의 class와 attribute에 관한 것이다.
Sites: sites에 있는 domain controller와 네트워크 상의 모든 site들 확인하며 복제 토폴로지를 관리한다.
Partitions: 전체 네트워크의 파티션을 규정하는 참조 object를 가지고 있다.
Services: 네트워크 전체의 설정에 관한 정보를 담고 있는 중앙 저장소 역할을 한다.



'IT인생_스크랩 > Windows' 카테고리의 다른 글

Active Directory 의 활용 #1  (0) 2010.06.23
Active Directory 용어집  (0) 2010.06.23
Active Directory 를 위한 정보 수집  (0) 2010.06.23
Active Directory 이름 전략  (0) 2010.06.23
Active Directory의 설치  (0) 2010.06.23