アクセス トークンの SID 属性
アクセス トークン内の各ユーザーおよびグループ セキュリティ識別子 (SID) には、システムがアクセス チェックで SID を使用する方法を制御する属性のセットがあります。 次の表に、アクセス チェックを制御する属性を示します。
属性 | 説明 |
---|---|
SE_GROUP_ENABLED | この属性を持つ SID は、アクセス チェックに対して有効になっています。 システムは、アクセスチェックを実行すると、アクセス トークン内の有効な SID のいずれかに適用されるアクセス許可およびアクセス拒否アクセス制御エントリ (ACE) を確認します。 この属性を持たない SID は、SE_GROUP_USE_FOR_DENY_ONLY属性が設定されていない限り、アクセスチェック中は無視されます。 |
SE_GROUP_USE_FOR_DENY_ONLY | この属性を持つ SID は、拒否専用 SID です。 システムがアクセス チェックを実行すると、SID に適用されるアクセス拒否 ACE がチェックされますが、SID のアクセス許可 ACE は無視されます。 この属性が設定されている場合、SE_GROUP_ENABLED属性は設定されず、SID を再び有効にすることはできません。 |
グループ SID のSE_GROUP_ENABLED属性を設定またはクリアするには、 AdjustTokenGroups 関数を使用します。 SE_GROUP_MANDATORY属性を持つグループ SID を無効にすることはできません。 AdjustTokenGroups を使用してアクセス トークンのユーザー SID を無効にすることはできません。
SID がトークンで有効になっているかどうか、つまりSE_GROUP_ENABLED属性を持っているかどうかを確認するには、 CheckTokenMembership 関数を呼び出します。
SID のSE_GROUP_USE_FOR_DENY_ONLY属性を設定するには、 CreateRestrictedToken 関数を呼び出すときに指定する拒否専用 SID の一覧に SID を含めます。 CreateRestrictedToken では、SE_GROUP_USE_FOR_DENY_ONLY属性を、SE_GROUP_MANDATORY属性を持つユーザー SID やグループ SID など、任意の SID に適用できます。 ただし、SID から deny-only 属性を削除することも、 AdjustTokenGroups を使用して拒否専用 SID にSE_GROUP_ENABLED属性を設定することもできません。
SID の属性を取得するには、TokenGroups 値を使用して GetTokenInformation 関数を呼び出します。 この関数は、グループ SID とその属性を識別する SID_AND_ATTRIBUTES 構造体の配列を返します。