Kubernetes 감사 정책의 보안 기록 범위 점검

필요한 API 활동은 기록하고 비밀정보가 본문에 남지 않도록 수준을 정하세요.

설명

감사 정책은 어떤 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 세션 입출력 전체를 녹화하는 것은 아닙니다.

참조