4.8. 自定义 Kata 代理策略
您可以自定义 Kata Agent 策略,以覆盖对等 pod 的默认策略(permissive)。Kata Agent 策略是一种安全机制,用于控制对等 pod 的 API 请求。
重要
您必须在生产环境中覆盖默认策略。
满足最低要求,您必须禁用 ExecProcessRequest,以防止集群管理员通过在对等 pod 上运行 oc exec 命令来访问敏感数据。
您可以在安全不是关注的开发和测试环境中使用默认策略,例如,在 control plane 可以被信任的环境中。
自定义策略完全替换了默认策略。要修改特定的 API,请包含完整的策略并调整相关规则。
流程
通过修改
默认策略来创建自定义策略.rego文件:package agent_policy default AddARPNeighborsRequest := true default AddSwapRequest := true default CloseStdinRequest := true default CopyFileRequest := true default CreateContainerRequest := true default CreateSandboxRequest := true default DestroySandboxRequest := true default ExecProcessRequest := true default GetMetricsRequest := true default GetOOMEventRequest := true default GuestDetailsRequest := true default ListInterfacesRequest := true default ListRoutesRequest := true default MemHotplugByProbeRequest := true default OnlineCPUMemRequest := true default PauseContainerRequest := true default PullImageRequest := true default ReadStreamRequest := false default RemoveContainerRequest := true default RemoveStaleVirtiofsShareMountsRequest := true default ReseedRandomDevRequest := true default ResumeContainerRequest := true default SetGuestDateTimeRequest := true default SetPolicyRequest := true default SignalProcessRequest := true default StartContainerRequest := true default StartTracingRequest := true default StatsContainerRequest := true default StopTracingRequest := true default TtyWinResizeRequest := true default UpdateContainerRequest := true default UpdateEphemeralMountsRequest := true default UpdateInterfaceRequest := true default UpdateRoutesRequest := true default WaitProcessRequest := true default WriteStreamRequest := true默认策略允许所有 API 调用。根据您的需要,调整
true或false值以进一步自定义策略。运行以下命令,将
policy.rego文件转换为 Base64 编码的字符串:$ base64 -w0 policy.rego记录输出。
将 Base64 编码的策略字符串添加到
my-pod.yaml清单中:apiVersion: v1 kind: Pod metadata: name: my-pod annotations: io.katacontainers.config.agent.policy: <base64_encoded_policy> spec: runtimeClassName: kata-remote containers: - name: <container_name> image: registry.access.redhat.com/ubi9/ubi:latest command: - sleep - "36000" securityContext: privileged: false seccompProfile: type: RuntimeDefault运行以下命令来创建 pod:
$ oc create -f my-pod.yaml