설명
감사 정책은 어떤 Kubernetes API 호출을 어떤 수준으로 기록할지 정합니다. 주요 리소스와 관리 작업이 적절히 포함되지 않으면 조사에 필요한 기록을 놓칠 수 있습니다. 반대로 Request나 RequestResponse는 요청·응답 본문에 민감한 값을 남길 수 있습니다.
규칙은 순서대로 평가되며 처음 일치하는 규칙이 적용됩니다. 리소스 이름뿐 아니라 API 그룹, 사용자·동작 범위와 앞선 규칙도 함께 검토해야 합니다.
잠재적 영향
- 중요한 API 호출이 기록되지 않아 누가 어떤 작업을 했는지 추적하기 어려울 수 있습니다.
- 과도한 본문 기록으로 비밀정보가 감사 로그에 노출될 수 있습니다.
해결 방법
- secrets, configmaps와 tokenreviews 같은 민감한 리소스는 본문을 남기지 않는 Metadata 수준을 검토하세요. pods, deployments와 exec·portforward·proxy 작업도 필요한 범위와 수준을 지정하세요.
- 정책 파일과 감사 백엔드를 구성하고 실제 요청으로 기록을 확인하세요. 로그 접근·보존 권한을 제한하며, 상세 본문 수준을 사용할 때는 민감 정보와 추가 저장량을 점검하세요.
예시
설정 비교용 감사 정책입니다. 변경 전의 빈 rules는 유효한 감사 정책이 아닙니다. 변경 후도 나열되지 않은 요청을 기록하지 않으므로 전체 정책 요구를 별도로 검토하세요.
변경 전
yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules: []
규칙이 없어 정책 로딩이 거부될 수 있습니다. 단순히 기록이 적은 유효한 정책으로 사용하면 안 됩니다.
변경 후
yaml
apiVersion: audit.k8s.io/v1
kind: Policy
omitStages:
- RequestReceived
rules:
- level: Metadata
resources:
- group: ""
resources: ["secrets", "configmaps"]
- group: "authentication.k8s.io"
resources: ["tokenreviews"]
- level: Metadata
resources:
- group: ""
resources: ["pods"]
- group: "apps"
resources: ["deployments"]
- level: RequestResponse
resources:
- group: ""
resources: ["pods/exec", "pods/portforward", "pods/proxy", "services/proxy"]
tokenreviews는 authentication.k8s.io, deployments는 apps 그룹으로 지정합니다. 민감 리소스는 Metadata로, 일부 관리 작업은 RequestResponse로 기록하며 이 설정이 exec 세션 입출력 전체를 녹화하는 것은 아닙니다.