Hatena::Groupmoti

セキュリティプリンシパル

セキュリティプリンシパル

.

同意語

  • Security Principal

意味

アクセス権を付与でき、認証を受けられるあらゆるオブジェクトを指す。

Kerberos5 で使用される「プリンシパル」と大体同じ意味合いと思われる。

具体的には、Windows

  • ユーザ
  • グループ (セキュリティグループ)
  • コンピュータ
  • サービス

セキュリティプリンシパルに該当する。

Windows の場合、セキュリティプリンシパルには識別のための SID *1が発行される。これにより、個々の識別が行われ、認証を受けることが出来る。

特定のファイルに対してアクセス制限を行う場合、上記の

セキュリティプリンシパルに対してのみアクセス許可/拒否エントリーを設定出来る。


余談

Windows の場合、セキュリティプリンシパルには識別のための SID *2が発行される。

しかし、セキュリティプリンシパルには「サービス」が含まれるにも関わらず、

Windows のサービスは SID を持たない。(Windows XP 以前の場合。詳細は後述)

ではどうやって認証を受けるのかと言うと、サービス自身の SID の代わりに、サービス(プロセス)を開始させたユーザの SID を使用している。

サービスがリソース(ファイル)にアクセスする際は、そのサービスを開始させたユーザーの権限を使用する。

(この辺りは Apache が www-data アカウントで動作する点と同じと思って良いはず)

f:id:khak:20081229233015p:image:w350

↑ RPC サービスが NT AUthority¥NetworkService アカウントの権限で動作する設定。


これに限らず、プロセス(スレッド)は実行したユーザのセキュリティコンテキストで動作する。



余談2

Windows Server 2008、Windows Vista には Service Hardening という機能が追加されており、サービスにも SID が発行される。


Windows と C++: Windows サービスの機能強化

Windows Vista では、アクセス制御リスト (ACL) 内で使用できるサービス セキュリティ識別子 (SID) を導入することによって、この問題を解決しています。この識別子を使用すると、特定のサービスアカウントだけでなく、特定のサービスにもアクセス許可を設定できます。Windows Vista と Windows Server 2008 の各サービスには、そのサービスを識別するための SID が割り当てられています。この SID は、アクセス制御エディタ内や、セキュリティ記述子を指定するほぼすべての場所で使用できます


最小限の特権: アプリケーションで Windows Vista のユーザー アカウント制御を有効に活用する

また、サービスには適用可能なセキュリティ識別子 (SID) を含めることができます。SID を使用してリソースのセキュリティを保護することで、そのサービスのみがリソースに書き込むことができるようになります。サービスからネットワークにアクセスしないようにもできます。

*1:Security IDentifier : セキュリティ識別子

*2:Security IDentifier : セキュリティ識別子