Technet フォーラム や 国井さんのブログを読んでいて、AdminSDHolderについての話が書いてありました。おはずかしながら、私はその存在自体知りませんでした。そもそもAdminSDHolderって何から勉強してみました。
シナリオから
まずはOU1というOUを作成し、User1とUser2が存在します。OU_Adminsグループに対して委任の設定を行い、OU1の管理者とする。その際にOU1内のユーザーパスワードリセットの権限を付与した。
ou1adminはOU_adminsのメンバーなのでOU1の管理者である。よって、User1及びUser2のパスワードリセットができるはず・・・
しかし、実際にはUser2のパスワードリセットができない
このようなシナリオがあります。
これはなぜ?ということろから話を始めます。
実はUser2がAccount Operatorsのメンバーになっていることが原因なんです。
これは管理者グループのメンバーに対して、1時間に1回PDCエミュレーターがSDPROP(Security Descriptor PROPagator)という機能を利用してAdminSDHolderオブジェクトのアクセス許可を管理者グループのアクセス許可にコピーすることによるものです。
*AdminSDHolderオブジェクトは、管理者グループに対するアクセス許可を管理しています。そのことから管理者グループのアクセス許可設定は、通常のアクセス許可画面から設定することができません。
AdminSDHolderオブジェクトはActive DirectoryドメインパーティションのSystemコンテナの中にあります。そのセキュリティ設定が管理者グループのアクセス権のひな型になるのです。
よって、このアクセス権が管理者グループにコピーされます。
では管理者グループとは一体どのグループかというと、グループの属性にAdminCountという属性がありますが、この属性値が1になっているグループが対象になります
これは国井さんのブログで紹介されていました~
ADFind
http://joeware.net/freetools/tools/adfind/index.htm
このようなコマンドをたたくと
Using server: london.contoso.com:389 Directory: Windows Server 2008 R2 dn:CN=Administrator,CN=Users,DC=contoso,DC=com dn:CN=Administrators,CN=Builtin,DC=contoso,DC=com dn:CN=Print Operators,CN=Builtin,DC=contoso,DC=com dn:CN=Backup Operators,CN=Builtin,DC=contoso,DC=com dn:CN=Replicator,CN=Builtin,DC=contoso,DC=com dn:CN=krbtgt,CN=Users,DC=contoso,DC=com dn:CN=Domain Controllers,CN=Users,DC=contoso,DC=com dn:CN=Schema Admins,CN=Users,DC=contoso,DC=com dn:CN=Enterprise Admins,CN=Users,DC=contoso,DC=com dn:CN=Domain Admins,CN=Users,DC=contoso,DC=com dn:CN=Server Operators,CN=Builtin,DC=contoso,DC=com dn:CN=Account Operators,CN=Builtin,DC=contoso,DC=com dn:CN=Read-only Domain Controllers,CN=Users,DC=contoso,DC=com dn:CN=clientpush,OU=SCCM,DC=contoso,DC=com dn:CN=user2,OU=OU1,DC=contoso,DC=com dn:CN=ac1user,OU=OU1,DC=contoso,DC=com 16 Objects returned |
このような結果が・・・ユーザーも入っていますが、管理者グループの一員になるとAdminCount=1となり、アクセス権もコピーされるということになります。
ちなみにUser1とUser2の属性を比べてみます
User2のadminCount属性が1になっていることが確認できます。
このような理屈によって、上記シナリオのような現象が起きているのですね!
さて、次のシナリオとしてはOU_Adminsの権限が管理者グループのユーザーに対して継承されないので、これをどうするか?
どうしてもOU管理者に管理者グループのユーザーも管理させたい場合にはAdminSDHolderに対して権限を付与する必要があります。今回の例ではこんな感じですね。
dsacls.exe CN=AdminSDHolder,CN=System,DC=contoso,DC=com /g contosoou1_admins:CA;”Reset Password”;
ただし、考慮しなくてはいけないのが全ての管理者グループにこの権限がコピーされることです。更にadministratorがもしこのOU1に存在する場合は、administratorのパスワードリセットもできてしまうということ。このようなリスクを認識して運用する必要がありますね。
ですので、通常はこのAdminSDHolderの権限変更は行わないと考えます。
更に注意点があります。
今回の例では、User2をAccount OperatorsのメンバーからはずせばUser1と同様にパスワードリセットができるはずですが、これができません。なぜなら、adminCount属性が変わらず、継承もブロックされたままだからです。
委任されたアクセス許可を利用できず継承が自動的に無効になる
http://support.microsoft.com/default.aspx/kb/817433/ja
一旦管理者グループに入れたユーザーは、単に管理者グループから削除しても元に戻らないので、上記KBに書いてあるような方法を使用して元に戻す必要があります。