클라우드

[cks][killershell] Auditing Enable Audit Logging 실습

junkmm 2024. 7. 31. 18:58

문제

Configure the Apiserver for Audit Logging.
The log path should be /etc/kubernetes/audit-logs/audit.log on the host and inside the container.
The existing Audit Policy to use is at /etc/kubernetes/audit-policy/policy.yaml . The path should be the same on the host and inside the container.

Set argument --audit-log-maxsize=7
Set argument --audit-log-maxbackup=2
---
감사 로깅을 위해 Apiserver를 구성합니다.
로그 경로는 호스트 및 컨테이너 내부의 /etc/kubernetes/audit-logs/audit.log여야 합니다.
사용할 기존 감사 정책은 /etc/kubernetes/audit-policy/policy.yaml 에 있습니다. 경로는 호스트와 컨테이너 내부에서 동일해야 합니다.

인수 설정 --audit-log-maxsize=7
인수 설정 --audit-log-maxbackup=2

 

🟢 문제 분석하기

kube-apiserver에 audit log를 활성화 하는 문제입니다. api-server manifest에 arg 값을 조절하여 감사 로그를 활성화 하고, HostPath 볼륨을 마운트 시켜 노드의 특정 폴더에서 감사로그를 확인해볼 수 있습니다.

 

🟠 Step 1. 노드에 audit log 저장할 디렉터리 생성하기

mkdir /etc/kubernetes/audit-log

 

 

🟠 Step 2. kube-apiserver manifest 백업하기

cp /etc/kubernetes/manifests/kube-apiserver.yaml ~/kube-apiserver.yaml

 

🟠 Step 3. kube-apiserver.yaml 수정하기

spec:
  containers:
  - command:
    - kube-apiserver
... 중략
    - --audit-policy-file=/etc/kubernetes/audit-policy/policy.yaml # 정책이 정의된 파일
    - --audit-log-path=/etc/kubernetes/audit-logs/audit.log # 로그 저장 경로 정의, arg 값이 없으면 audit log 비활성화와 같은 의미
    - --audit-log-maxsize=7 # 오래된 감사 로그 파일을 보관할 최대 일수를 정의
    - --audit-log-maxbackup=2 # 보관할 감사 로그 파일의 최대 수를 정의
... 중략
    volumeMounts:
    - mountPath: /etc/kubernetes/audit-policy/policy.yaml
      name: audit
      readOnly: true
    - mountPath: /etc/kubernetes/audit-logs
      name: audit-log
      readOnly: false
... 중략
  volumes:
  - name: audit
    hostPath:
      path: /etc/kubernetes/audit-policy/policy.yaml
      type: File
  - name: audit-log
    hostPath:
      path: /etc/kubernetes/audit-logs
      type: DirectoryOrCreate

 

🟠 Step 4. Audit Log 생성되는지 확인하기

 cat /etc/kubernetes/audit-logs/audit.log

 

Json Viewer로 확인하면 잘 식별 됨!

 

 

 

 

감사(auditing)

쿠버네티스 감사(auditing) 는 클러스터의 작업 순서를 문서화하는 보안 관련 시간별 레코드 세트를 제공한다. 클러스터는 사용자, 쿠버네티스 API를 사용하는 애플리케이션 및 컨트롤 플레인 자체

kubernetes.io