本文說明如何為 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。元件層級設定的優先順序高於環境層級設定,環境層級設定的優先順序則高於全域設定:
- 元件層級:套用至特定元件 (例如
runtime或cassandra)。 - 環境層級:套用至
envs[]陣列中定義的特定環境內所有元件,除非在元件層級遭到覆寫。 - 全域層級:除非在環境或元件層級遭到覆寫,否則這項設定會套用至叢集中的所有元件。
範例
全域設定
如要將 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 ...