K8s 감사 정책

(K8s Audit Policy에서 넘어옴)

1 개요[ | ]

k8s Audit Policy
k8s 감사 정책
  • 쿠버네티스 클러스터에서 어떤 이벤트를 기록하고, 기록 시 어떤 데이터를 포함할지를 정의하는 규칙 집합
  • audit.k8s.io API 그룹에서 Policy 오브젝트 형태로 구조가 정의되어 있으며, kube-apiserver 실행 시 --audit-policy-file 플래그를 통해 파일로 전달된다.
  • 정책이 없으면 어떠한 이벤트도 기록되지 않는다. 특히 rules 필드가 비어있는 정책은 불법(Illegal)으로 간주된다.

2 감사 레벨[ | ]

이벤트는 정의된 규칙에 따라 첫 번째로 일치하는 규칙에 의해 감사 레벨이 결정된다. 감사 레벨은 다음과 같다:

  • None – 이벤트를 기록하지 않음.
  • Metadata – 요청 메타데이터(사용자, 타임스탬프, 리소스, 동작 등)만 기록. 요청/응답 본문은 포함하지 않음.
  • Request – 요청 메타데이터와 요청 본문을 기록하되 응답 본문은 기록하지 않음. (non-resource 요청에는 적용되지 않음)
  • RequestResponse – 요청 메타데이터, 요청 본문, 응답 본문까지 기록. (non-resource 요청에는 적용되지 않음)

3 주요 필드[ | ]

  • apiVersion: audit.k8s.io/v1 (필수)
  • kind: Policy (필수)
  • omitStages: 특정 이벤트 단계(stage)를 생략할 수 있음 (예: "RequestReceived")
  • rules: 규칙 집합
    • level: 감사 레벨 지정
    • resources: API 그룹, 리소스, 서브리소스 지정
    • verbs: 동작(get, list, watch, create, update, delete 등)
    • users, userGroups: 특정 사용자 또는 그룹에 대한 규칙
    • namespaces: 네임스페이스 범위 제한
    • nonResourceURLs: /api*, /version 등 리소스가 아닌 URL 규칙

4 예시 정책[ | ]

다음은 Pod 및 ConfigMap 관련 이벤트를 세부적으로 기록하는 예시이다:

apiVersion: audit.k8s.io/v1
kind: Policy
omitStages:
  - "RequestReceived"
rules:
  - level: RequestResponse
    resources:
    - group: ""
      resources: ["pods"]
  - level: Metadata
    resources:
    - group: ""
      resources: ["pods/log", "pods/status"]
  - level: None
    resources:
    - group: ""
      resources: ["configmaps"]
      resourceNames: ["controller-leader"]

5 최소 정책[ | ]

모든 요청을 메타데이터 수준에서 기록하는 최소 정책 예시는 다음과 같다:

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata

6 같이 보기[ | ]

7 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}