設定 Seccomp 設定檔,確保 Pod 安全

本文說明如何為 Apigee Hybrid Pod 設定 Kubernetes Seccomp (安全運算模式) 設定檔,限制容器可進行的系統呼叫 (syscall),以提升安全性。

關於 Kubernetes 中的 Seccomp 設定檔

Seccomp 是 Linux 核心安全功能,可限制程序可發出的系統呼叫。搭配 Kubernetes 使用時,您可以將 Seccomp 設定檔套用至 Pod 的 securityContext,限制容器可用的系統呼叫。這有助於縮小容器的攻擊面,並透過強制執行最小權限原則,降低容器突破或提權的風險。

如要進一步瞭解 Kubernetes 中的 Seccomp,請參閱 Kubernetes 說明文件中的「安全運算 (Seccomp)」。

在混合式環境中,Seccomp 設定檔預設不會啟用。如要將 Seccomp 設定檔套用至混合元件,請將 seccompProfile 物件新增至 overrides.yaml 檔案。

設定 Seccomp 設定檔

您可以在 overrides.yaml 檔案中新增 securityContext.seccompProfile 設定區塊,即可全域、依環境或依元件套用 Seccomp 設定檔。hybrid 支援下列 Seccomp 設定檔類型:

  • RuntimeDefault:容器執行階段指定的預設設定檔。建議採用這個選項,因為這能提供合理的安全性,同時維持大多數工作負載的相容性。
  • Unconfined:不會對 Pod 套用任何 Seccomp 限制。這是安全性最低的選項,請謹慎使用。

設定優先順序

您可以在 overrides.yaml 的下列層級設定 seccompProfile。元件層級設定的優先順序高於環境層級設定,環境層級設定的優先順序則高於全域設定:

  1. 元件層級:適用於特定元件 (例如 runtime 或 cassandra)。
  2. 環境層級:除非在元件層級覆寫,否則會套用至 envs[] 陣列中定義的特定環境內所有元件。
  3. 全域層級:除非在環境或元件層級遭到覆寫,否則會套用至叢集中的所有元件。

範例

全域設定

如要將 RuntimeDefault Seccomp 設定檔套用至所有沒有環境或元件層級覆寫的元件,請在 overrides.yaml 的頂層新增下列項目:

securityContext:
  seccompProfile:
    type: RuntimeDefault

環境設定

如要將 RuntimeDefault Seccomp 設定檔套用至特定環境中的所有元件,請在 envs[] 元素下方新增設定:

envs:
  - name: "my-environment"
    securityContext:
      seccompProfile:
        type: RuntimeDefault
    ...

元件設定

如要將 RuntimeDefault Seccomp 設定檔套用至特定元件 (例如執行階段元件),請在該元件下方新增設定:

runtime:
  securityContext:
    seccompProfile:
      type: RuntimeDefault
...