質問者
ActiveDirectoryAccessRule の ObjectType プロパティについて

質問
-
いつもお世話様です。普段から VisualStudioのVisualBasic
の方でご指導頂いております、いつもありがとうございます。
ActiveDirectory関連のことでまた調べておりまして、言語によら
ない内容につき、こちらで質問させていただく方がよいのではない
かと思いました、何卒よろしくお願いします。
ActiveDirectoryAccessRule クラス の ObjectType プロパティ
がどのようなものであるかがわからず悩んでおります。Helpに
よりますと、これはGUIDクラスの値とのことでそれ以上の詳しい
説明を求めてあちこち検索してみたのですが、よく理解できません
でした。
たとえば、ある DirectoryEntry オブジェクトのセキュリティ設定
を見てみますと、
bf967a9c-0de6-11d0-a285-00aa003049e2 ・・・(*1)
といったような値が出ていました。これは、ある[組織単位](OU)
において、あるアカウントの ActiveDirectoryAccessRule の
「このオブジェクトとすべての子オブジェクト」
という適用先に対して
「グループオブジェクトの作成」「グループオブジェクトの削除」
というアクセス権を設定したときに現れていたObjectType プロ
パティでした。
この場合、(*1)という値は、これらの設定内容の場合にはいつ
も変わらない「普遍的な値」として設定されている値なのでしょう
か?それとも、サーバーによって、またあるいはそのアカウントに
よって、あるいは、時によって変化しまう可能性のある値でしょう
か?
ネット上で見ることができた使用例の中ですと、このプロパティに
直に値を与えて ActiveDirectoryAccessRule オブジェクトを
コンストラクトしている例が見られましたが、Help等の説明ですと
「世界中で重なる可能性の少ない唯一性が保証された値」です
といったものでしたので、何か場合によっては同じ適用先でも時
と場合によって変化してしまうようなものなのか・・・といった疑問
を感じてしまいました・・・、こうした心配は無用でしょうか?
またこのオブジェクトのコンストラクトのためには、自分の環境で
テストして得られたこのプロパティの値を使ってしまえばよいので
しょうか、これらについてご指導を頂けたらと思いました。
何卒よろしくお願いします。
すべての返信
-
こんにちは。中川俊輔 です。
VS2005初心者さん、フォーラムのご利用ありがとうございます。
新規生成するオブジェクトにGUIDを設定する場合には、生成ツールを使用できます。
下記サイトを参考にしてください。
GUID の作成 (guidgen.exe)
http://msdn2.microsoft.com/ja-jp/library/ms241442.aspx
GUID値を生成するには?[C#、VB]
http://www.atmarkit.co.jp/fdotnet/dotnettips/675generateguid/generateguid.html
また、Active DirectoryにおけるGUIDの扱いについては下記サイトが参考になると思います。
Active Directoryオブジェクトの識別名(DN)とは
http://www.atmarkit.co.jp/fwin2k/win2ktips/829addn/addn.htmlそれでは!
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。
詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
-
中川様、いつもお世話様です。前回もVBの方で助けて頂き
ました、その節は大変助かりました、ありがとうございました!
また今回は、GUIDそのものを知るための解説のリンクも教えて
頂き、まことにありがとうございました。こちらも追って確認させて
いただきます。
今回教えて頂きました、こちらのリンク:
Active Directoryオブジェクトの識別名(DN)とは
http://www.atmarkit.co.jp/fwin2k/win2ktips/829addn/addn.html
から、以下の情報を得ることができました。
-----
■オブジェクトGUID
これは表には現れないが、Active Directoryではすべてのオブジェクトに対して、このGUIDによる一意なID(128bitのランダムな数値)を付け、内部的に管理している。Active Directoryのツリー構造や名前の変更に伴い、識別名やActive Directory正規名は変わるが、GUIDは変わらない。
-----ここで「表には現れない」とはなっていますが、実際にはじめ
の質問のように、ObjectType には現実に値として現れて来
ていました。
当初の不明点については、この中の、
「Active Directoryのツリー構造や名前の変更に伴い、識別名
やActive Directory正規名は変わるが、GUIDは変わらない」
を見ますと、どうやら「ActiveDirectoryシステム」上の「不変の
値」である、ように感じられました。
その後、実際にサーバー上の ADSIエディタでいろいろと
セキュリティ設定をした場合、その ActiveDirectoryAccessRule
の読み取りを行っていきましたが、少なくともその範囲では不変
なことが確認されていました。
これが他のサーバーでもそうであれば問題ないわけですが、
質問中に書きました「ネット上で検索された参考ソースコードでは
直接値が代入されて使用されていること」から考え合わせると、
やはりここでのご説明のように不変性を信じてもよいのかと思わ
れた次第です。ありがとうございました!
そこでまた一つ疑問が出て来てしまったのですが、
その確認過程において、ADSIエディタでのセキュリティ設定では、
適用先のオブジェクトをいろいろに変えることができるのですが、
その変えたオブジェクトの種類を示すはずのこの ObjectType
プロパティにその値が必ずしも反映されない場合がある、ことが
ありました。
とくに、そのオブジェクトに「フルコントロール」の権限でアクセス
できるようにした場合に ObjectType が
00000000-0000-0000-0000-000000000000
となってしまって、ここからではオブジェクトの種類を識別する
情報を取ることができないのか、と思われました。この場合でも
ADSIエディタでのセキュリティ設定では識別して表示されてい
ますので、どこかにその情報があるのだろうとは思われるのです
が、それがどこにどのように存在しているのかまだわかってい
ません。
もしよろしければこの点についてもご指導を頂ければ有難い
です。
何かご存知の方がいらっしゃいましたら、何とぞご教示のほど
をよろしくお願いします。