이 글에서는 Active Directory 도메인에서 관리 권한을 위임하는 방법을 자세히 살펴봅니다. 권한 위임(Delegation)을 활용하면 Domain Admins, Account Operators와 같은 특권 도메인 그룹에 사용자를 추가하지 않고도, 일반 도메인 사용자에게 특정 AD 관리 작업을 수행할 수 있는 권한을 부여할 수 있습니다. 예를 들어, 헬프데스크(Helpdesk) 같은 특정 AD 보안 그룹에 '그룹에 사용자 추가', 'AD에서 새 사용자 생성', '계정 암호 재설정' 등의 권한을 위임할 수 있습니다.
Active Directory 위임 권한의 이해
AD에서 권한을 위임하려면 Active Directory 사용자 및 컴퓨터(DSA.msc)의 제어 위임 마법사(Delegation of Control Wizard)를 사용합니다.
AD에서는 매우 세분화된 수준까지 관리 권한을 위임할 수 있습니다. 한 그룹에는 OU에서 암호를 재설정할 수 있는 권한을, 다른 그룹에는 사용자 계정 생성·삭제 권한을, 또 다른 그룹에는 그룹 멤버십 생성·변경 권한을 각각 부여할 수 있습니다. 중첩된 OU에 대한 권한 상속 설정도 가능합니다. Active Directory에서 권한은 다음 수준에서 위임할 수 있습니다:
- AD 사이트
- 전체 도메인
- Active Directory의 특정 OU(조직 구성 단위)
- 특정 AD 개체
Active Directory 제어 위임 시 권장되는 모범 사례는 다음과 같습니다:
- 특정 사용자 계정에 직접 권한을 위임하지 않는 것이 좋습니다. 대신 새 보안 그룹을 만들고 사용자를 해당 그룹에 추가한 후, 그룹 단위로 OU 권한을 위임하세요. 이후 동일한 권한을 다른 사용자에게 부여할 때는 그룹에 추가하기만 하면 됩니다.
- 거부(Deny) 권한은 허용 권한보다 우선 적용되므로 사용을 피하는 것이 좋습니다.
- 도메인 내 위임된 권한을 주기적으로 감사하세요(PowerShell을 사용하면 OU별 현재 권한 목록 보고서를 생성할 수 있습니다).
- 관리자 계정이 위치한 OU를 관리할 권한은 누구에게도 부여하지 마세요. 그렇지 않으면 지원 담당자가 도메인 관리자 암호를 재설정할 수 있습니다. 모든 특권 사용자와 그룹은 위임 규칙이 적용되지 않는 별도의 OU에 배치해야 합니다.
AD에서 암호 재설정 및 계정 잠금 해제 권한 위임하기
HelpDesk 그룹에 도메인 내 사용자 암호 재설정 및 계정 잠금 해제 권한을 부여해야 하는 상황을 가정해 보겠습니다. 먼저 PowerShell로 AD에 새 보안 그룹을 생성합니다:
New-ADGroup "HelpDesk" -path 'OU=Groups,OU=Paris,OU=Fr,dc=woshub,DC=com' -GroupScope Global
필요한 사용자를 이 그룹에 추가합니다:
Add-AdGroupMember -Identity HelpDesk -Members rdroz, jdupont
Active Directory 사용자 및 컴퓨터 MMC 스냅인(dsa.msc)을 실행하고, 사용자가 있는 OU(본 예시에서는 'OU=Users,OU=Paris,OU=Fr,dc=woshub,DC=com')를 마우스 오른쪽 버튼으로 클릭한 뒤 제어 위임(Delegate Control) 메뉴를 선택합니다.

관리 권한을 부여할 그룹을 선택합니다.

미리 구성된 권한 세트 중 하나를 선택하거나(다음 일반 작업 위임):
- 사용자 계정 생성, 삭제 및 관리
- 사용자 암호 재설정 및 다음 로그온 시 암호 변경 강제
- 모든 사용자 정보 읽기
- 그룹 생성, 삭제 및 관리
- 그룹 멤버십 수정
- 그룹 정책 링크 관리
- RSoP(정책 결과 집합) 생성(계획)
- RSoP 생성(로깅)
- inetOrgPerson 계정 생성, 삭제 및 관리
- inetOrgPerson 암호 재설정 및 다음 로그온 시 암호 변경 강제
- 모든 inetOrgPerson 정보 읽기
위임할 사용자 지정 작업 만들기를 선택할 수도 있습니다. 여기서는 두 번째 옵션을 선택합니다.

