Active Directoryの委任された権限の表示または削除

Active Directory(AD)委任は、多くの組織のITインフラストラクチャの重要な部分です。 管理を委任することで、ユーザーまたはグループに必要な権限のみを付与することができ、ユーザーを特権グループ(ドメイン管理者、アカウントオペレーターなど)に追 委任を実行する最も簡単な方法は、Microsoft管理コンソール(MMC)Active Directoryユーザーとコンピュータスナップインのコントロールの委任ウィザードを使用することです。

関連:PowerShellを使用したActive Directoryの管理

制御の委任ウィザードでは、権限を委任する簡単な方法が提供されますが、委任された権限を削除するための対応す Microsoftの誰かがこの欠点に気づき、Dsrevokeという名前のコマンドラインプログラムを作成したに違いありません。コントロールウィザードの委任によって追加された権限エントリを削除できるexe。

しかし、Dsrevoke。exeプログラムには、Microsoftの記事”Dsrevokeコマンドラインツールを使用して、Windows Server2003ベースのドメイン内のすべての組織単位のアクセス許可を報告すると、ツールがすべ”これらの制限は:

  • Dsrevoke。exeは、単一の検索で最大1,000個のOuしか検索できません。 この制限の回避策として推奨されるのは、結果の数を減らすために、より深くネストされた組織単位(OU)でプログラムの検索を開始することです。
  • いずれかのOuに名前にスラッシュ(/)文字が含まれている場合、exeは失敗します。 問題のあるOuの名前を変更する以外に、この制限の回避策はありません。

Dsrevokeを使用している場合。exe最近、私は最初の問題を回避することができましたが、2番目の問題に遭遇しました。 組織上の理由から、スラッシュ文字を削除するためにOuの名前を変更することは選択肢ではありませんでした。 また、スラッシュはOU名の有効な文字であり、Dsrevokeです。exeは、ouに名前にスラッシュが含まれているかどうかに関係なく動作するはずです。 また、私の環境で1,000OUの制限を回避する作業には時間がかかりました。

これらの問題のために、私はDsrevokeに組み込まれた代替案があるかどうかを確認することにしました。exe”を起動します。 最近のバージョンのWindowsでは、Dsaclsが使用されています。exeプログラムは、制御ウィザードの委任によって追加された権限を削除する方法を提供します。 Ouに名前にスラッシュが含まれている場合は失敗しませんが、Dsacls。exeは、Dsrevokeのような権限のサブコンテナを検索できません。exeはそうです。

私は最初にOuを検索し、Dsaclsを呼び出すための簡単なスクリプトを書くことにしました。各OUから委任されたアクセス許可を削除するexe。 しかし、そのようなスクリプトをどのように設計したいのか考えたとき、どのOuが特定のユーザーまたはグループに委任された権限を持っているかのリス Dsrevoke。exeとDsacls。exeは権限のリストを生成することができますが、出力は非常に長く技術的です。 もっとシンプルなものが欲しかった。

Dsrevokeの制限によるものです。exeとDsacls。exe、および短い出力を取得する私の欲求、私は私が望んでいた機能を得るためにWindows PowerShellスクリプトを書くことにしました。 結果はRemove-DSACE.ps1です。 ただし、このスクリプトについて説明する前に、コントロールウィザードの委任を使用したときに何が起こるかについての背景情報と、windowsの基本的なセキ

ウィザードを使用した委任された権限の追加

前述のように、制御の委任ウィザードでは、権限を委任する簡単な方法が提供されます。 たとえば、Password Resetグループのメンバーが、ADドメインのAll Users OUのユーザーのパスワードをリセットできるようにするとします。 これを行うには、次の手順を実行する必要があります:

  1. Active Directoryユーザーとコンピュータのコンソールを開きます。
  2. 図1に示すように、”すべてのユーザー”OUを右クリックし、”コントロールの委任”を選択します。 “次へ”ボタンをクリックして、ウィザードの”ようこそ”ページを過ぎて進みます。

図1:制御の委任ウィザードの開始

  1. ウィザードの[ユーザーまたはグループ]ページで、[追加]ボタンをクリックします。
  2. Select Users,Computers,or Groupsダイアログボックスで、グループの名前(パスワードリセット)を入力し、Check Namesボタンをクリックしてグループの名前が正しいことを確認し、OKをク
図2:グループ名の入力
図2:グループ名の入力
  1. グループの名前が[Users]または[Groups]ページに表示されていることを確認したら、図3に示すように[Next]をクリックします。
図3:グループ名がリストされていることを確認する
図3: グループの名前がリストされていることを確認する
  1. [委任するタスク]ページで、[ユーザーパスワードのリセット]と[次のログオン時にパスワードの変更を強制する]を選択し、[次へ]をクリックします(図4を参照)。
