本文說明如何為 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 ...