セキュリティ識別子

セキュリティ識別子 (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 に対応するアカウント名を取得します。