図4:委任するタスクの選択
図4:委任するタスクの選択
  1. ウィザードの最後のページで情報を確認し、”完了”をクリックします。

[完了]ボタンをクリックすると、[制御の委任]ウィザードにより、要求されたアクセス許可が[すべてのユーザー]OUに追加されます。 委任の効果を表示するには、”すべてのユーザー”OUを右クリックし、”プロパティ”を選択し、”セキュリティ”タブを選択します。 (セキュリティタブが表示されない場合は、Active Directoryユーザーとコンピュータコンソールの表示メニューの高度な機能オプションを有効にします。 詳細表示の場合は、[詳細設定]ボタンをクリックします。 図5は、表示されるセキュリティの詳細設定ダイアログボックスを示しています。図5:すべてのユーザのDACLの確認OU

図5:すべてのユーザのDaclの確認Ou

Acl、Ace、および管理者—Oh My!

詳細なセキュリティ設定ダイアログボックスで提供される情報を理解するには、アクセス制御リスト(ACL)、アクセス制御エントリ(ACE)、トラスティ、およ また、Remove-DSACE.ps1.

ACLを使用するには、これらの概念を理解する必要があります。 Aclには、任意Acl(Dacl)とシステムAcl(Sacl)の2種類があります。 DACLは、オブジェクトへのアクセスが許可または拒否されているアカウントを識別します。 SACLは、管理者がオブジェクトへのアクセス試行をどのように記録するかを記述します(監査など)。

ACLはAceで構成されます。 各ACEはトラスティを識別し、オブジェクトに対するトラスティのアクセス(許可、拒否、または監査)を指定します。 コントロールウィザードの委任は、AdコンテナーのDACLにAceを追加します。 図5は、すべてのユーザー OUのDACLを示しています。 この図では、permission entryという用語はACEと同義です。

トラスティは、ACEが適用されるエンティティ(ユーザー、セキュリティグループ、またはログオンセッション)です。 各ACEは、単一の受託者に適用されます。 図5では、プリンシパルという用語は受託者と同義です。 図5は、Password Resetグループに割り当てられたAceが2つあることを示しています。 つまり、パスワードリセットグループは、これら二つのAceのトラスティ(プリンシパル)です。

ACEは、オブジェクトに直接適用することも、リソースの親オブジェクトから継承することもできます。 図5では、パスワードリセットグループをトラスティとして含むすべてのユーザー OUの2つのAceは、コントロールの委任ウィザードがDACLに直接追加したため、親コ 図6は、アカウンティングOUのDACLを示しています。 Accounting OUのDACLには、Password Resetグループ用の2つのAceが含まれていますが、これらのAceはAll Users OUから継承されますつまり、Inherited from列にはOU=All Users,DC=fabrikam,DC=localと表示されます。

図6:アカウンティングOUのDACLの確認
図6:アカウンティングOUのDACLの確認

Remove-DSACE.ps1の概要

次の目標を達成するために、Remove-DSACE.ps1(remove directory service Aceの略)を書きました:

  • 受託者を含む継承されていないAceを含むOuを検索します。
  • 要求された場合、サブOuに再帰します。
  • 受託者を含む継承されていないAceを削除します。
  • 簡潔な出力を生成します。

スクリプトの構文は次のとおりです:

Remove-DSACE path 

-Reportまたは-Removeパラメーターは、スクリプトが継承されていないAceを一覧表示するか削除するかを決定します。 -Reportを指定した場合、スクリプトはトラスティを含む継承されていないAceを検索しますが、それらは削除されません。 -Removeを指定すると、継承されていないAceが削除されます。 コントロールの委任ウィザードによって追加されたAceだけでなく、トラスティの継承されていないAceもすべて削除されることを理解することは非常に重 これは、継承されていないAceがどのように追加されたかを判断する方法がないためです。

-Reportパラメーターと-Removeパラメーターは省略可能ですが、スクリプトはデフォルトで-Reportパラメーターを想定しています。 両方のパラメータを同時に指定すると、スクリプトはエラーをスローします。Ad Ouの1つ以上の識別名(DNs)を指定するには、-Pathパラメーターを使用します。 -Pathパラメーター名は省略可能で、パイプライン入力を受け入れます。 複数のDNsを指定できますが、ワイルドカードを使用することはできません。

-Trusteeパラメーターは、Aceで検索するトラスティの名前を指定します。 このスクリプトは、各OUのDACLで、名前付きトラスティを含む継承されていないAceを調べます。 コンマ区切りのリストまたは配列を使用して複数のトラスティを指定できますが、ワイルドカードを使用することはできません。 トラスティ名は、表1にリストされている任意の名前形式を使用して指定できます。

フォーマット の例
表1: -Trusteeパラメーターの名前の形式
Windows NT4.0の名前付け形式(NT4) FABRIKAM\KenDyer
オブジェクトのDN CN=Ken Dyer,CN=Users,DC=fabrikam,DC=com
オブジェクトの正規名 fabrikam.com/Users/Ken ダイアー
オブジェクトのユーザープリンシパル名(UPN)

指定したOUの下にあるOuを検索する場合は、-Recurseパラメーターを指定します。 特定のドメインコントローラー(DC)に接続する場合は、
-ServerNameパラメーターを使用してサーバーの名前を指定できます。 -Recurseパラメーターと-ServerNameパラメーターはどちらも省略可能です。

スクリプトは代替資格情報をサポートしています。 -Credentialパラメーターは、スクリプトがドメインへの接続に使用するユーザー名とパスワードを含むPSCredentialオブジェクトを使用します。

スクリプトは-Confirmパラメータもサポートしています。 -Confirmパラメーターは、-Removeパラメーターと組み合わせた場合にのみ意味があります。 -Confirm:FALSE FALSEを指定するか、None ConfirmPreference変数をNoneに設定して無効にしない限り、-Confirmパラメーターはデフォルトで有効になります。 正しいAceを削除していることが確実な場合にのみ、-Confirmパラメータを無効にする必要があります。

スクリプトは、表2に示すプロパティを含む出力オブジェクトを生成します。

プロパティ 説明
表2:Remove-DSACEの出力オブジェクトのプロパティps1
パス OUのDN
トラスティ ドメイン\名前形式のトラスティの名前
Ace OUのACL内の継承されていないAceの数
結果* 単語”削除”またはエラーメッセージ
*Resultプロパティは、-Removeパラメーターを使用している場合にのみ存在します。

このスクリプトには、受託者を含む継承されていないAceを持つOuのみが含まれます。 トラスティの継承されたAceは、出力には含まれません。 図7に、2つの例を示します。 図7の最初のコマンドは、アカウンティングOUのDACLにパスワードリセットグループの継承されていないAceが含まれていないため、出力を生成しません。 (Accounting OUにはPassword Resetグループ用の2つのAceがありますが、図6に示すように、これらのAceはAll Users OUから継承されます。)図7の2番目のコマンドは出力を生成します。 All Users OUのPassword Resetグループには、継承されていない2つのAceがあります(図5を参照)。

図7:2つのコマンドからの出力の比較
図7: 2つのコマンドの出力を比較する

実世界の例

実世界でRemove-DSACE.ps1を使用する方法を見てみましょう。 Fabrikamの管理者がいるとします。ローカルドメインは、制御の委任ウィザードを使用して、すべてのユーザー OUとその下のOuの一部のSecretarial Staffグループに権限を委任しましたが、どのOuを覚えていません。 これらの委任されたアクセス許可を削除して、他のグループに権限を委任できるようにする必要があります。

まず、Secretarial Staffグループを含む継承されていないAceを持つOuのリストを表示する必要があります。 これを行うには、次のコマンドを使用できます:

Remove-DSACE -Report ` -Path "OU=All Users,DC=fabrikam,DC=local" ` -Trustee "FABRIKAM\Secretarial_Staff" ` -Recurse | Format-List

このコマンドとその出力を図8に示します。

図8:Secretarial Staffグループを含む非継承Aceを持つOuの一覧
図8:Secretarial Staffグループを含む非継承Aceを持つOuの一覧

この出力から、Secretarial Staffグループを含む非継承Aceを持つouが これらのAceを削除できることを確認したら、図9に示すように、-Reportパラメーターを-Removeパラメーターに置き換えてコマンドを繰り返すことができます。 前述したように、Secretarial StaffグループにControl Wizardの委任以外の権限が割り当てられている場合は、それらも削除されます。

図9:秘書スタッフグループ
を含む継承されていないAceを持つOuの削除図9: Secretarial Staffグループ

を含む継承されていないAceを持つOuを削除するAD委任の制御

制御委任ウィザードは非常に便利なツールですが、その効果をすばやく表示 あなたはDsrevokeを使うことができますが。exeとDsacls。exeこれらのタスクを実行するには、これらのツールにはいくつかの制限があります。 代わりにRemove-DSACE.ps1スクリプトを使用すると、ADの委任されたアクセス許可をより適切に制御できます。 このスクリプトをダウンロードするには、ページの上部にある[コードをダウンロード]ボタンをクリックします。

Brian Desmondの関連ビデオ(VIPアクセスのみ):
セッション1:Active Directory権限の委任のマスタリング
セッション2:Active Directoryセキュリティ権限の委任のマスタリング

Leave a Reply