跳至內容

常見問題集: Amazon EKS Pod 中的 Pod 安全標準和 Pod 安全准入

2 分的閱讀內容
0

我對於 Amazon Elastic Kubernetes Service (Amazon EKS) Pod 中的 Pod 安全標準和 Pod 安全准入有一些疑問。

**問:**如何為 Amazon EKS 叢集開啟或關閉 Pod 安全標準與 Pod 安全准入?

預設情況下,Kubernetes 1.23 版本及更新版本會在叢集層級,啟用所有針對特殊權限 Pod 安全標準設定檔的 Pod 安全准入模式。Pod 安全准入允許在所有命名空間中部署或使用具特殊權限 Pod 安全標準設定檔的部署或 Pod。

**問:**如何在 Kubernetes 命名空間層級套用特定的 Pod 安全准入模式和 Pod 安全標準設定檔?

若要在 Kubernetes 命名空間層級套用特定的 Pod 安全准入模式和 Pod 安全標準設定檔,請設定命名空間標籤。

例如,執行以下命令,將 enforce (強制) 模式的 Baseline (基準) Pod 安全標準套用到單一命名空間:

kubectl label --overwrite ns test-namespace pod-security.kubernetes.io/enforce=baseline

或者,執行以下命令,將 enforce (強制) 模式的 Baseline (基準) Pod 安全標準套用到所有可用的命名空間:

kubectl label --overwrite ns --all pod-security.kubernetes.io/enforce=baseline

**注意:**將 test-namespace 替換為您的命名空間名稱,將 enforce 替換為您的 Pod 安全准入模式,並將 baseline 替換為您的 Pod 安全標準政策設定檔。如需更多資訊,請參閱 Kubernetes 官方網站上的命名空間的 Pod 安全准入標籤Pod 安全標準

**問:**當我修改命名空間以使用更嚴格的 Pod 安全標準設定檔時,是否會影響該命名空間內現有 Pod 的功能?

不會。若您將已有 Pod 的命名空間修改為使用 audit (稽核) 或 warn (警告) 模式,您會在終端上收到訊息。您也可以在 Pod YAML 輸出的 status.message 區段中看到該訊息。如果您將命名空間修改為使用 enforce (強制) 模式,Kubernetes 不會刪除該命名空間內現有的 Pod。但是,您會收到類似以下範例的訊息:

「Warning: existing pods in namespace "policy-test" violate the new PodSecurity enforce level "restricted:latest"」

「Warning: test-688f68dc87-htm8x: allowPrivilegeEscalation != false, unrestricted capabilities, runAsNonRoot != true, seccompProfilenamespace/policy-test configured」

Pod YAML 輸出中 enforce (強制) 模式訊息範例:

lastTransitionTime: "2022-11-24T05:10:49Z"
lastUpdateTime: "2022-11-24T05:10:49Z"
message: 'pods "test-67d5fc995b-8r9t2" is forbidden: violates PodSecurity "baseline:latest": privileged (container "assets" must not set securityContext.privileged=true)'
reason: FailedCreate
status: "True"
type: ReplicaFailure

如果 Pod 不符合命名空間的 Pod 安全標準設定檔政策或 Pod 安全准入模式,請更新其部署清單。

**問:**如何自訂 Pod 安全准入控制器在命名空間層級套用的 Pod 安全政策?

您無法透過 Pod 安全准入控制器直接自訂已套用的 Pod 安全政策。請改為使用驗證型准入政策來實作並強制執行您的自訂規則,或使用帶有外部程式碼的 Webhook 准入控制。

**問:**我可以對單一 Kubernetes 命名空間套用多個 Pod 安全准入模式和 Pod 安全標準設定檔嗎?

不行。不過,您可以使用標籤在任一命名空間上設定多個 Pod 安全標準檢查。

例如,以下命令會將 enforce (強制) 模式套用至 Baseline (基準) Pod 安全標準,並依最新版本將 warn (警告) 與 audit (稽核) 模式套用至 Restricted (受限) Pod 安全標準:

  kubectl label --overwrite ns test \\
  pod-security.kubernetes.io/enforce=baseline \\
  pod-security.kubernetes.io/enforce-version=latest \\
  pod-security.kubernetes.io/warn=restricted \\
  pod-security.kubernetes.io/warn-version=latest \\
  pod-security.kubernetes.io/audit=restricted \\
  pod-security.kubernetes.io/audit-version=latest

**問:**我可以在受管 Kubernetes 叢集的叢集層級套用 Pod 安全准入模式與 Pod 安全標準設定檔嗎?

不行,對於受管叢集,您只能在命名空間層級套用 Pod 安全准入模式和 Pod 安全標準設定檔。

**問:**我可以在 Amazon EKS 叢集中使用 Pod 安全准入 Webhook 嗎?

可以。您可以在 Amazon EKS 叢集中安裝 Pod 安全准入 Webhook。如需更多資訊,請參閱 GitHub 網站上的 Pod 安全准入 Webhook

**問:**我為什麼應該在 Amazon EKS 叢集中使用 Pod 安全准入 Webhook?

使用 Pod 安全准入 Webhook,您可以在所有 Kubernetes 命名空間中套用相同的 Pod 安全准入模式與 Pod 安全標準設定檔。您也可以排除命名空間。如果沒有 Pod 安全准入 Webhook,您必須在各個命名空間層級套用變更。

AWS 官方已更新 2 個月前