Active Directory (액티브 디렉터리)
1. 개요
Active Directory(AD)는 마이크로소프트(Microsoft)가 개발한 계층적 디렉터리 서비스(Hierarchical Directory Service)로, 윈도우 도메인 네트워크 환경에서 사용자, 컴퓨터, 그룹 및 기타 리소스를 중앙 집중식으로 관리하고 인증 및 권한 부여를 수행하는 데이터베이스 시스템이다.
쉽게 비유하자면, 기업 내의 모든 구성원과 자원 정보가 담긴 '디지털 전화번호부'와 같으며, 여기에 누가 어떤 자원에 접근할 수 있는지를 결정하는 강력한 권한 관리 기능이 결합된 형태라고 할 수 있다.
AD의 핵심 목적은 네트워크 내의 모든 객체를 체계적으로 계층화하여 관리자가 단일 지점에서 보안 정책을 적용하고, 사용자가 네트워크 리소스(파일 서버, 프린터 등)에 쉽게 접근할 수 있도록 하는 '단일 로그인(Single Sign-On, SSO)' 환경을 제공하는 데 있다.
2. 핵심 동작 원리 및 구조
Active Directory는 효율적인 관리를 위해 논리적 구조와 물리적 구조를 분리하여 설계되었다.
2.1 논리적 구조 (Logical Structure)
논리적 구조는 실제 물리적 위치와 상관없이 조직의 행정적 편의에 따라 리소스를 그룹화하는 방식이다.
- 포리스트(Forest): AD의 최상위 컨테이너로, 동일한 스키마(Schema, 객체의 정의 및 속성)와 구성 정보를 공유하는 도메인들의 집합이다.
- 도메인(Domain): 보안 정책과 관리 경계를 공유하는 기본 단위이다.
- 조직 단위(Organizational Unit, OU): 도메인 내에서 사용자나 컴퓨터 객체를 더 세분화하여 관리하기 위한 컨테이너로, 그룹 정책(GPO)을 차등 적용할 때 사용된다.
2.2 물리적 구조 (Physical Structure)
물리적 구조는 데이터의 복제 효율성과 네트워크 트래픽 최적화를 위해 설계되었다.
- 도메인 컨트롤러(Domain Controller, DC): AD 데이터베이스를 저장하고 인증 요청을 처리하는 서버이다.
- 사이트(Site): 물리적으로 떨어진 네트워크 서브넷의 집합으로, DC 간의 복제 트래픽을 최적화하기 위해 정의한다.
- 글로벌 카탈로그(Global Catalog, GC): 포리스트 내의 모든 객체에 대한 부분 복제본을 가지고 있는 특수 DC이다. 이를 통해 사용자는 자신이 속한 도메인이 아니더라도 포리스트 전체에서 객체를 빠르게 검색할 수 있다.
[표] 논리적 구조 vs 물리적 구조 비교
| 구분 |
논리적 구조 (Logical) |
물리적 구조 (Physical) |
| 핵심 단위 |
포리스트 $\rightarrow$ 도메인 $\rightarrow$ OU |
사이트 $\rightarrow$ 도메인 컨트롤러(DC) |
| 주요 목적 |
관리 편의성, 권한 할당, 정책 적용 |
복제 최적화, 네트워크 성능 향상 |
| 특징 |
물리적 위치와 무관하게 구성 가능 |
실제 IP 대역 및 하드웨어 위치 기반 |
3. DNS와의 의존성 및 작동 원리
Active Directory는 [DNS]에 절대적으로 의존한다. DNS 없이는 AD의 서비스 탐색(Service Location)이 불가능하여 클라이언트가 DC를 찾을 수 없다.
- SRV 레코드(Service Record): AD는 DNS의 SRV 레코드를 사용하여 특정 서비스(예: LDAP, Kerberos)를 제공하는 DC의 호스트 이름과 포트 번호를 찾는다.
- 작동 흐름: 클라이언트가 도메인 가입 요청을 보내면 $\rightarrow$ DNS 서버에
_ldap._tcp.dc._msdcs.DomainName과 같은 SRV 레코드를 쿼리하여 $\rightarrow$ 응답받은 DC의 IP 주소로 인증 요청을 전송한다.
4. 주요 구성 요소 및 기능
4.1 객체 관리
- 사용자(User): 네트워크에 접속하는 개별 계정.
- 그룹(Group): 여러 사용자를 묶어 권한을 일괄 부여하기 위한 단위.
- 컴퓨터(Computer): 도메인에 가입되어 관리 대상이 된 워크스테이션 및 서버.
4.2 그룹 정책 (Group Policy Object, GPO)
GPO는 관리자가 도메인 내의 사용자나 컴퓨터에 대해 소프트웨어 설치, 보안 설정, 바탕화면 제한 등의 설정을 일괄적으로 강제하는 메커니즘이다. GPO는 LSDOU 순서로 적용되며, 나중에 적용된 설정이 이전 설정을 덮어쓰는 우선순위를 갖는다.
[GPO 적용 우선순위 흐름도]
로컬(Local) $\rightarrow$ 사이트(Site) $\rightarrow$ 도메인(Domain) $\rightarrow$ 조직 단위(OU) [최종 적용]
5. FSMO (Flexible Single Master Operation) 역할
AD는 기본적으로 모든 DC가 데이터를 복제하는 다중 마스터(Multi-master) 방식이지만, 충돌 방지를 위해 특정 작업은 단 한 대의 DC만 수행하도록 지정하는데, 이를 FSMO 역할이라고 한다.
| 역할 명칭 |
범위 |
설명 |
| 스키마 마스터 (Schema Master) |
포리스트 |
AD 전체의 객체 정의(스키마)를 수정할 수 있는 유일한 서버 |
| 도메인 명명 마스터 (Domain Naming Master) |
포리스트 |
도메인의 추가 및 삭제를 관리하여 이름 충돌을 방지 |
| PDC 에뮬레이터 (PDC Emulator) |
도메인 |
암호 변경의 최종 권위자, 시간 동기화의 기준점 역할 |
| RID 마스터 (RID Master) |
도메인 |
각 객체에 부여되는 고유 ID(SID)의 생성 범위를 할당 |
| 인프라 마스터 (Infrastructure Master) |
도메인 |
도메인 간 객체 참조(Cross-domain reference)를 최신 상태로 유지 |
6. 인증 및 권한 부여 메커니즘
6.1 인증 프로토콜
- [[Kerberos]]: AD의 기본 인증 프로토콜이다. 티켓(Ticket) 기반 시스템으로, 사용자가 한 번 인증받으면 티켓을 통해 여러 서비스에 접근할 수 있어 보안성이 높고 트래픽이 적다.
- 인증 단계:
- AS 요청: 사용자가 ID/PW를 입력하면 인증 서버(AS)에 티켓 부여 요청을 보낸다.
- TGT 발급: AS는 사용자 신원을 확인하고 티켓 부여 티켓(TGT)을 발급한다.
- TGS 요청: 사용자는 TGT를 제시하며 특정 서비스에 접근하기 위한 서비스 티켓(TGS)을 요청한다.
- 서비스 티켓 발급: TGS 서버는 권한을 확인한 후 서비스 티켓을 발급한다.
- 서비스 접근: 사용자가 서비스 티켓을 대상 서버에 제시하여 최종적으로 인증을 완료한다.
- NTLM (NT LAN Manager): 하위 호환성을 위해 사용되는 챌린지-응답(Challenge-Response) 방식의 프로토콜이다. Kerberos보다 보안에 취약하여 최신 환경에서는 사용을 지양하는 것이 권장된다.
6.2 [[LDAP]] (Lightweight Directory Access Protocol)
LDAP은 디렉터리 서비스에 접근하여 정보를 조회, 수정, 추가하기 위한 표준 프로토콜이다. AD는 내부적으로 LDAP을 사용하여 객체 쿼리를 처리한다.
7. AD의 장단점 비교
| 장점 |
단점 |
| 중앙 집중식 관리: 수천 대의 컴퓨터와 사용자를 한 곳에서 제어 가능 |
단일 장애점(SPOF) 위험: DC 장애 시 전체 네트워크 인증 마비 가능성 (이중화 필수) |
| 보안 강화: GPO를 통해 전사적인 보안 정책 강제 적용 가능 |
복잡한 초기 설정: DNS 및 네트워크 인프라에 대한 깊은 이해 필요 |
| 사용자 편의성: SSO를 통해 한 번의 로그인으로 다양한 리소스 접근 |
공격 표면 확대: DC가 탈취될 경우 포리스트 전체 권한이 유출되는 치명적 위험 |
| 효율적 자원 관리: 논리적 구조(OU)를 통한 체계적인 자원 분류 |
유지보수 비용: 지속적인 업데이트 및 복제 상태 모니터링 필요 |
8. 구축 및 운영 시나리오
8.1 구성 전략
- 단일 도메인: 소규모 조직에 적합하며 관리가 단순하다.
- 다중 도메인: 대규모 조직이나 부서별 독립적인 관리 권한이 필요할 때 사용한다. 이때 도메인 간 리소스 공유를 위해 신뢰 관계(Trust Relationship)를 설정한다.
관리자는 GUI(ADUC) 외에도 PowerShell을 통해 효율적으로 객체를 관리할 수 있다.
# 1. 신규 사용자 생성
New-ADUser -Name "홍길동" -SamAccountName "gildong.hong" -UserPrincipalName "gildong.hong@contoso.com" -Path "OU=Sales,DC=contoso,DC=com" -Enabled $true
# 2. 사용자를 특정 그룹에 추가
Add-ADGroupMember -Identity "Sales_Group" -Members "gildong.hong"
# 3. 특정 사용자의 속성 조회
Get-ADUser -Identity "gildong.hong" -Properties *
9. AD 백업 및 복구 전략
AD 데이터베이스(ntds.dit)의 손상은 전체 네트워크 마비를 초래하므로 체계적인 백업 전략이 필수적이다.
- 시스템 상태 백업 (System State Backup): AD 데이터베이스, SYSVOL 폴더, 레지스트리 등을 포함한 전체 시스템 상태를 백업한다.
- 권한 있는 복구 (Authoritative Restore): 특정 DC의 데이터를 정답으로 간주하여 다른 모든 DC로 강제 복제시키는 방식이다.
- 비권한 있는 복구 (Non-authoritative Restore): 백업본으로 복구한 후, 다른 정상적인 DC로부터 최신 데이터를 다시 복제받는 방식이다.
- AD 휴지통 (AD Recycle Bin): 실수로 삭제한 객체를 복제 과정 없이 즉시 복구할 수 있는 기능으로, 최신 버전의 Windows Server에서 권장된다.
10. 보안 고려사항 및 최신 동향
10.1 주요 취약점 및 방어
- Pass-the-Hash (PtH): 사용자의 평문 암호 대신 메모리에 남은 해시값을 탈취하여 인증을 우회하는 공격이다. 이를 방지하기 위해 Privileged Access Workstations (PAW) 도입과 관리자 계정의 분리가 필요하다.
- Golden Ticket: Kerberos의 KRBTGT 계정 키를 탈취하여 무제한 권한의 티켓을 생성하는 공격이다. 주기적인 KRBTGT 암호 변경이 필수적이다.
전통적인 AD와 클라우드 기반의 Entra ID는 근본적인 차이가 있다.
| 구분 |
Active Directory (On-premise) |
Microsoft Entra ID (Cloud) |
| 기반 프로토콜 |
Kerberos, NTLM, LDAP |
[[OAuth 2.0]], [[SAML]], OpenID Connect |
| 관리 단위 |
OU, 도메인, 포리스트 |
테넌트 (Tenant), 사용자/그룹 |
| 장치 관리 |
그룹 정책 (GPO) |
MDM (Intune) |
| 인증 방식 |
DC 기반 로컬 인증 |
HTTP 기반 클라우드 인증 |
최근 기업들은 온프레미스 AD와 Entra ID를 연결하는 하이브리드(Hybrid) 구성을 통해 내부 리소스 관리와 클라우드 서비스(M365 등) 이용의 편의성을 동시에 확보하고 있다.
같이 보기
- [[DNS]]
- [[Kerberos]]
- [[LDAP]]
- [[OAuth 2.0]]
- [[SAML]]
# Active Directory (액티브 디렉터리)
## 1. 개요
**Active Directory(AD)**는 마이크로소프트(Microsoft)가 개발한 **계층적 디렉터리 서비스(Hierarchical Directory Service)**로, 윈도우 도메인 네트워크 환경에서 사용자, 컴퓨터, 그룹 및 기타 리소스를 중앙 집중식으로 관리하고 인증 및 권한 부여를 수행하는 데이터베이스 시스템이다.
쉽게 비유하자면, 기업 내의 모든 구성원과 자원 정보가 담긴 '디지털 전화번호부'와 같으며, 여기에 누가 어떤 자원에 접근할 수 있는지를 결정하는 강력한 권한 관리 기능이 결합된 형태라고 할 수 있다.
AD의 핵심 목적은 네트워크 내의 모든 객체를 체계적으로 계층화하여 관리자가 단일 지점에서 보안 정책을 적용하고, 사용자가 네트워크 리소스(파일 서버, 프린터 등)에 쉽게 접근할 수 있도록 하는 '단일 로그인(Single Sign-On, SSO)' 환경을 제공하는 데 있다.
---
## 2. 핵심 동작 원리 및 구조
Active Directory는 효율적인 관리를 위해 **논리적 구조**와 **물리적 구조**를 분리하여 설계되었다.
### 2.1 논리적 구조 (Logical Structure)
논리적 구조는 실제 물리적 위치와 상관없이 조직의 행정적 편의에 따라 리소스를 그룹화하는 방식이다.
- **포리스트(Forest):** AD의 최상위 컨테이너로, 동일한 스키마(Schema, 객체의 정의 및 속성)와 구성 정보를 공유하는 도메인들의 집합이다.
- **도메인(Domain):** 보안 정책과 관리 경계를 공유하는 기본 단위이다.
- **조직 단위(Organizational Unit, OU):** 도메인 내에서 사용자나 컴퓨터 객체를 더 세분화하여 관리하기 위한 컨테이너로, 그룹 정책(GPO)을 차등 적용할 때 사용된다.
### 2.2 물리적 구조 (Physical Structure)
물리적 구조는 데이터의 복제 효율성과 네트워크 트래픽 최적화를 위해 설계되었다.
- **도메인 컨트롤러(Domain Controller, DC):** AD 데이터베이스를 저장하고 인증 요청을 처리하는 서버이다.
- **사이트(Site):** 물리적으로 떨어진 네트워크 서브넷의 집합으로, DC 간의 복제 트래픽을 최적화하기 위해 정의한다.
- **글로벌 카탈로그(Global Catalog, GC):** 포리스트 내의 모든 객체에 대한 부분 복제본을 가지고 있는 특수 DC이다. 이를 통해 사용자는 자신이 속한 도메인이 아니더라도 포리스트 전체에서 객체를 빠르게 검색할 수 있다.
### [표] 논리적 구조 vs 물리적 구조 비교
| 구분 | 논리적 구조 (Logical) | 물리적 구조 (Physical) |
| :--- | :--- | :--- |
| **핵심 단위** | 포리스트 $\rightarrow$ 도메인 $\rightarrow$ OU | 사이트 $\rightarrow$ 도메인 컨트롤러(DC) |
| **주요 목적** | 관리 편의성, 권한 할당, 정책 적용 | 복제 최적화, 네트워크 성능 향상 |
| **특징** | 물리적 위치와 무관하게 구성 가능 | 실제 IP 대역 및 하드웨어 위치 기반 |
---
## 3. DNS와의 의존성 및 작동 원리
Active Directory는 **[[DNS]](Domain Name System)**에 절대적으로 의존한다. DNS 없이는 AD의 서비스 탐색(Service Location)이 불가능하여 클라이언트가 DC를 찾을 수 없다.
- **SRV 레코드(Service Record):** AD는 DNS의 SRV 레코드를 사용하여 특정 서비스(예: LDAP, Kerberos)를 제공하는 DC의 호스트 이름과 포트 번호를 찾는다.
- **작동 흐름:** 클라이언트가 도메인 가입 요청을 보내면 $\rightarrow$ DNS 서버에 `_ldap._tcp.dc._msdcs.DomainName`과 같은 SRV 레코드를 쿼리하여 $\rightarrow$ 응답받은 DC의 IP 주소로 인증 요청을 전송한다.
---
## 4. 주요 구성 요소 및 기능
### 4.1 객체 관리
- **사용자(User):** 네트워크에 접속하는 개별 계정.
- **그룹(Group):** 여러 사용자를 묶어 권한을 일괄 부여하기 위한 단위.
- **컴퓨터(Computer):** 도메인에 가입되어 관리 대상이 된 워크스테이션 및 서버.
### 4.2 그룹 정책 (Group Policy Object, GPO)
GPO는 관리자가 도메인 내의 사용자나 컴퓨터에 대해 소프트웨어 설치, 보안 설정, 바탕화면 제한 등의 설정을 일괄적으로 강제하는 메커니즘이다. GPO는 **LSDOU** 순서로 적용되며, 나중에 적용된 설정이 이전 설정을 덮어쓰는 우선순위를 갖는다.
**[GPO 적용 우선순위 흐름도]**
`로컬(Local) $\rightarrow$ 사이트(Site) $\rightarrow$ 도메인(Domain) $\rightarrow$ 조직 단위(OU) [최종 적용]`
---
## 5. FSMO (Flexible Single Master Operation) 역할
AD는 기본적으로 모든 DC가 데이터를 복제하는 다중 마스터(Multi-master) 방식이지만, 충돌 방지를 위해 특정 작업은 단 한 대의 DC만 수행하도록 지정하는데, 이를 **FSMO 역할**이라고 한다.
| 역할 명칭 | 범위 | 설명 |
| :--- | :--- | :--- |
| **스키마 마스터 (Schema Master)** | 포리스트 | AD 전체의 객체 정의(스키마)를 수정할 수 있는 유일한 서버 |
| **도메인 명명 마스터 (Domain Naming Master)** | 포리스트 | 도메인의 추가 및 삭제를 관리하여 이름 충돌을 방지 |
| **PDC 에뮬레이터 (PDC Emulator)** | 도메인 | 암호 변경의 최종 권위자, 시간 동기화의 기준점 역할 |
| **RID 마스터 (RID Master)** | 도메인 | 각 객체에 부여되는 고유 ID(SID)의 생성 범위를 할당 |
| **인프라 마스터 (Infrastructure Master)** | 도메인 | 도메인 간 객체 참조(Cross-domain reference)를 최신 상태로 유지 |
---
## 6. 인증 및 권한 부여 메커니즘
### 6.1 인증 프로토콜
- **[[Kerberos]]:** AD의 기본 인증 프로토콜이다. 티켓(Ticket) 기반 시스템으로, 사용자가 한 번 인증받으면 티켓을 통해 여러 서비스에 접근할 수 있어 보안성이 높고 트래픽이 적다.
- **인증 단계:**
1. **AS 요청:** 사용자가 ID/PW를 입력하면 인증 서버(AS)에 티켓 부여 요청을 보낸다.
2. **TGT 발급:** AS는 사용자 신원을 확인하고 티켓 부여 티켓(TGT)을 발급한다.
3. **TGS 요청:** 사용자는 TGT를 제시하며 특정 서비스에 접근하기 위한 서비스 티켓(TGS)을 요청한다.
4. **서비스 티켓 발급:** TGS 서버는 권한을 확인한 후 서비스 티켓을 발급한다.
5. **서비스 접근:** 사용자가 서비스 티켓을 대상 서버에 제시하여 최종적으로 인증을 완료한다.
- **NTLM (NT LAN Manager):** 하위 호환성을 위해 사용되는 챌린지-응답(Challenge-Response) 방식의 프로토콜이다. Kerberos보다 보안에 취약하여 최신 환경에서는 사용을 지양하는 것이 권장된다.
### 6.2 [[LDAP]] (Lightweight Directory Access Protocol)
LDAP은 디렉터리 서비스에 접근하여 정보를 조회, 수정, 추가하기 위한 표준 프로토콜이다. AD는 내부적으로 LDAP을 사용하여 객체 쿼리를 처리한다.
---
## 7. AD의 장단점 비교
| 장점 | 단점 |
| :--- | :--- |
| **중앙 집중식 관리:** 수천 대의 컴퓨터와 사용자를 한 곳에서 제어 가능 | **단일 장애점(SPOF) 위험:** DC 장애 시 전체 네트워크 인증 마비 가능성 (이중화 필수) |
| **보안 강화:** GPO를 통해 전사적인 보안 정책 강제 적용 가능 | **복잡한 초기 설정:** DNS 및 네트워크 인프라에 대한 깊은 이해 필요 |
| **사용자 편의성:** SSO를 통해 한 번의 로그인으로 다양한 리소스 접근 | **공격 표면 확대:** DC가 탈취될 경우 포리스트 전체 권한이 유출되는 치명적 위험 |
| **효율적 자원 관리:** 논리적 구조(OU)를 통한 체계적인 자원 분류 | **유지보수 비용:** 지속적인 업데이트 및 복제 상태 모니터링 필요 |
---
## 8. 구축 및 운영 시나리오
### 8.1 구성 전략
- **단일 도메인:** 소규모 조직에 적합하며 관리가 단순하다.
- **다중 도메인:** 대규모 조직이나 부서별 독립적인 관리 권한이 필요할 때 사용한다. 이때 도메인 간 리소스 공유를 위해 **신뢰 관계(Trust Relationship)**를 설정한다.
### 8.2 PowerShell을 이용한 관리 예시
관리자는 GUI(ADUC) 외에도 PowerShell을 통해 효율적으로 객체를 관리할 수 있다.
```powershell
# 1. 신규 사용자 생성
New-ADUser -Name "홍길동" -SamAccountName "gildong.hong" -UserPrincipalName "gildong.hong@contoso.com" -Path "OU=Sales,DC=contoso,DC=com" -Enabled $true
# 2. 사용자를 특정 그룹에 추가
Add-ADGroupMember -Identity "Sales_Group" -Members "gildong.hong"
# 3. 특정 사용자의 속성 조회
Get-ADUser -Identity "gildong.hong" -Properties *
```
---
## 9. AD 백업 및 복구 전략
AD 데이터베이스(`ntds.dit`)의 손상은 전체 네트워크 마비를 초래하므로 체계적인 백업 전략이 필수적이다.
- **시스템 상태 백업 (System State Backup):** AD 데이터베이스, SYSVOL 폴더, 레지스트리 등을 포함한 전체 시스템 상태를 백업한다.
- **권한 있는 복구 (Authoritative Restore):** 특정 DC의 데이터를 정답으로 간주하여 다른 모든 DC로 강제 복제시키는 방식이다.
- **비권한 있는 복구 (Non-authoritative Restore):** 백업본으로 복구한 후, 다른 정상적인 DC로부터 최신 데이터를 다시 복제받는 방식이다.
- **AD 휴지통 (AD Recycle Bin):** 실수로 삭제한 객체를 복제 과정 없이 즉시 복구할 수 있는 기능으로, 최신 버전의 Windows Server에서 권장된다.
---
## 10. 보안 고려사항 및 최신 동향
### 10.1 주요 취약점 및 방어
- **Pass-the-Hash (PtH):** 사용자의 평문 암호 대신 메모리에 남은 해시값을 탈취하여 인증을 우회하는 공격이다. 이를 방지하기 위해 **Privileged Access Workstations (PAW)** 도입과 관리자 계정의 분리가 필요하다.
- **Golden Ticket:** Kerberos의 KRBTGT 계정 키를 탈취하여 무제한 권한의 티켓을 생성하는 공격이다. 주기적인 KRBTGT 암호 변경이 필수적이다.
### 10.2 클라우드로의 확장: Microsoft Entra ID (구 Azure AD)
전통적인 AD와 클라우드 기반의 Entra ID는 근본적인 차이가 있다.
| 구분 | Active Directory (On-premise) | Microsoft Entra ID (Cloud) |
| :--- | :--- | :--- |
| **기반 프로토콜** | Kerberos, NTLM, LDAP | [[OAuth 2.0]], [[SAML]], OpenID Connect |
| **관리 단위** | OU, 도메인, 포리스트 | 테넌트 (Tenant), 사용자/그룹 |
| **장치 관리** | 그룹 정책 (GPO) | MDM (Intune) |
| **인증 방식** | DC 기반 로컬 인증 | HTTP 기반 클라우드 인증 |
최근 기업들은 온프레미스 AD와 Entra ID를 연결하는 **하이브리드(Hybrid) 구성**을 통해 내부 리소스 관리와 클라우드 서비스(M365 등) 이용의 편의성을 동시에 확보하고 있다.
---
**같이 보기**
- [[DNS]]
- [[Kerberos]]
- [[LDAP]]
- [[OAuth 2.0]]
- [[SAML]]