SubjectAccessReview

SubjectAccessReview 用於檢查使用者或組是否可以執行某個操作。

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

SubjectAccessReview

SubjectAccessReview 用於檢查使用者或組是否可以執行某個操作。


SubjectAccessReviewSpec

SubjectAccessReviewSpec 是訪問請求的描述。必須設定 ResourceAuthorizationAttributes 和 NonResourceAuthorizationAttributes 中的一個,且僅一個。


  • extra (map[string][]string)

    Extra 對應 authenticator 的 User.Info.GetExtra() 方法。由於這是授權器的輸入,因此需要在此處進行反射。

  • groups ([]string)

    原子性:在合併期間將被替換

    Groups 是您正在測試的組。

  • nonResourceAttributes (NonResourceAttributes)

    NonResourceAttributes 描述了非資源訪問請求的資訊。

    NonResourceAttributes 包括授權器介面的非資源請求的授權屬性

    • nonResourceAttributes.path (string)

      Path 是請求的 URL 路徑。

    • nonResourceAttributes.verb (string)

      Verb 是標準的 HTTP 動詞。

  • resourceAttributes (ResourceAttributes)

    ResourceAuthorizationAttributes 描述了資源訪問請求的資訊。

    ResourceAttributes 包括授權器介面的資源請求的授權屬性

    • resourceAttributes.fieldSelector (FieldSelectorAttributes)

      fieldSelector 描述了基於欄位的訪問限制。它只能限制訪問,不能擴大訪問範圍。

      *FieldSelectorAttributes 指示了基於欄位的有限訪問。鼓勵 Webhook 作者 * 確保 rawSelector 和 requirements 不會同時設定 * 如果設定了 requirements,請考慮 requirements 欄位 * 如果設定了 rawSelector,則不嘗試解析或考慮 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 也存在,則請求無效。*

      • resourceAttributes.fieldSelector.rawSelector (string)

        rawSelector 是將包含在查詢引數中的欄位選擇器的序列化形式。鼓勵 Webhook 實現忽略 rawSelector。kube-apiserver 的 *SubjectAccessReview 會解析 rawSelector,只要 requirements 不存在。

      • resourceAttributes.fieldSelector.requirements ([]FieldSelectorRequirement)

        原子性:在合併期間將被替換

        requirements 是欄位選擇器的解析解釋。必須滿足所有 requirements 才能使資源例項匹配選擇器。Webhook 實現應處理 requirements,但如何處理取決於 Webhook。由於 requirements 只能限制請求,因此如果 requirements 未被理解,則可以安全地將請求授權為無限制。

        FieldSelectorRequirement 是一個包含值、鍵和關係鍵與值的運算子的選擇器。

        • resourceAttributes.fieldSelector.requirements.key (string), 必需

          key 是 requirements 應用的欄位選擇器鍵。

        • resourceAttributes.fieldSelector.requirements.operator (string), 必需

          operator 表示鍵與一組值之間的關係。有效運算子為 In、NotIn、Exists、DoesNotExist。運算子列表未來可能會增加。

        • resourceAttributes.fieldSelector.requirements.values ([]string)

          原子性:在合併期間將被替換

          values 是一個字串值陣列。如果 operator 是 In 或 NotIn,則 values 陣列必須非空。如果 operator 是 Exists 或 DoesNotExist,則 values 陣列必須為空。

    • resourceAttributes.group (string)

      Group 是資源的 API 組。'*' 表示所有。

    • resourceAttributes.labelSelector (LabelSelectorAttributes)

      labelSelector 描述了基於標籤的訪問限制。它只能限制訪問,不能擴大訪問範圍。

      *LabelSelectorAttributes 指示了基於標籤的有限訪問。鼓勵 Webhook 作者 * 確保 rawSelector 和 requirements 不會同時設定 * 如果設定了 requirements,請考慮 requirements 欄位 * 如果設定了 rawSelector,則不嘗試解析或考慮 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 也存在,則請求無效。*

      • resourceAttributes.labelSelector.rawSelector (string)

        rawSelector 是將包含在查詢引數中的欄位選擇器的序列化形式。鼓勵 Webhook 實現忽略 rawSelector。kube-apiserver 的 *SubjectAccessReview 會解析 rawSelector,只要 requirements 不存在。

      • resourceAttributes.labelSelector.requirements ([]LabelSelectorRequirement)

        原子性:在合併期間將被替換

        requirements 是標籤選擇器的解析解釋。必須滿足所有 requirements 才能使資源例項匹配選擇器。Webhook 實現應處理 requirements,但如何處理取決於 Webhook。由於 requirements 只能限制請求,因此如果 requirements 未被理解,則可以安全地將請求授權為無限制。

        標籤選擇器 requirement 是一個包含值、鍵和關係鍵與值的運算子的選擇器。

        • resourceAttributes.labelSelector.requirements.key (string), 必需

          key 是選擇器適用的標籤鍵。

        • resourceAttributes.labelSelector.requirements.operator (string), 必需

          operator 表示鍵與一組值之間的關係。有效運算子為 In、NotIn、Exists 和 DoesNotExist。

        • resourceAttributes.labelSelector.requirements.values ([]string)

          原子性:在合併期間將被替換

          values 是一個字串值陣列。如果 operator 是 In 或 NotIn,則 values 陣列必須非空。如果 operator 是 Exists 或 DoesNotExist,則 values 陣列必須為空。此陣列在戰略合併補丁期間被替換。

    • resourceAttributes.name (string)

      Name 是請求的資源的名稱,用於“get”或“delete”操作。 ""(空字串)表示所有。

    • resourceAttributes.namespace (string)

      Namespace 是請求的操作所在的名稱空間。目前,沒有區分“無名稱空間”和“所有名稱空間”。""(空字串)是 LocalSubjectAccessReviews 的預設值。""(空字串)是叢集範圍資源的預設值。""(空字串)對於 SubjectAccessReview 或 SelfSubjectAccessReview 中面向名稱空間範圍的資源意味著“所有”。

    • resourceAttributes.resource (string)

      Resource 是現有的資源型別之一。'*' 表示所有。

    • resourceAttributes.subresource (string)

      Subresource 是現有的子資源型別之一。"" 表示無。

    • resourceAttributes.verb (string)

      Verb 是 Kubernetes 資源 API 動詞,例如:get、list、watch、create、update、delete、proxy。'*' 表示所有。

    • resourceAttributes.version (string)

      Version 是資源的 API 版本。'*' 表示所有。

  • uid (string)

    關於請求使用者的 UID 資訊。

  • user (string)

    User 是您正在測試的使用者。如果您指定了“User”但未指定“Groups”,則解釋為“如果 User 不屬於任何組,會怎樣?”

