K8s 감사
개요
- k8s Auditing, k8s Audit
- k8s 감사하기, k8s 감사
- k8s 클러스터 내에서 발생하는 이벤트를 추적하고 기록하는 기능
- API 서버에 들어오는 요청(request)과 그 결과(response)를 감사 로그로 남겨, 보안 모니터링·문제 추적·규정 준수(Compliance)에 활용할 수 있다.
- 감사는 kube-apiserver의 기능으로 동작하며, 정책(Policy)과 백엔드(Backend) 구성에 따라 어떤 이벤트를 기록하고 어디에 저장할지 결정된다.
동작 원리
- 사용자가 API 요청을 보낸다.
- API 서버는 요청을 처리하기 전, 처리 중, 처리 후 단계(stage)에서 감사 이벤트를 생성한다.
- 이벤트는 감사 정책(Audit Policy)에 정의된 규칙과 일치 여부를 평가받는다.
- 일치하는 규칙에 따라 감사 레벨이 결정되고, 지정된 감사 백엔드로 전달된다.
감사 단계 (Audit Stage)
- RequestReceived – API 서버가 요청을 처음 수신했을 때
- ResponseStarted – 응답 헤더를 클라이언트로 전송했을 때 (스트리밍 응답에 사용)
- ResponseComplete – 요청 처리가 완료되어 전체 응답을 전송했을 때
- Panic – 요청 처리 중 예외(panic)가 발생했을 때
감사 정책 (Audit Policy)
- 어떤 이벤트를 기록할지 정의하는 규칙 집합이다.
- audit.k8s.io API 그룹에서
Policy 오브젝트 형태로 정의된다.
- 규칙에 따라 None, Metadata, Request, RequestResponse 레벨 중 하나로 로그 기록 수준이 결정된다.
- 자세한 내용은 K8s Audit Policy 문서를 참고.
감사 백엔드 (Audit Backend)
- 감사 이벤트를 저장하거나 전송하는 구성 요소
- 기본적으로 두 가지 백엔드를 지원한다:
- Log backend – 파일로 감사 이벤트를 기록
- Webhook backend – 외부 HTTP 엔드포인트로 감사 이벤트를 전송
- 필요에 따라 두 백엔드를 함께 사용할 수 있다.
구성
- kube-apiserver 실행 시 다음 플래그를 통해 감사 기능을 활성화한다:
--audit-policy-file: 감사 정책 파일 지정
--audit-log-path: 감사 로그 파일 경로 지정
--audit-webhook-config-file: 감사 이벤트를 전송할 웹훅 설정 지정
- 정책 파일이 없으면 감사 이벤트는 기록되지 않는다.
활용 사례
- 보안 사고 발생 시 요청 내역 추적
- 사용자·서비스 계정의 리소스 접근 행위 모니터링
- 민감 리소스(Secret, ConfigMap 등)에 대한 변경 기록 수집
- 규제 준수를 위한 운영 감사 로그 확보
같이 보기
참고