모든 이벤트를 기록하면 로그가 과다 생성될 수 있음.
특정 이벤트만 기록하도록 감사 정책(Audit Policy) 객체를 생성.
💡 정책 객체 예제 (특정 네임스페이스에서 Pod 삭제 이벤트만 기록)
apiVersion: audit.k8s.io/v1
kind: Policy
omitStages:
- "RequestReceived" # 요청 수신 이벤트는 제외
rules:
- level: Metadata # 메타데이터만 기록
namespaces: ["prod"] # prod 네임스페이스 대상
verbs: ["delete"] # delete 요청만 감사
resources:
- group: "" # Core API 그룹 (v1)
resources: ["pods"]
기본적으로 Kubernetes에서 감사 기능이 비활성화됨.
활성화하려면 API 서버에 감사 백엔드(Audit Backend) 설정 필요.
백엔드 유형
로그 백엔드: 마스터 노드의 파일에 감사 이벤트 저장.
웹훅(Webhook) 백엔드: Falco 등 외부 시스템으로 전송.
💡 로그 백엔드 설정 예제
kube-apiserver
실행 명령어에 감사 옵션 추가:--audit-log-path=/var/log/ka-audit.log # 감사 로그 파일 저장 위치
--audit-policy-file=/etc/kubernetes/audit-policy.yaml # 정책 파일 경로
--audit-log-maxage=10 # 로그 보관 기간 (10일)
--audit-log-maxbackup=5 # 최대 백업 파일 수
--audit-log-maxsize=100 # 최대 파일 크기 (MB)
kube-apiserver
가 정적 Pod으로 실행될 경우, Pod 정의 파일 수정 후 재시작.prod
네임스페이스에서 webapp-pod
삭제 실행:kubectl delete pod webapp-pod -n prod
cat /var/log/ka-audit.log | grep webapp-pod