SlideShare a Scribd company logo
1 of 14
Active Directory Security Descriptor ADSI .NET
Security Descriptor のADSIに対応する.NETの型

小山 三智男
mitchin
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
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
アクセス制御エントリの出力の書式
ADSI 対応版はセキュリティ記述子の随意アクセス制御リストの
各アクセス制御エントリ(ACE)を 番号をつけて見やすい形で出
力しました。
出力項目は次の 5 つのプロパティです。
• Trustee(ユーザやグループの名前部分のみ)
• AccessMask
• AceFlags
• AceType
• Flags
これらの値順に重複は除外して出力しました。

4
COM(ADSI)対応版の出力サンプル

5
プログラムから確認するには
DirectoryEntry.Properties プロパティ(PropertyCollection
クラス)からプロパティとその値(PropertyValueCollection ク
ラス)を列挙して取得します。
サンプルコードは次の名前空間をインポートしています。
• ActiveDs(Active DS Type Library の参照設定が必要)
• System.IO
• System.Security.Principal

6
属性は nTSecurityDescriptor
セキュリティ記述子の属性は nTSecurityDescriptor で、その値
の型は ADSI の IADsSecurityDescriptor です。
値は DirectoryEntry オブジェクトを entry とすると、
VB
entry.Properties.Item("nTSecurityDescriptor").Value
C#
entry.Properties["nTSecurityDescriptor"].Value
で取得できます。
ADSI 対応版ではこの値を IADsSecurityDescriptor にキャスト
しています。
また、関連するアクセス制御リストは IADsAccessControlList
で、アクセス制御エントリは IADsAccessControlEntry です。
7
ADSIに対応する.NETのクラスは?
MSDNのセキュリティ記述子の管理のページには次のように書かれ
ています。
Active Directory オブジェクト セキュリティ記述子と共に使用
されるプライマリ クラスは ActiveDirectorySecurity で、
DirectoryEntry.ObjectSecurity プロパティを使用すると、
Active Directory オブジェクトのセキュリティ記述子を表す
ActiveDirectorySecurity オブジェクトを取得できます。

8
DirectoryEntry.ObjectSecurityプロパティ
確かに DirectoryEntry.ObjectSecurity プロパティの型は
ActiveDirectorySecurity クラスです。

更に次のことも書かれています。
随意アクセス制御リストのアクセス制御エントリは、アクセス規
則とも呼ばれます。アクセス規則を表すプライマリ クラスは、
ActiveDirectoryAccessRule クラスです。
ということは、IADsSecurityDescriptor に対応するのが
ActiveDirectorySecurity で、IADsAccessControlEntry に対応
するのが ActiveDirectoryAccessRule ってこと??

なんか名前が似てない・・・
でもきっと似た名前のクラスがあるはず。
9
ということで調べてみたらありました!
セキュリティ記述子 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
アクセス制御リスト(ACL)
アクセス制御リスト IADsAccessControlList に対応するのは、
随意アクセス制御リストが DiscretionaryAcl クラスで、システ
ム アクセス制御リストが SystemAcl クラスです。
継承階層
System.Object
System.Security.AccessControl.GenericAcl
System.Security.AccessControl.CommonAcl
System.Security.AccessControl.DiscretionaryAcl
System.Security.AccessControl.SystemAcl

