第14章 SubjectAccessReview [authorization.k8s.io/v1]
- 説明
- SubjectAccessReview は、ユーザーまたはグループがアクションを実行できるかどうかをチェックします。
- 型
-
object
- 必須
-
spec
-
14.1. 仕様
プロパティー | 型 | 説明 |
---|---|---|
|
| apiVersion はオブジェクトのこの表現のバージョンスキーマを定義します。サーバーは認識されたスキーマを最新の内部値に変換し、認識されない値は拒否することがあります。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources を参照してください。 |
|
| kind はこのオブジェクトが表す REST リソースを表す文字列の値です。サーバーはクライアントが要求を送信するエンドポイントからこれを推測できる場合があります。これは更新できません。CamelCase を使用します。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds を参照してください。 |
| 標準のリストメタデータ。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata を参照してください。 | |
|
| SubjectAccessReviewSpec は、アクセス要求の説明です。ResourceAuthorizationAttributes と NonResourceAuthorizationAttributes のいずれかを設定する必要があります。 |
|
| SubjectAccessReviewStatus |
14.1.1. .spec
- 説明
- SubjectAccessReviewSpec は、アクセス要求の説明です。ResourceAuthorizationAttributes と NonResourceAuthorizationAttributes のいずれかを設定する必要があります。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| extra は、オーセンティケーターの user.Info.GetExtra() メソッドに対応します。これは Authorizer に入力されるため、ここで反映する必要があります。 |
|
| |
|
| groups は、テストしているグループです。 |
|
| nonResourceAttributes には、Authorizer インターフェイスへの非リソース要求に使用できる許可属性が含まれています。 |
|
| resourceAttributes には、Authorizer インターフェイスへのリソース要求に使用できる許可属性が含まれています。 |
|
| 要求しているユーザーに関する UID 情報。 |
|
| user は、テストしているユーザーです。"user" を指定し、"groups" を指定しない場合は、「そのユーザーがどのグループにも所属していなかったらどうなるか」という意味になります。 |
14.1.2. .spec.extra
- 説明
- extra は、オーセンティケーターの user.Info.GetExtra() メソッドに対応します。これは Authorizer に入力されるため、ここで反映する必要があります。
- 型
-
object
14.1.3. .spec.nonResourceAttributes
- 説明
- nonResourceAttributes には、Authorizer インターフェイスへの非リソース要求に使用できる許可属性が含まれています。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| path はリクエストの URL パスです。 |
|
| verb は標準の HTTP 動詞です。 |
14.1.4. .spec.resourceAttributes
- 説明
- resourceAttributes には、Authorizer インターフェイスへのリソース要求に使用できる許可属性が含まれています。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| fieldSelectorAttributes はアクセスが制限されたフィールドを示します。Webhook の作成者は、次の点に注意してください。* rawSelector と requirements の両方が設定されていないことを確認する * requirements フィールドが設定されている場合はそれを考慮する * rawSelector フィールドが設定されている場合は解析または考慮を試みない。これは、別の CVE-2022-2880 を回避するためです (異なるシステム間でクエリーの解析方法を統一するのは望ましくありません)。詳細は、https://www.oxeye.io/resources/golang-parameter-smuggling-attack を参照してください。kube-apiserver の *SubjectAccessReview エンドポイントの場合: * rawSelector も requirements も空の場合は、リクエストが制限されません。* rawSelector が存在し、requirements が空の場合は、rawSelector が解析され、解析が成功するとこれは制限されます。* rawSelector が空で要件が存在する場合は、要件が優先される必要があります。* rawSelector が存在し、要件が存在する場合は、リクエストは無効です。 |
|
| group は、リソースの API グループです。"*" はすべてを意味します。 |
|
| labelSelectorAttributes は、アクセスが制限されたラベルを示します。Webhook の作成者は、次の点に注意してください。* rawSelector と requirements の両方が設定されていないことを確認する * requirements フィールドが設定されている場合はそれを考慮する * rawSelector フィールドが設定されている場合は解析または考慮を試みない。これは、別の CVE-2022-2880 を回避するためです (異なるシステム間でクエリーの解析方法を統一するのは望ましくありません)。詳細は、https://www.oxeye.io/resources/golang-parameter-smuggling-attack を参照してください。kube-apiserver の *SubjectAccessReview エンドポイントの場合: * rawSelector も requirements も空の場合は、リクエストが制限されません。* rawSelector が存在し、requirements が空の場合は、rawSelector が解析され、解析が成功するとこれは制限されます。* rawSelector が空で要件が存在する場合は、要件が優先される必要があります。* rawSelector が存在し、要件が存在する場合は、リクエストは無効です。 |
|
| name は、"取得" のために要求されているリソース、または "削除" のために削除されているリソースの名前です。"" (空) はすべてを意味します。 |
|
| namespace は、要求されているアクションの namespace です。現在、namespace なしとすべての namespace の区別はありません。""(空) は LocalSubjectAccessReviews のデフォルトです。""(空) はクラスタースコープのリソースでは空です。""(空) は SubjectAccessReview または SelfSubjectAccessReview からの namespace スコープのリソースの "すべて" を意味します。 |
|
| resource は、既存のリソースタイプの 1 つです。"*" はすべてを意味します。 |
|
| subresource は、既存のリソースタイプの 1 つです。"" は何もないことを意味します。 |
|
| verb は、get、list、watch、create、update、delete、proxy などの kubernetes リソース API 動詞です。"*" はすべてを意味します。 |
|
| version は、リソースの API バージョンです。"*" はすべてを意味します。 |
14.1.5. .spec.resourceAttributes.fieldSelector
- 説明
- fieldSelectorAttributes はアクセスが制限されたフィールドを示します。Webhook の作成者は、次の点に注意してください。* rawSelector と requirements の両方が設定されていないことを確認する * requirements フィールドが設定されている場合はそれを考慮する * rawSelector フィールドが設定されている場合は解析または考慮を試みない。これは、別の CVE-2022-2880 を回避するためです (異なるシステム間でクエリーの解析方法を統一するのは望ましくありません)。詳細は、https://www.oxeye.io/resources/golang-parameter-smuggling-attack を参照してください。kube-apiserver の *SubjectAccessReview エンドポイントの場合: * rawSelector も requirements も空の場合は、リクエストが制限されません。* rawSelector が存在し、requirements が空の場合は、rawSelector が解析され、解析が成功するとこれは制限されます。* rawSelector が空で要件が存在する場合は、要件が優先される必要があります。* rawSelector が存在し、要件が存在する場合は、リクエストは無効です。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| rawSelector は、クエリーパラメーターに含まれるフィールドセレクターのシリアル化です。Webhook 実装では、rawSelector を無視することが推奨されます。kube-apiserver の *SubjectAccessReview は、requirements が存在しない限り、rawSelector を解析します。 |
| requirements は、フィールドセレクターの解析された解釈です。リソースインスタンスがセレクターと一致するためには、requirements に含まれるすべての条件が適用される必要があります。Webhook 実装は要件を処理する必要がありますが、それをどのように処理するかは Webhook 次第です。Requirements はリクエストを制限する役割しか持たないため、内容が理解できない場合は、無制限のリクエストとして許可しても問題ありません。 |
14.1.6. .spec.resourceAttributes.labelSelector
- 説明
- labelSelectorAttributes は、アクセスが制限されたラベルを示します。Webhook の作成者は、次の点に注意してください。* rawSelector と requirements の両方が設定されていないことを確認する * requirements フィールドが設定されている場合はそれを考慮する * rawSelector フィールドが設定されている場合は解析または考慮を試みない。これは、別の CVE-2022-2880 を回避するためです (異なるシステム間でクエリーの解析方法を統一するのは望ましくありません)。詳細は、https://www.oxeye.io/resources/golang-parameter-smuggling-attack を参照してください。kube-apiserver の *SubjectAccessReview エンドポイントの場合: * rawSelector も requirements も空の場合は、リクエストが制限されません。* rawSelector が存在し、requirements が空の場合は、rawSelector が解析され、解析が成功するとこれは制限されます。* rawSelector が空で要件が存在する場合は、要件が優先される必要があります。* rawSelector が存在し、要件が存在する場合は、リクエストは無効です。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| rawSelector は、クエリーパラメーターに含まれるフィールドセレクターのシリアル化です。Webhook 実装では、rawSelector を無視することが推奨されます。kube-apiserver の *SubjectAccessReview は、requirements が存在しない限り、rawSelector を解析します。 |
| requirements は、ラベルセレクターを解析した結果の解釈です。リソースインスタンスがセレクターと一致するためには、requirements に含まれるすべての条件が適用される必要があります。Webhook 実装は要件を処理する必要がありますが、それをどのように処理するかは Webhook 次第です。Requirements はリクエストを制限する役割しか持たないため、内容が理解できない場合は、無制限のリクエストとして許可しても問題ありません。 |
14.1.7. .status
- 説明
- SubjectAccessReviewStatus
- 型
-
object
- 必須
-
allowed
-
プロパティー | 型 | 説明 |
---|---|---|
|
| allowed は必須です。アクションを許可する場合は true、許可しない場合は false です。 |
|
| denied はオプションです。アクションを拒否する場合は true、許可しない場合は false です。allowed と denied の両方が false の場合は、Authorizer がアクションを許可するかどうかについて意見を持っていません。allowed が true の場合は、denied が true ではない可能性があります。 |
|
| evaluationError は、認可チェック中にエラーが発生したことを示します。エラーが発生し、それにもかかわらず認可ステータスを判別し続けることはできます。たとえば、RBAC にロールがない可能性がありますが、十分なロールがまだ存在しており、要求の理由に拘束されています。 |
|
| reason はオプションです。リクエストが許可または拒否された理由を示します。 |