none
ADユーザーのパスワードリセットについて RRS feed

  • 質問

  • ADユーザーのパスワードリセットをVB2008で作成しました。

    ただし、下記の条件のユーザーが変更できません。

    プログラムに問題はありません。

    ADのセキュリティ設定であることまでは、突き止めました。

     

    条件は

     ●changeAdminユーザーは、Account Operatorsグループに所属し

       ADユーザーのパスワードリセットを行っています。

     ●AdminGグループは、Administratorsグループに所属し

       管理者ユーザーをまとめるグループで、Admin1ユーザー、Admin2ユーザーの

       2名がメンバーでいます。

     ●一般ユーザーはデフォルトでDomain Userグループに所属しています。

     

    一般ユーザーのセキュリティにAccount Operatorsが既定で存在し、パスワードリセットを

    許可しています。つまり、changeAdminユーザーがパスワードをリセットできます。

    しかし、AdminGグループのメンバー(Admin1ユーザー、Admin2ユーザー)は

    Administratorsグループの機能保護により、操作マスタがAccount Operatorsを

    削除してしまい、changeAdminユーザーがパスワードをリセットできません。

     

    AdminGグループのメンバーのパスワードリセットを行うにはどうしたらよいでしょうか?

    ただし、changeAdminユーザーには余計な権限を付けたくありません。

    (当然、changeAdminユーザーをAdministratorsグループに所属すれば問題は解決できますが

    これはやりたくありません。)

     

    それとも、Administratorsグループに所属しているグループのメンバー(Admin1ユーザー、

    Admin2ユーザー)は、Administratorsに所属しているメンバーまたはAdministratorでないと

    パスワードリセットは不可能でしょうか。

     

    以上、よろしくお願いします。

     

    2008年7月6日 12:45

回答

  • チャブーンです。

     

    残念ですが、VB2008ユーザーさんのやり方では実現できないです。

     

    "Reset Password" 権限は「パスワードのリセット」という権限になるのですが、AdminSDHolder に有効に設定する場合、「このオブジェクトのみ」に対して設定しなければなりません。AdminSDHolder はユーザーオブジェクトではないので、「Active Directory ユーザーとコンピュータ」からこの設定をすることはできないのです。

    #だから GUI ではできない、と申し上げました

     

    うえの要件で設定するためには、かならず dsacls コマンドを使わなければなりません。それ以外の方法では設定できないのです。うえの設定を Account Operators で設定したい、というなら、まず、AdminSDHolder に GUI で加えた設定をいったんすべて削除してください。そのうえで、下のコマンドをあらためて実行します。

     

    dsacls CN=AdminSDHolder,CN=System,<ドメイン名 DN> /G "Builtin\Account Operators":CA;"Reset Password";

     

    私の環境では、この方法で設定できましたが、この設定は普通の設定ではないので、もしかしたらわかりづらいかもしれません。不安があるようなら、無償掲示板レベルではなく、信頼できるエンジニアさん、あるいは MS の有償サポートに聞いてみた方がいいかもしれません。

    2008年7月7日 12:12
    モデレータ

