전역 카탈로그는 Active Directory (AD)의 기능으로, 도메인 컨트롤러(DC)가 해당 개체가 자신의 도메인에 속하는지 여부와 관계없이 포리스트의 어떤 개체에 대해서도 정보를 제공할 수 있게 합니다. 전역 카탈로그 기능이 활성화된 도메인 컨트롤러를 global catalog servers 라고 합니다.
핵심 기능
글로벌 카탈로그 서버는 여러 기능을 수행하며, 특히 다중 도메인 포리스트 환경에서 이는 매우 중요합니다:
- 인증. 대화형 도메인 로그온 중에 DC는 인증 요청을 처리하고, 사용자 계정이 속한 모든 그룹에 대한 권한 부여 정보를 제공하며, 이 정보는 생성되는 사용자 액세스 토큰에 포함됩니다. DC는 아래 정보를 얻기 위해 글로벌 카탈로그 서버에 액세스해야 합니다:
- 사용자 주체 이름 확인. 사용자 주체 이름(예: “username@domain.com”)을 사용하여 수행하는 로그온 요청에는 연결된 사용자 개체의 고유 이름( distinguished name )을 식별하기 위해 글로벌 카탈로그를 검색해야 합니다.
- 유니버설 그룹 멤버십. 다중 도메인 환경에서 수행되는 로그온 요청에는, 어떤 유니버설 그룹이 존재하는지 확인하고, 로그온하는 사용자가 그 그룹 중 하나에 속하는지 여부를 판단할 수 있는 글로벌 카탈로그의 사용이 필요합니다. 글로벌 카탈로그는 유니버설 그룹 멤버십 정보의 유일한 소스이므로, 다중 도메인 포리스트에서 인증을 수행하려면 글로벌 카탈로그 서버에 대한 액세스가 필수입니다.
- 개체 검색. 글로벌 카탈로그는 검색을 수행하는 사용자에게 포리스트 내 디렉터리 구조를 투명하게 보여줍니다. 예를 들어, 포리스트의 어떤 글로벌 카탈로그 서버든 개체의 samAccountName만으로도 사용자 개체를 식별할 수 있습니다. 글로벌 카탈로그 서버가 없으면, 개체의 samAccountName만으로 사용자 개체를 식별하려면 포리스트의 모든 도메인에 대해 별도의 검색이 필요할 수 있습니다.
글로벌 카탈로그가 작동하는 방식
Active Directory 파티션
글로벌 카탈로그가 어떻게 작동하는지 이해하려면, 먼저 Active Directory 데이터베이스가 어떤 구조로 되어 있는지 조금 이해하는 것이 중요합니다. 도메인 컨트롤러는 Active Directory 데이터베이스를 단일 파일 NTDS.dit에 저장합니다. 관리가 더 쉬워지고 효율적인 복제가 가능하도록, 데이터베이스는 논리적으로 여러 파티션으로 분리됩니다.
모든 도메인 컨트롤러는 최소 3개의 파티션을 유지합니다:
- 해당 도메인 파티션 에는 도메인의 개체와 해당 특성에 대한 정보가 포함됩니다. 모든 DC에는 로컬 도메인 파티션의 완전한 쓰기 가능 복제본이 들어 있습니다.
- 해당 구성 파티션 에는 도메인 컨트롤러와 사이트 링크를 포함하여 포리스트의 토폴로지에 대한 정보가 포함됩니다. 포리스트의 모든 DC는 구성 파티션의 완전한 쓰기 가능 복제본을 유지합니다.
- 해당 스키마 파티션 은 구성 파티션의 논리적 확장입니다. 포리스트의 모든 개체 클래스에 대한 정의와, 이러한 개체의 생성 및 조작을 제어하는 규칙이 포함되어 있습니다. 포리스트의 모든 DC는 스키마 파티션의 완전한 복제본을 유지합니다. 스키마 파티션은 포리스트에 대한 Schema Master 작업 역할을 소유하는 DC를 제외한 모든 DC에서는 읽기 전용입니다.
도메인 컨트롤러는 또한 애플리케이션 파티션을 유지할 수 있습니다. 이러한 파티션에는 AD와 통합된 애플리케이션과 관련된 정보가 포함되며, 보안 주체를 제외한 어떤 유형의 개체도 포함할 수 있습니다. 애플리케이션 파티션에는 특정 복제 요구 사항이 없습니다. 다른 도메인 컨트롤러로 복제할 필요는 없지만, 포리스트의 어떤 DC로든 복제하도록 구성할 수 있습니다.
다음 PowerShell cmdlet을 사용하면 DC에 존재하는 파티션을 확인할 수 있습니다:
Get-ADDomainController -Server <SERVER> | Select-Object -ExpandProperty Partitions
글로벌 카탈로그 파티션
아래 그림과 같이, 각각 하나의 글로벌 카탈로그 서버를 갖는 세 개의 도메인으로 구성된 포리스트를 가정해 보겠습니다:
앞서 설명했듯이 모든 DC는 로컬 도메인 파티션, 구성 파티션 및 스키마 파티션의 복제본을 유지합니다. 이와 같은 다중 도메인 포리스트에서는 글로벌 카탈로그 서버가 추가로 읽기 전용 파티션 세트를 호스팅하기도 하며, 각 파티션에는 포리스트 내 다른 도메인 중 하나의 도메인 파티션에 대한 부분적 읽기 전용 복제본이 포함됩니다. 글로벌 카탈로그 서버가 다중 도메인 포리스트에서 인증 및 포리스트 전체 검색 요청을 처리할 수 있게 해주는 것은 바로 이러한 부분적 읽기 전용 파티션에 들어 있는 정보입니다.
글로벌 카탈로그 서버로 복제되는 개체 특성의 하위 집합을 Partial Attribute Set (PAS)라고 합니다. 도메인에서 Partial Attribute Set에 포함된 구성원은 다음 PowerShell cmdlet을 사용해 나열할 수 있습니다:
Get-ADObject -SearchBase (Get-ADRootDSE).SchemaNamingContext -LDAPFilter "(isMemberOfPartialAttributeSet=TRUE)" -Properties lDAPDisplayName | Select lDAPDisplayName
단일 도메인 포리스트에서는 모든 DC가 포리스트의 유일한 도메인 파티션을 호스팅하므로, 각 DC는 포리스트에 있는 모든 개체에 대한 기록을 포함하며 인증 및 도메인 서비스 요청을 처리할 수 있습니다.
Active Directory는 단일 도메인 포리스트의 모든 도메인 컨트롤러가 가상 전역 카탈로그 서버처럼 동작할 수 있도록 함으로써 이를 활용합니다. 해당 서버가 전역 카탈로그 서버로 구성되어 있는지 여부와 관계없이 사용할 수 있습니다. 유일한 제한은 전역 카탈로그 서버로 구성된 DC만 전역 카탈로그로 특별히 지시된 쿼리에 응답할 수 있다는 점입니다.
전역 카탈로그 서버 배포
새 도메인이 생성되면 첫 번째 DC가 전역 카탈로그 서버가 됩니다. 추가 DC를 전역 카탈로그 서버로 구성하려면 Active Directory Sites and Services 관리 콘솔에서 서버의 NTDS Settings 속성에서 Global Catalog 확인란을 사용하도록 설정하거나, 다음 PowerShell cmdlet을 사용합니다:
Set-ADObject -Identity (Get-ADDomainController -Server <SERVER>).NTDSSettingsObjectDN -Replace @{options='1'}
포리스트의 각 사이트에는 전역 카탈로그 정보를 검색하기 위해 인증 DC가 네트워크 전체를 통해 통신할 필요가 없도록, 최소한 하나 이상의 전역 카탈로그 서버가 포함되어야 합니다. 사이트에 전역 카탈로그 서버를 배포하기 어려운 경우(예: 소규모 원격 지사)에는 Universal Group Membership Caching을 사용하면 인증과 관련된 네트워크 트래픽을 줄이고, 캐시된 universal group membership 정보를 활용해 원격 사이트의 DC가 로컬 사이트 로그인 요청을 처리할 수 있습니다. 이 기능을 사용하려면 원격 DC가 초기 로그온을 처리하고 검색 요청을 수행하기 위해 전역 카탈로그 서버와 통신해야 합니다.
특별한 이유로 이를 피해야 하는 경우가 아니라면, 모든 DC를 글로벌 카탈로그 서버로 구성하는 것이 좋습니다.
Netwrix Auditor for Active Directory
공유하기
더 알아보기
저자 소개
Kevin Joyce
제품 관리 책임자
Netwrix의 제품 관리( Product Management ) 책임자입니다. Kevin은 사이버 보안에 대한 열정이 있으며, 특히 공격자들이 조직 환경을 악용하기 위해 사용하는 전술과 기술을 이해하는 데 집중합니다. Active Directory 및 Windows 보안에 초점을 맞춰 제품 관리 분야에서 8년의 경험을 쌓아, 조직이 Identity, 인프라 및 데이터를 보호할 수 있도록 솔루션을 구축하는 데 그 열정을 더했습니다.