관리 권한을 부여할 AD 개체 유형을 선택합니다. 사용자 계정에 대한 제어 권한을 부여하려는 것이므로 사용자 개체(User Object) 항목을 선택합니다. 참고로 OU에서 사용자를 생성·삭제할 수 있는 권한까지 부여하려면 이 폴더에서 선택한 개체 만들기/삭제 옵션을 함께 선택해야 합니다. 본 예시에서는 해당 권한을 부여하지 않습니다.

권한 목록에서 위임할 권한을 선택합니다. 본 예시에서는 계정 잠금 해제 권한(Read lockoutTime, Write lockoutTime)과 암호 재설정 권한(Reset password)을 선택합니다.
HelpDesk 팀이 도메인 내 계정 잠금의 원인을 파악할 수 있도록 하려면, 도메인 컨트롤러의 보안 로그를 검색할 수 있는 권한도 함께 부여해야 합니다.

다음을 클릭하고, 마지막 화면에서 선택한 권한의 위임을 확인합니다.

이제 HelpDesk 그룹 소속 사용자 계정으로 PowerShell을 통해 대상 OU의 사용자 암호를 재설정해 봅니다:
Set-ADAccountPassword gchaufourier -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "P@ssdr0w1" -Force -Verbose) –PassThru
도메인 암호 정책에 부합한다면 암호가 정상적으로 재설정됩니다.
다음으로 New-ADUser cmdlet을 사용해 해당 OU에서 사용자를 생성해 봅니다:
New-ADUser -Name gmicheaux -Path 'OU=Users,OU=Paris,OU=FR,DC=woshub,DC=com' -Enabled $true
새 AD 계정을 생성할 권한을 위임하지 않았으므로 액세스 거부(Access Denied) 오류가 발생합니다.
도메인 컨트롤러 보안 로그를 활용하면 관리 권한을 위임받은 사용자의 작업을 감사할 수 있습니다. 예를 들어, 도메인에서 누가 사용자 암호를 재설정했는지, 누가 AD에 사용자 계정을 생성했는지 추적하거나, 중요 AD 그룹의 변경 이력을 모니터링할 수 있습니다.
컴퓨터를 AD 도메인에 가입시키는 권한 위임
기본적으로 모든 도메인 사용자는 최대 10대의 컴퓨터를 도메인에 가입시킬 수 있습니다. 11번째 컴퓨터를 추가하려고 하면 다음과 같은 오류가 발생합니다:
Your computer could not be joined to the domain. You have exceeded the maximum number of computer accounts you are allowed to create in this domain. Contact your system administrator to have this limit reset or increased.

이 제한은 도메인 전체 수준에서 ms-DS-MachineAccountQuota 특성 값을 늘려 변경할 수 있습니다. 다만 더 올바르고 안전한 방법은, 특정 사용자 그룹(헬프데스크)에 특정 OU에 컴퓨터를 가입시킬 수 있는 권한을 위임하는 것입니다. 이를 위해서는 Computer objects 유형의 개체를 생성할 수 있는 권한을 위임하고, 제어 위임 마법사에서 이 폴더에서 선택한 개체 만들기를 선택합니다.

권한 섹션에서 모든 자식 개체 만들기(Create All Child Objects)를 선택합니다.

참고로 AD에서 OU 간에 개체를 이동할 수 있는 권한을 위임하려면 다음 권한들을 부여해야 합니다: Delete User objects, Write Distinguished Name, Write name(**), Create User(또는 Computer) objects.
Active Directory에서 위임된 권한 조회 및 제거 방법
AD의 하나의 OU에는 원하는 만큼 많은 위임 규칙을 할당할 수 있습니다. ADUC 콘솔에서 OU 속성의 보안(Security) 탭으로 이동하면 위임된 그룹과 권한 목록을 확인할 수 있습니다.
이 탭에는 해당 컨테이너에 대한 권한이 부여된 AD 주체 목록이 표시됩니다. 고급(Advanced) 탭에서 부여된 권한의 상세 목록을 볼 수 있습니다. 아래 그림처럼 HelpDesk 그룹에 암호 재설정 권한이 허용되어 있는 것을 확인할 수 있습니다.