SubjectAccessReviewStatus

SubjectAccessReviewStatus


  • allowed (boolean), 必需

    Allowed 是必需的。如果操作被允許,則為 true,否則為 false。

  • denied (boolean)

    Denied 是可選的。如果操作被拒絕,則為 true,否則為 false。如果 allowed 為 false 且 denied 也為 false,則授權器對是否授權該操作沒有意見。如果 allowed 為 true,則 denied 不能為 true。

  • evaluationError (string)

    EvaluationError 指示在授權檢查期間發生了某種錯誤。即使發生錯誤,仍然可以繼續確定授權狀態。例如,RBAC 可能缺少一個角色,但仍然存在足夠數量的角色並已繫結,足以對請求進行推理。

  • reason (string)

    Reason 是可選的。它指出了請求被允許或被拒絕的原因。

操作


create 建立一個 SubjectAccessReview

HTTP 請求

POST /apis/authorization.k8s.io/v1/subjectaccessreviews

引數

響應

200 (SubjectAccessReview): 成功

201 (SubjectAccessReview): 已建立

202 (SubjectAccessReview): 已接受

401: 未授權

本頁面是自動生成的。

如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。

上次修改時間:2025 年 9 月 4 日 下午 3:37 PST:更新 v1.34 的 API 資源參考 (3e10e8c195)