Active Directory 조직 단위(OU)에 부여된 권한을 보고하려면 OU의 액세스 제어 목록이 필요합니다. 이는 AD가 어떤 계정이 어떤 권한을 가지고 있는지 기록한 것입니다. 아래에서는 해당 액세스 제어 목록이 어떻게 구성되어 있는지, 무료로 가져오는 PowerShell 스크립트, 반환된 내용을 읽는 방법, 그리고 스크립트 없이 Netwrix Auditor를 사용하여 동일한 보고서를 생성하는 방법을 설명합니다.
Netwrix Auditor로 누가 언제 무엇에 접근하는지 확인하세요.
Active Directory에서 OU 권한은 어떻게 작동합니까?
Active Directory의 모든 객체는 각 OU를 포함하여 액세스 제어 목록(ACL)을 가지고 있습니다. 이는 해당 객체에 대해 어떤 계정이나 그룹이 무엇을 할 수 있는지를 명시하는 액세스 제어 항목(ACE) 집합입니다. OU에 대한 권한은 세 가지 출처에서 옵니다:
- 명시적, OU 자체에 직접 부여됨.
- 그룹 구성원을 통해, 계정이 액세스 권한이 부여된 그룹에 속해 있기 때문에 권한을 얻는 경우.
- Inherited는 상위 컨테이너에서 내려오며, AD 권한은 상속이 명시적으로 차단되지 않는 한 도메인 루트에서 각 상위 OU를 통해 계단식으로 적용됩니다.
이것이 유용한 권한 보고서가 누가 액세스할 수 있는지 이상의 정보를 보여야 하는 이유입니다. 직접 부여는 상위 컨테이너에서 상속받거나 그룹을 통해 획득한 동일한 액세스와는 다른 위험을 수반하므로, 어떻게 획득했는지도 보여야 합니다.
PowerShell(Get-Acl)로 보고서 생성
- Powershell ISE를 엽니다 → 아래 코드를 사용하여 새 스크립트를 만들고, 사용자 이름과 내보내기 경로를 설정한 다음 실행하세요:
$schemaIDGUID = @{}
#ignore duplicate errors if any#
$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'
# Get OU.
$OUs = Get-ADOrganizationalUnit -Filter 'Name -like "Production"'| Select-Object -ExpandProperty
DistinguishedName
# retrieve OU permissions.
# Add report columns to contain the OU path and string names of the ObjectTypes.
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)}}, `
*
}
# Export report out to a CSV file for analysis in Excel.
$report | Export-Csv -Path "C:\data\OU_Permissions.csv" -NoTypeInformation
- 내보낸 파일을 Excel에서 엽니다.
샘플 보고서:
보고서를 읽고 해석하기
CSV를 얻으면 몇 개의 열이 가장 중요합니다:
- IdentityReference: 누가 또는 어떤 그룹이 액세스 권한을 가지고 있는지.
- ActiveDirectoryRights: 해당 계정이 실제로 할 수 있는 작업입니다. 예를 들어 GenericAll은 읽기 권한뿐 아니라 객체에 대한 전체 제어를 의미합니다.
- IsInherited: 권한이 직접 부여되었는지 아니면 상위 컨테이너에서 상속되었는지를 나타냅니다. 위험은 보통 여기에서 숨겨져 있습니다. 개별 계정에 대한 직접 부여(IsInherited = False) 또는 Authenticated Users와 같은 광범위한 그룹이 필요한 것보다 더 많은 권한을 보유하는 경우, 자세히 살펴볼 가치가 있습니다.
- AccessControlType: 항목이 권한을 허용하는지 거부하는지 여부입니다. 거부 항목은 드물며 별도로 조사할 가치가 있습니다.
GenericAll 또는 WriteProperty와 같은 권한 수준이 예상된 그룹이 아닌 개별 계정에 직접 부여되었거나, 읽기 이상의 권한을 가진 광범위한 내장 그룹이 있다면, 이는 최소 권한 원칙에 따라 정리 대상입니다.
도구로 대규모 보고
여러 OU에 걸쳐 정기적으로 실행하거나 스크립트를 유지하지 않고 이 기능이 필요할 때, Netwrix Auditor가 동일한 보고서를 내장하여 제공합니다.
- Netwrix Auditor에서 "Reports" → "Active Directory" 섹션 확장 → "Active Directory - State-in-Time"으로 이동 → "Object Permissions in Active Directory" 선택 → "View" 클릭.
- 아래 필터 값들을 지정한 후 "보고서 보기"를 클릭하세요:
- 객체 UNC 경로
- 부여된 수단
- 권한
- 보고서를 저장하려면 "Export" 버튼을 클릭 → 드롭다운 메뉴에서 형식을 선택 → "Save"를 클릭하세요.
이 일회성 보고서를 넘어서, Netwrix Auditor 는 누가 언제 무엇을 어떻게 변경했는지도 추적하여, 단순한 스냅샷이 아닌 이상 활동을 사고로 발전하기 전에 포착할 수 있습니다. 그리고 해독할 필요가 없습니다: 계정 이름, 계정 유형, 부여된 수단이 이미 라벨링되어 있으며, 번역할 GenericAll이나 IsInherited가 없습니다.
Netwrix Auditor로 누가 언제 무엇에 왜 액세스하는지 확인하세요. 무료 평가판 다운로드.
특정 OU에 대한 Active Directory 권한 목록을 가져와 과도한 액세스 권한을 취소하고 권한 남용을 방지하세요
최소 권한 원칙을 엄격히 적용하는 것은 각 계정이 실제로 필요한 접근 권한만 갖도록 하는 것으로, 강력한 Active Directory 보안에 필수적입니다. 포괄적인 AD 권한 보고서는 도메인 내 누가 어떤 접근 권한을 가지고 있는지, 각 권한이 어떻게 부여되었는지(직접 또는 그룹 멤버십을 통해), 그리고 계정의 접근 권한이 여전히 책임에 부합하는지 아니면 더 이상 맡지 않는 역할에서 남아 있는지 보여줍니다.
단일 OU 보고서는 좋은 출발점이지만, 접근 권한은 하나의 OU를 훨씬 넘어 중첩 그룹, 파일 공유, SharePoint 및 AD 계정이 접근할 수 있는 클라우드 저장소 전반에 걸쳐 확장됩니다. Netwrix Access Analyzer는 동일한 질문을 확장하여 전체 환경에서 누가 무엇에 접근할 수 있는지 파악하고, 과도하거나 오래된 권한을 자동으로 표시하며, 데이터 소유자가 더 이상 필요하지 않은 접근 권한을 검토하고 취소할 수 있도록 합니다.
자주 묻는 질문
공유하기