セキュリティ識別子
セキュリティ識別子 (SID) は、トラスティを識別するために使用される可変長の一意の値です。 各アカウントには、Windows ドメイン コントローラーなどの機関によって発行され、セキュリティ データベースに格納された一意の SID があります。 ユーザーがログオンするたびに、システムはそのユーザーの SID をデータベースから取得し、そのユーザーの アクセス トークン に配置します。 システムは、アクセス トークン内の SID を使用して、以降のすべての Windows セキュリティとの対話でユーザーを識別します。 SID がユーザーまたはグループの一意識別子として使用されている場合、別のユーザーまたはグループを識別するために SID を再度使用することはできません。
Windows セキュリティでは、次のセキュリティ要素で SID が使用されます。
- セキュリティ記述子では、オブジェクトとプライマリ グループの所有者を識別
- アクセス制御エントリで、アクセスが許可、拒否、または監査されるトラスティを識別します
- アクセス トークンで、ユーザーとユーザーが属するグループを識別します
特定のユーザーとグループに割り当てられた一意に作成されたドメイン固有の SID に加えて、汎用グループと汎用ユーザーを識別する既知の SID があります。 たとえば、よく知られている SID である Everyone と World は、すべてのユーザーを含むグループを識別します。
ほとんどのアプリケーションは SID を操作する必要はありません。 既知の SID の名前は異なる可能性があるため、既知の SID の名前を使用するのではなく、定義済みの定数から SID を構築する関数を使用する必要があります。 たとえば、米国英語バージョンの Windows オペレーティング システムには、"BUILTIN\Administrators" という名前の既知の SID があり、国際バージョンのシステムでは別の名前を持つ可能性があります。 既知の SID を構築する例については、「C++でのアクセス トークンでの SID の検索」を参照してください。
SID を操作する必要がある場合は、直接操作しないでください。 代わりに、次の関数を使用します。
機能 | 形容 |
---|---|
AllocateAndInitializeSidの | 指定した数のサブ認証を使用して SID を割り当てて初期化します。 |
ConvertSidToStringSid | SID を表示、ストレージ、またはトランスポートに適した文字列形式に変換します。 |
ConvertStringSidToSid | 文字列形式の SID を有効な機能 SID に変換します。 |
CopySid | ソース SID をバッファーにコピーします。 |
EqualPrefixSidをする | 2 つの SID プレフィックス値が等しいかどうかをテストします。 SID プレフィックスは、最後のサブ認証値を除く SID 全体です。 |
EqualSidの | 2 つの SID の等価性をテストします。 等しいと見なされるためには、完全に一致する必要があります。 |
FreeSidをする | AllocateAndInitializeSid 関数を使用して、以前に割り当てられた SID を解放します。 |
GetLengthSidをする | SID の長さを取得します。 |
GetSidIdentifierAuthorityの | SID の識別子機関へのポインターを取得します。 |
GetSidLengthRequiredの | 指定した数のサブ認証を持つ SID を格納するために必要なバッファーのサイズを取得します。 |
GetSidSubAuthorityの | SID 内の指定されたサブ認証へのポインターを取得します。 |
GetSidSubAuthorityCountをする | SID 内のサブ認証の数を取得します。 |
InitializeSidの | SID 構造体を初期化します。 |
IsValidSidの | リビジョン番号が既知の範囲内にあり、サブ認証の数が最大値より少ないことを確認して、SID の有効性をテストします。 |
LookupAccountNameの | 指定したアカウント名に対応する SID を取得します。 |
LookupAccountSidの | 指定した SID に対応するアカウント名を取得します。 |