4.10. Kata エージェントポリシーのカスタマイズ
Kata Agent ポリシーをカスタマイズして、permissive のデフォルトポリシーをオーバーライドできます。Kata エージェントポリシーは、ピア Pod の API リクエストを制御するセキュリティーメカニズムです。
実稼働環境ではデフォルトのポリシーをオーバーライドする必要があります。
最低限の要件として、クラスター管理者がピア Pod で oc exec コマンドを実行して機密データにアクセスするのを防ぐために、ExecProcessRequest を無効にする必要があります。
コントロールプレーンが信頼できる環境など、セキュリティーが問題にならない開発環境やテスト環境では、デフォルトポリシーを使用できます。
カスタムポリシーは、デフォルトのポリシーを完全に置き換えます。特定の API を変更するには、完全なポリシーを含め、関連するルールを調整します。
手順
デフォルトのポリシーを変更して、カスタム
policy.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