읽기 전용 도메인 컨트롤러(RODC, Read-Only Domain Controller) 기능은 Windows Server 2008에서 처음 도입되었습니다. RODC의 주요 목적은 물리적 보안 확보가 어려운 원격 지사나 지점 사무실에 도메인 컨트롤러를 안전하게 배포하는 것입니다. RODC는 Active Directory 데이터베이스의 읽기 전용 복제본을 유지하므로, 도메인 컨트롤러 호스트에 대한 물리적 접근 권한을 가진 사람이라도 AD 데이터를 변경하거나(도메인 관리자 암호 재설정 포함)할 수 없습니다.
이 글에서는 Windows Server 2022/2019 기반으로 새로운 읽기 전용 도메인 컨트롤러를 설치하고 관리하는 방법을 살펴보겠습니다.
Active Directory에서 RODC란 무엇인가?
RODC와 일반적인 읽기-쓰기 가능 도메인 컨트롤러(RWDC)의 주요 차이점은 다음과 같습니다.
- RODC는 AD 데이터베이스의 읽기 전용 복사본을 유지합니다. 따라서 해당 도메인 컨트롤러의 클라이언트는 데이터를 변경할 수 없습니다.
- RODC는 다른 도메인 컨트롤러(RWDC)로 AD 데이터나 SYSVOL 폴더를 복제하지 않으며, 단방향 복제 방식을 사용합니다.
- RODC는 AD 개체의 암호 해시 및 민감한 정보를 담고 있는 일부 속성을 제외한 AD 데이터베이스의 전체 복사본을 유지합니다. 이 속성 집합을 필터링된 특성 집합(FAS, Filtered Attribute Set)이라고 합니다. 여기에는 ms-PKI-AccountCredentials, ms-FVE-RecoveryPassword, ms-PKI-DPAPIMasterKeys 등이 포함됩니다. 필요에 따라 LAPS 사용 시 일반 텍스트로 저장되는 컴퓨터 암호(ms-MCS-AdmPwd 속성) 같은 다른 속성도 이 집합에 추가할 수 있습니다.
- RODC가 사용자로부터 인증 요청을 받으면 해당 요청을 RWDC로 전달합니다.
- RODC는 일부 사용자의 자격 증명을 캐시할 수 있습니다(인증 속도가 빨라지며, RWDC와의 연결이 없어도 사용자가 해당 도메인 컨트롤러에서 인증할 수 있습니다).
- 관리자가 아닌 사용자에게도 RODC에 대한 관리 권한과 RDP 접근 권한을 부여할 수 있습니다(예: 지사 시스템 운영자).
- RODC의 DNS 서비스는 읽기 전용 모드로 동작합니다.
RODC 배포를 위한 요구 사항
- 서버에 고정 IP가 할당되어 있어야 합니다.
- Windows 방화벽을 비활성화하거나 DC 간 및 클라이언트와의 트래픽이 통과하도록 올바르게 구성해야 합니다.
- 가장 가까운 RWDC를 DNS 서버로 지정해야 합니다.
- RODC는 Windows Server Full GUI 버전과 Windows Server Core 버전 모두에 설치할 수 있습니다.
- RODC를 RWDC와 동일한 AD 사이트에 배치해서는 안 됩니다.
서버 관리자 GUI를 통한 RODC 설치
서버 관리자 콘솔을 열고 Active Directory 도메인 서비스(AD DS) 역할을 추가합니다(추가 구성 요소 및 관리 도구 설치에 동의).

새 DC 설정을 지정할 때 기존 도메인에 도메인 컨트롤러 추가(Add a domain controller to an existing domain) 옵션을 선택하고, 도메인 이름과 필요한 경우 도메인 관리자 권한이 있는 사용자 계정 자격 증명을 입력합니다.

DNS 서버, 글로벌 카탈로그(GC), RODC 기능을 설치하도록 지정합니다. 그런 다음 새 컨트롤러가 위치할 사이트를 선택하고 DSRM 모드 접근용 암호를 설정합니다.

다음으로, 도메인 컨트롤러에 대한 관리 권한을 위임할 사용자를 지정하고, RODC로 암호 복제를 허용 또는 거부할 계정/그룹 목록을 설정합니다(이 작업은 나중에 수행해도 됩니다).