すべての返信

  • できないと思いますが。逆にいえば出来てしまえばセキュリティホールになりかねないのではないでしょうか。

    それに出来たとしてもそれをしてしまえばあえてchangeadminを避けている意味もありません。

    なんせ、Adminitsratorsより低いアカウントのAccount Operatorsがリセットできてしまえば、Account Operatorsがadministrator権限のユーザーのパスワードを勝手にリセットし、administratorとしてログオンしてしまうことも考えられます。

    2008年7月6日 22:29
  • にゃうさん

    返信ありがとうございます。

     

    Administratorsのメンバーは、Administrator権限のユーザーでないと

    パスワードリセットは不可能と認識してよいのでしょうか。

    2008年7月7日 0:41
  • チャブーンです。

     

    この件ですが、基本的には みゃうさん のおっしゃるとおりの実装ですが、「どうしてもそうしたい」ということなら、技術的には実現できます。

     

    Administrators や Account Operators といったグループは保護されたグループの扱いですが、そのアクセス許可は、CN=AdminSDHolder,CN=System,<ドメイン名 DN> オブジェクトに指定されたアクセス許可の内容がそのまま反映されます。

     

    つまり、AdminSDHolder オブジェクトのアクセス許可を書き換えてあげれば、Administrators グループのユーザオブジェクトにそのアクセス許可が反映されます。

     

    http://support.microsoft.com/kb/232199/ja

     

    オブジェクトに対するパスワードリセットの ACL は "Reset Password" という特別なアクセス許可になりますが、このアクセス許可を AdminSDHolder に直接指定したい場合、dsacls.exe コマンドを使わなければなりません (GUI では設定できません)。たとえばしたのように設定することになるでしょう。

     

    dsacls CN=AdminSDHolder,CN=System,<ドメイン名 DN> /G [ドメイン名]\changeAdmin:CA;"Reset Password";

     

    これを PDC エミュレータ上で設定し、各オブジェクトに適用するまで 1 時間ほど待ちます。なおこのコマンドについては、したのページにでてますので、内容を確認してみてはどうでしょうか?

     

    http://technet.microsoft.com/ja-jp/magazine/cc162495(TechNet.10).aspx

    http://support.microsoft.com/kb/281146/ja

     

    これを設定した場合、セキュリティ要件が落ちますので、その部分は自己責任となるでしょう。なお、他のやり方として、「指定されたグループ自体を保護グループからはずす」という方法もあります。これについては、したのページを見てみてください。

     

    http://support.microsoft.com/kb/817433/en-us

    2008年7月7日 1:50
    モデレータ
  • チャブーンさん

    返信ありがとうございます。

     

    当方、Windows Server 2003なんですが、教えていただいた

    Active Directory AdminSDHolder オブジェクトについての説明と更新は

    対象がWindows 2000 Serverとなっていました。

     

    Windows Server 2003でも出来るのでしょうか?

    2008年7月7日 4:12
  • チャブーンです。

     

    > Active Directory AdminSDHolder オブジェクトについての説明と更新は

    > 対象がWindows 2000 Serverとなっていました。

     

    リクツとしては同じですので、うまくいくはずです。私の方で簡単に確かめた限りでは、きちんとできていますよ。

    2008年7月7日 4:21
    モデレータ
  • チャブーンさん

     

    AdminSDHolderにAccount Operatorsを追加することができました。

    ありがとうございます。

     

    そこで、更にAccount OperatorsのメンバであるchangeAdminにパスワードリセットを

    行わせるには、AdminSDHolderに追加したAccount Operatorsのアクセス許可は

    どれを許可すればよろしいでしょうか。

     

    言い回しが変かもしれませんが、言いたいことは

    パスワードリセットをしたい場合は、下記のアクセス許可のどれを有効にすればよいのでしょうか。

    (余計な権限を与えたくないのでフルコントロールは外します。)

    ・読み取り

    ・書き込み

    ・すべての子オブジェクトの作成

    ・すべての子オブジェクトの削除

    ・自身をメンバとして追加/削除

    ・送る

    ・電話とメールのオプションの読み取り

    ・電話とメールのオプションの書き込み

    ・特殊なアクセス許可

     

    よろしくお願いします。

     

    2008年7月7日 10:22
  • チャブーンです。

     

    残念ですが、VB2008ユーザーさんのやり方では実現できないです。

     

    "Reset Password" 権限は「パスワードのリセット」という権限になるのですが、AdminSDHolder に有効に設定する場合、「このオブジェクトのみ」に対して設定しなければなりません。AdminSDHolder はユーザーオブジェクトではないので、「Active Directory ユーザーとコンピュータ」からこの設定をすることはできないのです。

    #だから GUI ではできない、と申し上げました

     

    うえの要件で設定するためには、かならず dsacls コマンドを使わなければなりません。それ以外の方法では設定できないのです。うえの設定を Account Operators で設定したい、というなら、まず、AdminSDHolder に GUI で加えた設定をいったんすべて削除してください。そのうえで、下のコマンドをあらためて実行します。

     

    dsacls CN=AdminSDHolder,CN=System,<ドメイン名 DN> /G "Builtin\Account Operators":CA;"Reset Password";

     

    私の環境では、この方法で設定できましたが、この設定は普通の設定ではないので、もしかしたらわかりづらいかもしれません。不安があるようなら、無償掲示板レベルではなく、信頼できるエンジニアさん、あるいは MS の有償サポートに聞いてみた方がいいかもしれません。

    2008年7月7日 12:12
    モデレータ
  • チャブーンさん

     

    「GUIでの設定ができない」

    よく読んでいませんでした。すみません。

     

    dsaclsでこちらの条件に合ったパスワードリセットが実現できました。

    ありがとうございました。

    2008年7月8日 2:27