11
アクセス制御エントリ(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
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
詳細や関連情報はブログ等で
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

More Related Content

More from Michio Koyama

Active Directoryドメインを作ってみよう ~ユーザーやグループの作成とPCのドメイン参加~
Active Directoryドメインを作ってみよう ~ユーザーやグループの作成とPCのドメイン参加~Active Directoryドメインを作ってみよう ~ユーザーやグループの作成とPCのドメイン参加~
Active Directoryドメインを作ってみよう ~ユーザーやグループの作成とPCのドメイン参加~Michio Koyama
 
Active Directory DomainのGroup ~スコープと種類、所属可能なグループとメンバー~
Active Directory DomainのGroup ~スコープと種類、所属可能なグループとメンバー~Active Directory DomainのGroup ~スコープと種類、所属可能なグループとメンバー~
Active Directory DomainのGroup ~スコープと種類、所属可能なグループとメンバー~Michio Koyama
 
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~Michio Koyama
 
Active Directoryドメインを作ってみよう ~ドメインの作成とDNSサーバーの設定~
Active Directoryドメインを作ってみよう ~ドメインの作成とDNSサーバーの設定~Active Directoryドメインを作ってみよう ~ドメインの作成とDNSサーバーの設定~
Active Directoryドメインを作ってみよう ~ドメインの作成とDNSサーバーの設定~Michio Koyama
 
Active Directoryドメインを作る準備 ~AD DSとDNSサーバーのインストール~
Active Directoryドメインを作る準備 ~AD DSとDNSサーバーのインストール~Active Directoryドメインを作る準備 ~AD DSとDNSサーバーのインストール~
Active Directoryドメインを作る準備 ~AD DSとDNSサーバーのインストール~Michio Koyama
 
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~Michio Koyama
 
Active Directoryに公開したプリンタを解除
Active Directoryに公開したプリンタを解除Active Directoryに公開したプリンタを解除
Active Directoryに公開したプリンタを解除Michio Koyama
 
.NETからActive Directoryデータにアクセス ~共有フォルダ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~共有フォルダ情報の取得と表示~.NETからActive Directoryデータにアクセス ~共有フォルダ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~共有フォルダ情報の取得と表示~Michio Koyama
 
Move the added printer to specific OU
Move the added printer to specific OUMove the added printer to specific OU
Move the added printer to specific OUMichio Koyama
 
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~Michio Koyama
 
Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"Michio Koyama
 
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~Michio Koyama
 
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~Michio Koyama
 
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~Michio Koyama
 
.NETからActive Directoryにアクセス
.NETからActive Directoryにアクセス.NETからActive Directoryにアクセス
.NETからActive DirectoryにアクセスMichio Koyama
 

More from Michio Koyama (15)

Active Directoryドメインを作ってみよう ~ユーザーやグループの作成とPCのドメイン参加~
Active Directoryドメインを作ってみよう ~ユーザーやグループの作成とPCのドメイン参加~Active Directoryドメインを作ってみよう ~ユーザーやグループの作成とPCのドメイン参加~
Active Directoryドメインを作ってみよう ~ユーザーやグループの作成とPCのドメイン参加~
 
Active Directory DomainのGroup ~スコープと種類、所属可能なグループとメンバー~
Active Directory DomainのGroup ~スコープと種類、所属可能なグループとメンバー~Active Directory DomainのGroup ~スコープと種類、所属可能なグループとメンバー~
Active Directory DomainのGroup ~スコープと種類、所属可能なグループとメンバー~
 
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
Active DirectoryでDHCPを使う ~DHCPサーバーとクライアントの設定~
 
Active Directoryドメインを作ってみよう ~ドメインの作成とDNSサーバーの設定~
Active Directoryドメインを作ってみよう ~ドメインの作成とDNSサーバーの設定~Active Directoryドメインを作ってみよう ~ドメインの作成とDNSサーバーの設定~
Active Directoryドメインを作ってみよう ~ドメインの作成とDNSサーバーの設定~
 
Active Directoryドメインを作る準備 ~AD DSとDNSサーバーのインストール~
Active Directoryドメインを作る準備 ~AD DSとDNSサーバーのインストール~Active Directoryドメインを作る準備 ~AD DSとDNSサーバーのインストール~
Active Directoryドメインを作る準備 ~AD DSとDNSサーバーのインストール~
 
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
 
Active Directoryに公開したプリンタを解除
Active Directoryに公開したプリンタを解除Active Directoryに公開したプリンタを解除
Active Directoryに公開したプリンタを解除
 
.NETからActive Directoryデータにアクセス ~共有フォルダ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~共有フォルダ情報の取得と表示~.NETからActive Directoryデータにアクセス ~共有フォルダ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~共有フォルダ情報の取得と表示~
 
Move the added printer to specific OU
Move the added printer to specific OUMove the added printer to specific OU
Move the added printer to specific OU
 
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
 
Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"
 
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
 
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
 
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
 
.NETからActive Directoryにアクセス
.NETからActive Directoryにアクセス.NETからActive Directoryにアクセス
.NETからActive Directoryにアクセス
 

Recently uploaded

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 

Recently uploaded (9)

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 

Active Directory Security Descriptor ADSI - .Net