이전에 위임을 통해 할당한 특정 관리 권한은 언제든 취소할 수 있습니다. 권한을 위임한 그룹 이름을 찾아 제거(Remove)를 클릭하면 됩니다.
또한 보안 → 고급 탭에서는 다양한 보안 그룹에 위임 권한을 수동으로 직접 할당할 수도 있습니다.
PowerShell로 Active Directory 권한 위임하기
PowerShell을 사용하면 OU에 위임된 권한 목록을 조회하거나 현재 권한을 변경할 수 있습니다. Get-ACL과 Set-ACL cmdlet은 Active Directory의 권한을 확인하고 변경하는 데 사용되며(파일·폴더의 NTFS 권한 관리에도 동일한 cmdlet이 사용됩니다).
다음 간단한 스크립트는 AD의 특정 조직 구성 단위에 위임된 모든 비표준 권한을 나열합니다:
# get the OU
$OUs = Get-ADOrganizationalUnit -Filter 'DistinguishedName -eq "OU=Users,OU=Paris,DC=woshub,DC=com"'| Select-Object -ExpandProperty DistinguishedName
$schemaIDGUID = @{}
$ErrorActionPreference = 'SilentlyContinue'
Get-ADObject -SearchBase (Get-ADRootDSE).schemaNamingContext -LDAPFilter '(schemaIDGUID=*)' -Properties name, schemaIDGUID |
ForEach-Object {$schemaIDGUID.add([System.GUID]$_.schemaIDGUID,$_.name)}
Get-ADObject -SearchBase "CN=Extended-Rights,$((Get-ADRootDSE).configurationNamingContext)" -LDAPFilter '(objectClass=controlAccessRight)' -Properties name, rightsGUID |
ForEach-Object {$schemaIDGUID.add([System.GUID]$_.rightsGUID,$_.name)}
$ErrorActionPreference = 'Continue'
ForEach ($OU in $OUs) {
$report += Get-Acl -Path "AD:\$OU" |
Select-Object -ExpandProperty Access |
Select-Object @{name='organizationalUnit';expression={$OU}}, `
@{name='objectTypeName';expression={if ($_.objectType.ToString() -eq '00000000-0000-0000-0000-000000000000') {'All'} Else {$schemaIDGUID.Item($_.objectType)}}}, `
@{name='inheritedObjectTypeName';expression={$schemaIDGUID.Item($_.inheritedObjectType)}}, `
*
}
# report with assigned OU permissions
Out-GridView cmdlet을 사용하면 그래픽 인터페이스로 위임 권한 보고서를 확인할 수 있습니다:
$report| where {($_.IdentityReference -notlike "*BUILTIN*") -and ($_.IdentityReference -notlike "*NT AUTHORITY*") }| Out-GridView
또는 Excel에서 추가 분석을 진행할 수 있도록 권한 목록을 CSV 파일로 내보낼 수도 있습니다(PowerShell 스크립트에서 Excel 파일에 직접 데이터를 기록하는 것도 가능합니다):
$report | Export-Csv -Path "C:\reports\AD_OU_Permissions.csv" –NoTypeInformation
생성된 보고서를 보면 HelpDesk 그룹에 해당 OU에서 사용자 암호를 재설정할 수 있는 권한(ObjectTypeName=User-Force-Change-Password)이 위임되었음을 확인할 수 있습니다.

dsacls 도구를 사용하여 OU에 권한을 위임할 수도 있습니다. 예시는 다음과 같습니다:
dsacls "ou=users,ou=paris,dc=woshub,dc=com" /I:S /G "WOSHUB\HELPDESK:CA;Reset Password;user" "WOSHUB\HELPDESK:WP;pwdLastSet;user" "WOSHUB\HELPDESK:WP;lockoutTime;user
PowerShell로 조직 구성 단위 컨테이너에 권한을 할당하는 것도 가능합니다(아래 예시는 암호 재설정 권한을 위임하는 코드입니다):
$ou = "AD:\OU=users,OU=Paris,DC=woshub,DC=com"
$group = Get-ADGroup helpdesk
$sid = new-object System.Security.Principal.SecurityIdentifier $group.SID
$ResetPassword = [GUID]"00299570-246d-11d0-a768-00aa006e0529"
$UserObjectType = "bf967aba-0de6-11d0-a285-00aa003049e2"
$ACL = get-acl $OU
$RuleResetPassword = New-Object System.DirectoryServices.ActiveDirectoryAccessRule ($sid, "ExtendedRight", "Allow", $ResetPassword, "Descendents", $UserObjectType)
$ACL.AddAccessRule($RuleResetPassword)
Set-Acl -Path $OU -AclObject $ACL
같은 방식으로 PowerShell을 활용해 다른 권한들도 AD 조직 컨테이너에 위임할 수 있습니다.