[Kubernetes Security Fundamentals] Audit Logging

IMKUNYOUNG·2025년 3월 8일
0

KCSA

목록 보기
1/3

🔹 1. Kubernetes에서 감사(Auditing)란?

  • 클러스터 내에서 발생하는 이벤트(예: 객체 생성, 삭제 등)를 모니터링하는 기능.
  • 보안 위협 감지 및 분석에 활용 가능.
  • API Server를 통해 감사 이벤트를 기록.

🔹 2. Kubernetes 요청 처리 과정

  • 모든 요청은 API 서버를 통해 처리됨.
  • 요청의 단계:
    1. 요청 수신(Request Received) → 요청이 수신되면 이벤트가 생성됨.
    2. 응답 시작(Started) → 인증 및 권한 부여 후 이벤트 생성.
    3. 응답 완료(Response Complete) → 요청이 처리되면 이벤트 기록.
    4. 패닉(Panic) → 오류 발생 시 이벤트 기록.

🔹 3. 감사 정책(Audit Policy) 설정

  • 모든 이벤트를 기록하면 로그가 과다 생성될 수 있음.

  • 특정 이벤트만 기록하도록 감사 정책(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"]

🔹 4. 감사(Auditing) 활성화

  • 기본적으로 Kubernetes에서 감사 기능이 비활성화됨.

  • 활성화하려면 API 서버에 감사 백엔드(Audit Backend) 설정 필요.

    백엔드 유형

  1. 로그 백엔드: 마스터 노드의 파일에 감사 이벤트 저장.

  2. 웹훅(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 정의 파일 수정 후 재시작.

🔹 5. 감사 테스트

  • prod 네임스페이스에서 webapp-pod 삭제 실행:
    kubectl delete pod webapp-pod -n prod
  • 감사 로그 확인:
    cat /var/log/ka-audit.log | grep webapp-pod

요약

  • 감사(Auditing)는 Kubernetes 클러스터 내 이벤트를 추적하는 기능.
  • API 서버를 통해 요청의 주요 단계(수신, 처리, 응답 등)가 기록됨.
  • 감사 정책(Audit Policy)을 활용해 특정 이벤트만 로깅 가능.
  • 로그 백엔드 또는 웹훅(Webhook) 백엔드를 통해 감사 이벤트 저장.
  • 감사 정책을 설정한 후 API 서버에 적용해야 감사 기능이 활성화됨.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN