5.7. Kata 에이전트 정책 사용자 정의
Kata 에이전트 정책을 사용자 지정하여 피어 pod에 대해 허용되는 기본 정책을 재정의할 수 있습니다. Kata 에이전트 정책은 피어 pod에 대한 API 요청을 제어하는 보안 메커니즘입니다.
프로덕션 환경에서 기본 정책을 재정의해야 합니다.
최소 요구 사항은 클러스터 관리자가 피어 포드에서 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