AD 데이터베이스 데이터를 임의의 DC에서 복제할 수 있도록 지정합니다.
Replicate from → Any domain controller

그런 다음 NTDS 데이터베이스, 로그, SYSVOL 폴더의 경로를 지정합니다(필요에 따라 나중에 다른 드라이브로 이동할 수 있습니다).

모든 옵션을 확인한 후 ADDS 역할을 설치합니다.

준비된(Staged) RODC 계정을 활용한 배포
또는 Staged 기능을 사용하여 RODC를 배포할 수 있습니다. 이 방식은 ADUC 콘솔에서 RODC 컴퓨터 계정을 미리 생성하고 기본 설정을 구성하는 것입니다. 이렇게 하려면 Domain Controllers 컨테이너를 마우스 오른쪽 버튼으로 클릭하고 Pre-create a read-only domain controller account(읽기 전용 도메인 컨트롤러 계정 미리 만들기)을 선택합니다.

동일한 이름의 서버에 ADDS 역할을 설치하면 다음 메시지가 표시됩니다.
A Pre-created RODC account that matches the name of the target server exists in the directory. Choose whether to use this existing RODC account or reinstall this domain controller.
미리 생성된 RODC 개체를 사용하려면 Use existing RODC account 옵션을 선택합니다.

역할 설치를 완료하고 서버를 재시작하면 RODC가 준비됩니다. 이후 도메인 컨트롤러의 상태를 점검할 수 있습니다.
ADUC 스냅인(dsa.msc)이 RODC에 연결하면 새 AD 개체 생성 버튼이 모두 회색으로 비활성화됩니다. 또한 읽기 전용 도메인 컨트롤러에서는 AD 개체의 속성을 변경할 수 없습니다. 검색을 포함한 Active Directory 콘솔의 다른 모든 작업은 평소와 같이 정상적으로 동작합니다.

PowerShell로 Windows Server 읽기 전용 DC 배포하기
PowerShell을 사용하여 새 RODC를 배포하려면 먼저 ADDS 역할과 PowerShell ADDS 모듈을 설치해야 합니다:
Add-WindowsFeature AD-Domain-Services,RSAT-AD-AdminCenter,RSAT-ADDS-Tools
이제 RODC를 설치할 수 있습니다:
Install-ADDSDomainController -ReadOnlyReplica -DomainName woshub.com -SiteName MUN_Branch1_RO_Site -InstallDns:$true -NoGlobalCatalog:$false
Windows Server Core에서도 PowerShell을 사용하여 읽기 전용 도메인 컨트롤러를 설치할 수 있습니다.
설치가 완료되면 cmdlet이 서버 재시작을 요청합니다.
Active Directory PowerShell 모듈의 Get-ADDomainController cmdlet을 사용하여 도메인 내 DC 목록을 조회합니다:
Get-ADDomainController -Filter * | Select-Object Name,IsReadOnly
읽기 전용 도메인 컨트롤러의 IsReadOnly 속성 값은 True여야 합니다.
도메인 내 모든 RODC 목록을 조회하려면 다음 명령을 실행합니다:
Get-ADDomainController –filter {IsReadOnly –eq $true}
도메인 RODC 계정을 먼저 미리 생성하려면(준비된 배포), 다음 명령을 사용합니다:
Add-ADDSReadOnlyDomainControllerAccount -DomainControllerAccountName MUN-RODC01 -DomainName woshub.com -DelegatedAdministratorAccountName "woshub\mbak" -SiteName MUN_Branch1_RO_Site
Windows Server 호스트를 DC로 승격할 때는 다음 명령을 사용합니다:
Install-ADDSDomainController -DomainName woshub.com -Credential (Get-Credential) -LogPath "C:\Windows\NTDS" -SYSVOLPath "C:\Windows\SYSVOL" -ReplicationSourceDC "MUN-DC01.woshub.com" -UseExistingAccount
PowerShell로 RODC에 연결한 상태에서는 AD 개체의 속성을 변경할 수 없습니다. RODC가 있는 사이트에서 개체 속성을 변경하려면 Set-ADUser, Set-ADComputer, New-ADUser 등의 PowerShell cmdlet에서 사용 가능한 -Server 매개변수로 가장 가까운 RWDC의 주소를 지정해야 합니다.
RODC 암호 복제 정책 및 자격 증명 캐싱
각 RODC에서는 암호 해시를 이 도메인 컨트롤러로 복제할 수 있는(또는 복제가 거부되는) 사용자, 컴퓨터, 서버 목록을 지정할 수 있습니다.
암호가 RODC 캐시에 저장된 모든 컴퓨터, 사용자, 서버는 RWDC와의 연결이 없더라도 이 도메인 컨트롤러에서 인증할 수 있습니다.
기본적으로 도메인에 두 개의 새 글로벌 그룹이 생성됩니다:
- Allowed RODC Password Replication Group(RODC 암호 복제 허용 그룹)
- Denied RODC Password Replication Group(RODC 암호 복제 거부 그룹)
기본적으로 첫 번째 그룹은 비어 있고, 두 번째 그룹에는 침해 시 심각한 피해를 막기 위해 암호가 RODC에 복제되거나 캐시되지 않아야 하는 권한 있는 보안 그룹이 포함되어 있습니다. 기본적으로 포함되는 그룹은 다음과 같습니다:
- Group Policy Creator Owners
- Domain Admins
- Cert Publishers
- Enterprise Admins
- Schema Admins
- 계정 krbtgt
- Account Operators
- Server Operators
- Backup Operators

