Active Directoryの組織単位(OU)に付与された権限を報告するには、OUのアクセス制御リストが必要です。これは、ADがどのアカウントがどの権利を持っているかを記録したものです。以下では、そのアクセス制御リストの構造、無料で取得するPowerShellスクリプト、返された内容の読み方、およびスクリプトを使わずに同じレポートを生成する方法を説明します。Netwrix Auditorを使用して。
Netwrix Auditorで誰がいつ何にアクセスしているかを確認しましょう。
Active DirectoryでOUの権限はどのように機能しますか?
Active Directory のすべてのオブジェクトは、各 OU を含めてアクセス制御リスト (ACL) を持っています。これは、そのオブジェクトに対してどのアカウントやグループが何をできるかを示すアクセス制御エントリ (ACE) のセットです。OU の権限は3つの場所から来ています。
- 明示的、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レポートは良い出発点ですが、アクセスは1つのOUをはるかに超え、ネストされたグループ、ファイル共有、SharePoint、およびADアカウントがアクセスできるクラウドリポジトリ全体に広がっています。Netwrix Access Analyzerはこの同じ質問を拡張し、環境全体で誰が何にアクセスできるかを把握し、過剰または古くなった権限を自動的にフラグ付けし、データ所有者が不要なアクセスをレビューして取り消せるようにします。
よくある質問
共有する