쿠버네티스 환경에서는 보안 이벤트를 추적하고, 클러스터 내에서 발생하는 주요 작업을 모니터링하는 것이 필수적입니다.
이를 위해 Kubernetes Audit Logging을 활성화하고, 감사 로그를 활용하여 보안 이벤트를 분석하는 방법을 다룹니다.
📌 글에서 다루는 상황들
1. Kubernetes Audit Logging을 활성화하여 보안 이벤트 추적
2. Audit 로그를 파일로 저장하고, kubectl을 활용하여 분석
3. kubectl 및 직접적인 로그 파일 조회를 활용한 감사 로그 점검 및 트러블슈팅
각 문제를 실무에서 바로 활용할 수 있도록 Manifest 템플릿과 예상 결과 값을 제공합니다.
1️⃣ Kubernetes Audit Logging을 활성화하여 보안 이벤트 추적
❓ 문제 상황
운영팀에서 관리자가 클러스터 내에서 수행하는 API 요청을 추적하고, 특정 이벤트(예: 권한 변경, 서비스 계정 생성 등)를 감시해야 합니다.
이를 위해 Audit Logging을 활성화하고, 중요 이벤트를 로그 파일에 저장해야 합니다.
• 로그 저장 위치: /var/log/kubernetes/audit.log
• 기록할 이벤트: 권한 변경, 서비스 계정 생성, 네임스페이스 변경
✅ 어떻게 해결할 수 있을까요?
🛠️ 해결 방법
1. Kube-apiserver에 감사 로깅을 활성화하는 설정을 추가합니다.
2. audit-policy.yaml을 생성하여 특정 이벤트를 필터링하여 저장합니다.
✅ 정답 Manifest (Audit Logging 설정)
🔹 kube-apiserver에 감사 로깅 활성화 (kube-apiserver.yaml 수정)
apiVersion: v1
kind: Pod
metadata:
name: kube-apiserver
namespace: kube-system
spec:
containers:
- name: kube-apiserver
command:
- kube-apiserver
- --audit-policy-file=/etc/kubernetes/audit-policy.yaml
- --audit-log-path=/var/log/kubernetes/audit.log
- --audit-log-maxage=30
- --audit-log-maxbackup=10
- --audit-log-maxsize=100
✅ 이제 API 서버에서 발생하는 이벤트가 감사 로그로 기록됨
📌 적용 후 예상 결과 값
1. kube-apiserver에서 감사 로깅 설정 확인
kubectl get pod -n kube-system | grep apiserver
💡 예상 출력 값
kube-apiserver-node1 1/1 Running 0 5m
✅ kube-apiserver가 정상적으로 실행 중이며, 감사 로그가 활성화됨
2️⃣ Audit 로그를 파일로 저장하고, kubectl을 활용하여 분석
❓ 문제 상황
운영팀에서 Audit 로그를 시스템 파일로 저장하고, 특정 이벤트를 빠르게 조회해야 합니다.
이를 위해 kubectl 및 기본 리눅스 명령어를 활용하여 감사 로그를 분석해야 합니다.
• 로그 저장 위치: /var/log/kubernetes/audit.log
• 분석 대상 이벤트: RoleBinding 변경, 서비스 계정 생성
✅ 어떻게 해결할 수 있을까요?
🛠️ 해결 방법
1. Audit 로그를 /var/log/kubernetes/audit.log에 저장하고, jq를 활용하여 JSON 형식으로 분석합니다.
2. grep 및 awk를 활용하여 특정 이벤트를 필터링합니다.
✅ Audit 로그 분석 명령어
🔹 감사 로그 파일 직접 확인
cat /var/log/kubernetes/audit.log | jq .
💡 예상 출력 값
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "Request",
"user": { "username": "admin" },
"verb": "create",
"objectRef": {
"resource": "rolebindings",
"name": "admin-binding",
"namespace": "default"
}
}
✅ RoleBinding 생성 이벤트가 정상적으로 감사 로그에 기록됨
3️⃣ kubectl 및 직접적인 로그 파일 조회를 활용한 감사 로그 점검 및 트러블슈팅
❓ 문제 상황
운영팀에서 특정 보안 이벤트(예: RoleBinding 변경, 서비스 계정 생성 등)가 감사 로그에 기록되고 있는지 확인하고, 해당 이벤트를 필터링하여 분석해야 합니다.
kubectl 및 직접적인 로그 파일 분석을 활용하여 Audit 로그에서 특정 이벤트를 검색해야 합니다.
✅ 어떻게 해결할 수 있을까요?
🛠️ 해결 방법
1. kubectl logs 및 cat 명령어를 활용하여 감사 로그를 직접 분석합니다.
2. grep 및 awk를 사용하여 특정 이벤트를 필터링합니다.
✅ 감사 로그 필터링 및 이벤트 분석 명령어
🔹 RoleBinding 변경 이벤트 검색
cat /var/log/kubernetes/audit.log | jq '. | select(.objectRef.resource=="rolebindings")'
💡 예상 출력 값
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "Request",
"user": { "username": "devops-user" },
"verb": "update",
"objectRef": {
"resource": "rolebindings",
"name": "developer-binding",
"namespace": "dev-team"
}
}
✅ RoleBinding 변경 이벤트가 감사 로그에서 검색됨
🔹 특정 사용자의 작업 내역 검색
cat /var/log/kubernetes/audit.log | jq '. | select(.user.username=="devops-user")'
💡 예상 출력 값
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "Request",
"user": { "username": "devops-user" },
"verb": "create",
"objectRef": {
"resource": "secrets",
"name": "api-token",
"namespace": "default"
}
}
✅ 특정 사용자가 수행한 작업이 감사 로그에서 검색됨