RODC Password Replication Allowed 그룹에는 일반적으로 RODC가 위치한 지사의 사용자들이 포함됩니다.
도메인에 여러 대의 RODC를 배포하는 경우, RODC별로 이러한 그룹을 만드는 것이 좋습니다. ADUC 콘솔의 서버 속성 섹션에 있는 Password Replication Policy 탭에서 그룹을 RODC에 바인딩할 수 있습니다.

Advanced Password Replication Policy for RODC_name 화면에서 다음 항목들을 확인할 수 있습니다:
- Accounts whose passwords are stored on this Read-Only Domain Controller — 이 RODC에 암호가 캐시된 사용자 및 컴퓨터 목록
- Accounts that have been authenticated to this Read-Only DC — 현재 이 읽기 전용 도메인 컨트롤러로 인증 중인 사용자 및 컴퓨터 목록

Resultant Policy 탭에서는 사용자 계정을 선택하여 해당 암호가 RODC에 캐시될지 여부를 확인할 수 있습니다.
PowerShell로 RODC 그룹을 관리할 수 있습니다. AD 그룹의 사용자 목록 조회:
Get-ADGroupMember -Identity "Denied RODC Password Replication Group" | ft Name, ObjectClass
특정 Active Directory OU(조직 구성 단위)의 활성화된 모든 사용자를 RODC 그룹에 추가:
Get-ADUser -SearchBase 'OU=MUN_Branch1,DC=woshub,DC=com' -Filter {Enabled -eq "True"} | ForEach-Object {Add-ADGroupMember -Identity 'Allowed RODC Password Replication Group' -Members $_ -Confirm:$false }
OU의 사용자 암호 캐시를 RODC에 미리 채우려면 다음 PowerShell 스크립트를 사용합니다:
$usrs = Get-ADUser -SearchBase 'OU= MUN_Branch1,DC=woshub,DC=com' -Filter {Enabled -eq "True"}
foreach ($usr in $usrs) {
Get-ADObject -identity $usr | Sync-ADObject -Source MUN-DC01 ‑Destination MUN-RODC1 -PasswordOnly
}
암호가 RODC 캐시에 있는 사용자 및 컴퓨터 목록을 조회할 수 있습니다:
Get-ADDomainControllerPasswordReplicationPolicyUsage -Identity MUN-RODC1 ‑RevealedAccounts
특정 사용자의 암호를 RODC 캐시에서 직접 제거할 수는 없습니다. 하지만 ADUC 스냅인 또는 Set-ADAccountPassword PowerShell cmdlet을 통해 사용자 암호를 재설정하면 해당 캐시를 무효화할 수 있습니다.