第11章 LocalSubjectAccessReview [authorization.k8s.io/v1]
- 説明
- LocalSubjectAccessReview は、ユーザーまたはグループが特定の namespace でアクションを実行できるかどうかを確認します。namespace のスコープ指定されたリソースがあると、パーミッションチェックを含む namespace のスコープ指定されたポリシーの付与がはるかに容易になります。
- 型
-
object
- 必須
-
spec
-
11.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 の正確に 1 つを設定する必要があります |
|
| SubjectAccessReviewStatus |
11.1.1. .spec
- 説明
- SubjectAccessReviewSpec は、アクセス要求の説明です。ResourceAuthorizationAttributes と NonResourceAuthorizationAttributes の正確に 1 つを設定する必要があります
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| Extra は、オーセンティケーターの user.Info.GetExtra () メソッドに対応します。それは承認者に入力されるので、ここで反映する必要があります。 |
|
| |
|
| グループは、テストしているグループです。 |
|
| NonResourceAttributes には、Authorizer インターフェイスへの非リソース要求に使用できる承認属性が含まれています |
|
| ResourceAttributes には、Authorizer インターフェイスへのリソース要求に使用できる許可属性が含まれています |
|
| 要求しているユーザーに関する UID 情報。 |
|
| ユーザーは、テストしているユーザーです。"User" を指定し、"Groups" を指定しなかった場合、それは「User がどのグループにも所属していなかったらどうなるか」という意味になります。 |
11.1.2. .spec.extra
- 説明
- Extra は、オーセンティケーターの user.Info.GetExtra () メソッドに対応します。それは承認者に入力されるので、ここで反映する必要があります。
- 型
-
object
11.1.3. .spec.nonResourceAttributes
- 説明
- NonResourceAttributes には、Authorizer インターフェイスへの非リソース要求に使用できる承認属性が含まれています
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| パスはリクエストの URL パスです |
|
| 動詞は標準の HTTP 動詞です |
11.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 がなく、要件もない場合に、リクエストは制限されません。* rawSelector が存在し、要件が空の場合、rawSelector は解析され、解析が成功するとこれは制限されます。* rawSelector が空で要件が存在する場合、要件が優先される必要があります。* rawSelector が存在し、要件が存在する場合、リクエストは無効です。 |
|
| グループは、リソースの API グループです。"*" はすべてを意味します。 |
|
| LabelSelectorAttributes は、アクセスが制限されたラベルを示します。Webhook の作成者は、次の点に注意してください。* rawSelector と requirements の両方が設定されていないことを確認する * requirements フィールドが設定されている場合はそれを考慮する * rawSelector フィールドが設定されている場合は解析または考慮を試みない。これは、別の CVE-2022-2880 を回避するためです (異なるシステム間でクエリーの解析方法を統一するのは望ましくありません)。詳細は、https://www.oxeye.io/resources/golang-parameter-smuggling-attack を参照してください。kube-apiserver の *SubjectAccessReview エンドポイントの場合: * rawSelector がなく、要件もない場合に、リクエストは制限されません。* rawSelector が存在し、要件が空の場合、rawSelector は解析され、解析が成功するとこれは制限されます。* rawSelector が空で要件が存在する場合、要件が優先される必要があります。* rawSelector が存在し、要件が存在する場合、リクエストは無効です。 |
|
| 名前は、"取得" のために要求されているリソース、または "削除" のために削除されているリソースの名前です。"" (空) はすべてを意味します。 |
|
| namespace は、要求されているアクションの namespace です。現在、名前空間なしとすべての名前空間の区別はありません ""(空) は LocalSubjectAccessReviews のデフォルトです ""(空) はクラスタースコープのリソースでは空です ""(空) は SubjectAccessReview からの名前空間スコープのリソースの " すべて " を意味します SelfSubjectAccessReview |
|
| リソースは、既存のリソースタイプの 1 つです。"*" はすべてを意味します。 |
|
| サブリソースは、既存のリソースタイプの 1 つです。"" は何もないことを意味します。 |
|
| 動詞は、get、list、watch、create、update、delete、proxy などの kubernetes リソース API 動詞です。"*" はすべてを意味します。 |
|
| バージョンは、リソースの API バージョンです。"*" はすべてを意味します。 |
11.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 が空で requirements が存在する場合、requirements が優先される必要があります。* rawSelector が存在し、requirements が存在する場合、リクエストは無効です。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| rawSelector は、クエリーパラメーターに含まれるフィールドセレクターのシリアル化です。Webhook 実装では、rawSelector を無視することが推奨されます。kube-apiserver の *SubjectAccessReview は、要件が存在しない限り、rawSelector を解析します。 |
| requirements は、フィールドセレクターの解析された解釈です。リソースインスタンスとセレクターと合致させるには、すべての要件を満たす必要があります。Webhook 実装は要件を処理する必要がありますが、それをどのように処理するかは Webhook 次第です。Requirements はリクエストを制限する役割しか持たないため、内容が理解できない場合は、無制限のリクエストとして承認しても問題ありません。 |
11.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 が空で requirements が存在する場合、requirements が優先される必要があります。* rawSelector が存在し、requirements が存在する場合、リクエストは無効です。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| rawSelector は、クエリーパラメーターに含まれるフィールドセレクターのシリアル化です。Webhook 実装では、rawSelector を無視することが推奨されます。kube-apiserver の *SubjectAccessReview は、requirements が存在しない限り、rawSelector を解析します。 |
| requirements は、ラベルセレクターを解析した結果の解釈です。リソースインスタンスがセレクターと一致するためには、requirements に含まれるすべての条件が適用される必要があります。Webhook 実装は要件を処理する必要がありますが、それをどのように処理するかは Webhook 次第です。Requirements はリクエストを制限する役割しか持たないため、内容が理解できない場合は、無制限のリクエストとして承認しても問題ありません。 |
11.1.7. .status
- 説明
- SubjectAccessReviewStatus
- 型
-
object
- 必須
-
allowed
-
プロパティー | 型 | 説明 |
---|---|---|
|
| 許可が必要です。アクションが許可される場合は true、それ以外の場合は false。 |
|
| 拒否はオプションです。アクションが拒否される場合は true、それ以外の場合は false。許可されたものと拒否されたものの両方が false である場合、承認者はアクションを承認するかどうかについて意見を持っていません。許可が true の場合、拒否は true ではない可能性があります。 |
|
| EvaluationError は、許可チェック中にエラーが発生したことを示します。エラーが発生し、それにもかかわらず許可ステータスを判別し続けることは完全に可能です。たとえば、RBAC にロールがない可能性がありますが、十分なロールがまだ存在しており、要求の理由に拘束されています。 |
|
| 理由はオプションです。リクエストが許可または拒否された理由を示します。 |