Active Directory Security Descriptor ADSI .NET
Security Descriptor のADSIに対応する.NETの型

小山 三智男
mitchin
Security Descriptor って?
Security Descriptor とはセキュリティ記述子のことで、ざっく
り言えばセキュリティ(アクセス権)設定を記述したものです。
ここでは Active Directory オブジェクト...
Active Directoryデータのプロパティ出力
以前、Active Directory データのプロパティ出力について紹介
しました。

初期版
http://www.slideshare.net/mitchin227/output-p...
アクセス制御エントリの出力の書式
ADSI 対応版はセキュリティ記述子の随意アクセス制御リストの
各アクセス制御エントリ(ACE)を 番号をつけて見やすい形で出
力しました。
出力項目は次の 5 つのプロパティです。
• Trustee(ユーザ...
COM(ADSI)対応版の出力サンプル

5
プログラムから確認するには
DirectoryEntry.Properties プロパティ(PropertyCollection
クラス)からプロパティとその値(PropertyValueCollection ク
ラス)を列挙して取得します。
...
属性は nTSecurityDescriptor
セキュリティ記述子の属性は nTSecurityDescriptor で、その値
の型は ADSI の IADsSecurityDescriptor です。
値は DirectoryEntry ...
ADSIに対応する.NETのクラスは?
MSDNのセキュリティ記述子の管理のページには次のように書かれ
ています。
Active Directory オブジェクト セキュリティ記述子と共に使用
されるプライマリ クラスは ActiveDirec...
DirectoryEntry.ObjectSecurityプロパティ
確かに DirectoryEntry.ObjectSecurity プロパティの型は
ActiveDirectorySecurity クラスです。

更に次のことも書かれてい...
ということで調べてみたらありました!
セキュリティ記述子 IADsSecurityDescriptor に対応するのは
CommonSecurityDescriptor クラスです。
継承階層
System.Object
System.Secu...
アクセス制御リスト(ACL)
アクセス制御リスト IADsAccessControlList に対応するのは、
随意アクセス制御リストが DiscretionaryAcl クラスで、システ
ム アクセス制御リストが SystemAcl クラスで...
アクセス制御エントリ(ACE)
アクセス制御エントリ IADsAccessControlEntry に対応するのは
ObjectAce クラスまたは CommonAce クラスです。
継承階層
System.Object
System.Secu...
ACEの出力項目のプロパティ
Trustee プロパティはユーザやグループの名前部分を出力してい
ます。対応するのは SecurityIdentifier プロパティですが、
SID しか保持していないので、ユーザやグループの名前部分を別
途取...
詳細や関連情報はブログ等で
Active Directoryデータのプロパティ出力のCOM対応版
http://blogs.wankuma.com/mitchin/archive/2013/12/04/328271.aspx
http://bl...
Upcoming SlideShare
Loading in …5
×

Active Directory Security Descriptor ADSI - .Net

526 views
433 views

Published on

Security Descriptor の ADSI に対応する .NET の型

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
526
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Active Directory Security Descriptor ADSI - .Net

  1. 1. Active Directory Security Descriptor ADSI .NET Security Descriptor のADSIに対応する.NETの型 小山 三智男 mitchin
  2. 2. Security Descriptor って? Security Descriptor とはセキュリティ記述子のことで、ざっく り言えばセキュリティ(アクセス権)設定を記述したものです。 ここでは Active Directory オブジェクトに対するセキュリティ 設定情報です。 セキュリティ記述子の中に 随意アクセス制御リスト(DACL: Discretionary Access Control List)やシステム アクセス制御 リスト(SACL:System Access Control List)、所有者、プライ マリ グループがあります。 DACL はユーザやグループに対して 許可/拒否の権限を定義した アクセス規則であるアクセス制御エントリ(ACE:Access Control Entry)の集まりで、単にアクセス制御リスト(ACL)と 呼ぶことがあります。 SACL は監査規則である ACE の集まりです。 2
  3. 3. Active Directoryデータのプロパティ出力 以前、Active Directory データのプロパティ出力について紹介 しました。 初期版 http://www.slideshare.net/mitchin227/output-properties COM(ADSI)対応版 http://www.slideshare.net/mitchin227/security-descriptor これをサンプルアプリに組み込めば出力できるようになります。 サンプルアプリとスライドはこちら http://blogs.wankuma.com/mitchin/archive/2013/12/08/328279.aspx 3
  4. 4. アクセス制御エントリの出力の書式 ADSI 対応版はセキュリティ記述子の随意アクセス制御リストの 各アクセス制御エントリ(ACE)を 番号をつけて見やすい形で出 力しました。 出力項目は次の 5 つのプロパティです。 • Trustee(ユーザやグループの名前部分のみ) • AccessMask • AceFlags • AceType • Flags これらの値順に重複は除外して出力しました。 4
  5. 5. COM(ADSI)対応版の出力サンプル 5
  6. 6. プログラムから確認するには DirectoryEntry.Properties プロパティ(PropertyCollection クラス)からプロパティとその値(PropertyValueCollection ク ラス)を列挙して取得します。 サンプルコードは次の名前空間をインポートしています。 • ActiveDs(Active DS Type Library の参照設定が必要) • System.IO • System.Security.Principal 6
  7. 7. 属性は nTSecurityDescriptor セキュリティ記述子の属性は nTSecurityDescriptor で、その値 の型は ADSI の IADsSecurityDescriptor です。 値は DirectoryEntry オブジェクトを entry とすると、 VB entry.Properties.Item("nTSecurityDescriptor").Value C# entry.Properties["nTSecurityDescriptor"].Value で取得できます。 ADSI 対応版ではこの値を IADsSecurityDescriptor にキャスト しています。 また、関連するアクセス制御リストは IADsAccessControlList で、アクセス制御エントリは IADsAccessControlEntry です。 7
  8. 8. ADSIに対応する.NETのクラスは? MSDNのセキュリティ記述子の管理のページには次のように書かれ ています。 Active Directory オブジェクト セキュリティ記述子と共に使用 されるプライマリ クラスは ActiveDirectorySecurity で、 DirectoryEntry.ObjectSecurity プロパティを使用すると、 Active Directory オブジェクトのセキュリティ記述子を表す ActiveDirectorySecurity オブジェクトを取得できます。 8
  9. 9. DirectoryEntry.ObjectSecurityプロパティ 確かに DirectoryEntry.ObjectSecurity プロパティの型は ActiveDirectorySecurity クラスです。 更に次のことも書かれています。 随意アクセス制御リストのアクセス制御エントリは、アクセス規 則とも呼ばれます。アクセス規則を表すプライマリ クラスは、 ActiveDirectoryAccessRule クラスです。 ということは、IADsSecurityDescriptor に対応するのが ActiveDirectorySecurity で、IADsAccessControlEntry に対応 するのが ActiveDirectoryAccessRule ってこと?? なんか名前が似てない・・・ でもきっと似た名前のクラスがあるはず。 9
  10. 10. ということで調べてみたらありました! セキュリティ記述子 IADsSecurityDescriptor に対応するのは CommonSecurityDescriptor クラスです。 継承階層 System.Object System.Security.AccessControl.GenericSecurityDescriptor System.Security.AccessControl.CommonSecurityDescriptor 2ページに記載した4つの主なプロパティは 名前は同じですが型が 異なります。 項目 プロパティ AD SI .N ET 随意アクセス制御リスト Di screti onaryA cl O bject/dynam i c Di screti onaryA cl システム アクセス制御リスト S ystem A cl O bject/dynam i c S ystem A cl 所有者 O w ner S tri /stri ng ng S ecuri tyIdenti er fi プライマリ グループ G roup S tri /stri ng ng S ecuri tyIdenti er fi 10
  11. 11. アクセス制御リスト(ACL) アクセス制御リスト IADsAccessControlList に対応するのは、 随意アクセス制御リストが DiscretionaryAcl クラスで、システ ム アクセス制御リストが SystemAcl クラスです。 継承階層 System.Object System.Security.AccessControl.GenericAcl System.Security.AccessControl.CommonAcl System.Security.AccessControl.DiscretionaryAcl System.Security.AccessControl.SystemAcl 11
  12. 12. アクセス制御エントリ(ACE) アクセス制御エントリ IADsAccessControlEntry に対応するのは ObjectAce クラスまたは CommonAce クラスです。 継承階層 System.Object System.Security.AccessControl.GenericAce System.Security.AccessControl.KnownAce System.Security.AccessControl.QualifiedAce System.Security.AccessControl.CommonAce System.Security.AccessControl.ObjectAce 12
  13. 13. ACEの出力項目のプロパティ Trustee プロパティはユーザやグループの名前部分を出力してい ます。対応するのは SecurityIdentifier プロパティですが、 SID しか保持していないので、ユーザやグループの名前部分を別 途取得する必要があります。 例えば、objectSid 属性をフィルタに指定して検索して、cn 属 性の値を取得します。 ※所有者(Owner)やプライマリ グループ(Group)も同様。 AD SI プロパティ 型 T rustee S tri /stri ng ng A ccessM ask Integer/i nt A ceFl ags .N ET 対応する列挙体 ー プロパティ 型 対応する列挙体 S ecuri tyIdenti er fi S ecuri tyIdenti er fi ー A D S _R IG H T S _EN U M A ccessM ask Integer/i nt A cti veD i rectoryR i ghts Integer/i nt A D S _A C EFLA G _EN U M A ceFl ags A ceFl ags A ceFl ags A ceT ype Integer/i nt A D S _A C ET YPE_EN U M A ceT ype A ceT ype A ceT ype Fl ags Integer/i nt A D S _FLA G T YPE_EN U M O bjectA ceFl ags O bjectA ceFl ags O bjectA ceFl ags O bjectA ceFl ags プロパティは O bjectA ce クラスのプロパティで、C om m onA ce クラスにはありません。 13
  14. 14. 詳細や関連情報はブログ等で Active Directoryデータのプロパティ出力のCOM対応版 http://blogs.wankuma.com/mitchin/archive/2013/12/04/328271.aspx http://blogs.wankuma.com/mitchin/archive/2013/12/05/328273.aspx COM対応版の変更点の説明(セキュリティ記述子:SecurityDescriptor) http://blogs.wankuma.com/mitchin/archive/2013/12/09/328281.aspx DirectoryEntry.ObjectSecurityプロパティ http://blogs.wankuma.com/mitchin/archive/2013/12/20/328297.aspx セキュリティ記述子(SecurityDescriptor)のADSIに対応する.NETのクラス http://blogs.wankuma.com/mitchin/archive/2013/12/23/328302.aspx セキュリティ記述子(SecurityDescriptor)の出力の.NETクラス使用版 http://blogs.wankuma.com/mitchin/archive/2013/12/24/328303.aspx http://blogs.wankuma.com/mitchin/archive/2013/12/25/328308.aspx セキュリティ記述子(SecurityDescriptor)の出力の.NETクラス使用版の説明 http://blogs.wankuma.com/mitchin/archive/2013/12/26/328310.aspx http://blogs.wankuma.com/mitchin/archive/2013/12/27/328314.aspx http://blogs.wankuma.com/mitchin/archive/2013/12/28/328317.aspx 14

×