アクセス トークン
アクセス トークン は、プロセス またはスレッドの セキュリティ コンテキスト を記述するオブジェクトです。 トークン内の情報には、プロセスまたはスレッドに関連付けられているユーザー アカウントの ID と特権が含まれます。 ユーザーがログオンすると、システムはユーザーのパスワードをセキュリティ データベースに格納されている情報と比較して確認します。 パスワードが認証場合、システムはアクセス トークンを生成します。 このユーザーに代わって実行されるすべてのプロセスには、このアクセス トークンのコピーがあります。
システムは、アクセス トークンを使用して、スレッドがセキュリティ保護可能なオブジェクト 操作するとき、または特権を必要とするシステム タスクを実行しようとしたときに、ユーザーを識別します。 アクセス トークンには、次の情報が含まれています。
- ユーザーのアカウントの セキュリティ識別子 (SID)
- ユーザーがメンバーになっているグループの SID
- 現在の ログオン セッション を識別する ログオン SID
- ユーザーまたはユーザーのグループによって保持 特権の一覧
- 所有者 SID
- プライマリ グループの SID
- 既定の DACL、ユーザーがセキュリティ記述子を指定せずにセキュリティ保護可能なオブジェクトを作成するときに使用
- アクセス トークンのソース
- トークンが プライマリ であるか、偽装 トークンであるか
- SID を制限する の省略可能な一覧
- 現在の偽装レベル
- その他の統計
すべてのプロセスには、プロセスに関連付けられているユーザー アカウントの セキュリティ コンテキスト を記述する プライマリ トークン があります。 既定では、プロセスのスレッドがセキュリティ保護可能なオブジェクトと対話するときに、システムはプライマリ トークンを使用します。 さらに、スレッドはクライアント アカウントを偽装できます。 偽装により、スレッドはクライアントのセキュリティ コンテキストを使用してセキュリティ保護可能なオブジェクトと対話できます。 クライアントを偽装しているスレッドには、プライマリ トークンと 偽装トークンの両方が。
OpenProcessToken 関数を使用して、プロセスのプライマリ トークンへのハンドルを取得します。 OpenThreadToken 関数を使用して、スレッドの偽装トークンへのハンドルを取得します。 詳細については、「偽装 をする」を参照してください。
次の関数を使用して、アクセス トークンを操作できます。
機能 | 形容 |
---|---|
AdjustTokenGroupsをする | アクセス トークン内のグループ情報を変更します。 |
AdjustTokenPrivilegesの | アクセス トークンの権限を有効または無効にします。 新しい特権を付与したり、既存の権限を取り消したりすることはありません。 |
CheckTokenMembershipをする | 指定したアクセス トークンで、指定した SID が有効になっているかどうかを判断します。 |
CreateRestrictedTokenの | 既存のトークンの制限付きバージョンである新しいトークンを作成します。 制限付きトークンには、無効な SID、削除された特権、制限付き SID の一覧を含めることができます。 |
DuplicateTokenをする | 既存のトークンを複製する新しい偽装トークンを作成します。 |
DuplicateTokenExをする | 既存のトークンを複製する新しいプライマリ トークンまたは偽装トークンを作成します。 |
GetTokenInformationをする | トークンに関する情報を取得します。 |
IsTokenRestrictedの | トークンに制限 SID の一覧があるかどうかを判断します。 |
OpenProcessToken | プロセスのプライマリ アクセス トークンへのハンドルを取得します。 |
OpenThreadToken | スレッドの偽装アクセス トークンへのハンドルを取得します。 |
SetThreadTokenの | スレッドの偽装トークンを割り当てるか削除します。 |
SetTokenInformationの | トークンの所有者、プライマリ グループ、または既定の DACL を変更します。 |
アクセス トークン関数は、次の構造体を使用して、アクセス トークンの部分を記述します。
構造 | 形容 |
---|---|
TOKEN_CONTROL | アクセス トークンを識別する情報。 |
TOKEN_DEFAULT_DACL | スレッドによって作成された新しいオブジェクトのセキュリティ記述子でシステムが使用する既定の DACL。 |
TOKEN_GROUPS | アクセス トークン内のグループ SID の SID と属性を指定します。 |
TOKEN_OWNER | 新しいオブジェクトのセキュリティ記述子の既定の所有者 SID。 |
TOKEN_PRIMARY_GROUP | 新しいオブジェクトのセキュリティ記述子の既定のプライマリ グループ SID。 |
TOKEN_PRIVILEGES | アクセス トークンに関連付けられている特権。 また、権限が有効になっているかどうかも決定します。 |
TOKEN_SOURCE | アクセス トークンのソース。 |
TOKEN_STATISTICS | アクセス トークンに関連付けられている統計。 |
TOKEN_USER | アクセス トークンに関連付けられているユーザーの SID。 |
アクセス トークン関数は、次の列挙型を使用します。
列挙型 | 指定 |
---|---|
TOKEN_INFORMATION_CLASS | アクセス トークンから設定または取得される情報の種類を識別します。 |
TOKEN_TYPE | アクセス トークンをプライマリ トークンまたは偽装トークンとして識別します。 |