버전 1.5. 이 버전은 완전하게 지원되며 GKE On-Prem에 영향을 미치는 보안 취약점, 노출, 문제에 대한 최신 패치와 업데이트를 제공합니다. 자세한 내용은 출시 노트를 참조하세요. 이는 최신 버전이 아닙니다.

감사 로깅

개요

Anthos clusters on VMware(GKE On-Prem)는 클러스터의 Kubernetes API 서버로 전송된 호출을 시간순으로 기록하는 Kubernetes 감사 로깅을 사용합니다. 감사 로그는 의심스러운 API 요청을 조사하고 통계를 수집하는 데 유용합니다.

Anthos 1.2 이전 버전에서는 Anthos clusters on VMware가 디스크에만 감사 로그를 작성했습니다. Anthos 1.2에는 Google Cloud 프로젝트의 Cloud 감사 로그에 감사 로그를 작성할 수 있는 알파 기능이 도입되었습니다. Cloud 감사 로그에 작성하면 디스크에 작성하거나 온프레미스 로깅 시스템에서 로그를 캡처하는 것보다 다양한 이점이 있습니다.

  • 모든 Anthos 클러스터의 감사 로그를 중앙화할 수 있습니다.
  • Cloud 감사 로그에 기록된 로그 항목은 변경할 수 없습니다.
  • Cloud 감사 로그 항목은 400일 동안 보관됩니다.
  • Cloud 감사 로그는 Anthos 요금에 포함되어 있습니다.

Anthos clusters on VMware를 구성하여 디스크 또는 Cloud 감사 로그에 로그를 작성할 수 있습니다.

디스크 기반 감사 로깅

기본적으로 Anthos clusters on VMware의 감사 로그는 영구 디스크에 작성되므로 VM이 다시 시작되고 업그레이드되어도 로그가 사라지지 않습니다. Anthos clusters on VMware는 감사 로그 항목을 최대 12GB까지 보관합니다.

Cloud 감사 로그

Cloud 감사 로그가 사용 설정된 경우 모든 Kubernetes API 서버의 관리자 활동 감사 로그 항목이 사용자 클러스터를 만들 때 지정한 프로젝트 및 위치를 통해 Google Cloud로 전송됩니다.

Anthos clusters on VMware는 audit-proxy Pod를 관리자 클러스터에 배포하고 사용자 클러스터에서는 사이드카 컨테이너로 사용할 수 있습니다. 이 Pod는 Cloud 감사 로그에 로그 항목을 버퍼링하고 작성합니다.

제한사항

Anthos clusters on VMware의 Cloud 감사 로그는 알파 기능입니다. 이 알파 출시 버전에는 몇 가지 제한사항이 있습니다.

  • 데이터 액세스 로깅은 지원되지 않습니다.

  • Kubernetes 감사 정책은 수정할 수 없습니다.

  • 감사 로깅은 현재 네트워크 중단에 대해 복원력이 우수하지 않습니다. 로그 항목을 Google Cloud로 내보낼 수 없으면 삭제됩니다.

Anthos GKE API 및 Anthos Audit API 사용 설정

Anthos clusters on VMware에서 Cloud 감사 로그를 사용하려면 다음을 수행합니다.

  1. Anthos 1.4.x 이하를 사용하는 경우 Anthos GKE API를 사용 설정합니다.

  2. Anthos 1.5 이상을 사용하는 경우 Anthos Audit API를 사용 설정합니다.

  3. 확실하지 않거나 Anthos 1.5로 업그레이드하려는 경우 둘 모두 사용 설정합니다.

Anthos GKE API 사용 설정

Anthos Audit API 사용 설정

감사 로깅을 위한 서비스 계정 만들기

Anthos clusters on VMware에서 사용하기 위해 만든 여러 서비스 계정이 이미 있습니다. 이 알파 기능을 사용하려면 추가 서비스 계정을 만들고 허용 목록에 추가해야 합니다.

  1. Cloud 감사 로그 서비스 계정을 만듭니다.

    gcloud iam service-accounts create audit-logging-service-account
  2. Cloud 감사 로그 서비스 계정의 JSON 키 파일을 만듭니다.

    gcloud iam service-accounts keys create audit-logging-key.json \
       --iam-account AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
    

    여기서 AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL은 서비스 계정의 이메일 주소입니다.

  3. 다른 서비스 계정 키와 동일한 위치에 있는 관리자 워크스테이션에 audit-logging-key.json을 저장합니다.

서비스 계정을 허용 목록에 추가

Cloud 감사 로그 서비스 계정을 허용 목록에 추가하려면 Anthos clusters on VMware 알파의 Cloud 감사 로그 양식을 작성하세요. 허용 목록이 완료되면 알림 이메일이 전송됩니다. Cloud 감사 로그를 사용 설정하는 사용자 클러스터를 만들기 전에 서비스 계정을 허용 목록에 추가해야 합니다.

Cloud 감사 로그가 사용 설정된 사용자 클러스터 만들기

  1. 아직 관리자 클러스터를 만들지 않은 경우 고정 IP 주소를 사용하여 설치 또는 DHCP를 사용하여 설치에 대한 안내에 따라 새 관리자 클러스터와 사용자 클러스터를 만듭니다.

    관리자 클러스터가 이미 있는 경우 추가 사용자 클러스터 만들기에 대한 안내에 따라 새 사용자 클러스터를 만듭니다.

  2. gkectl create-config 실행 후 평소와 같이 구성 파일을 채우고 usercluster에서 새로운 cloudauditlogging 섹션도 채웁니다.

  3. cloudauditlogging.projectid는 ACL 사용을 확인하려는 프로젝트 ID 또는 번호입니다.

  4. 감사 로그를 저장하려는 Google Cloud 리전으로 cloudauditlogging.clusterlocation을 설정합니다. 온프레미스 데이터 센터와 가까운 리전을 선택하는 것이 좋습니다.

  5. cloudauditlogging.serviceaccountkeypath를 Cloud 감사 로그 서비스 계정의 JSON 키 파일 경로로 설정합니다.

예를 들면 다음과 같습니다.

cloudauditlogging:
  projectid: "my-project"
  clusterlocation: "us-west1"
  serviceaccountkeypath: "/my-key-folder/audit-logging-key.json"

평소와 같이 클러스터를 계속 만듭니다.

기존 사용자 클러스터에서 Cloud 감사 로그 사용 설정

gkectl update cluster 명령어를 통해 기존 사용자 클러스터에 감사 로그를 사용 설정할 수 있습니다.

user-cluster.yaml 파일의 cloudauditlogging 섹션을 입력합니다. 개별 필드에 대한 자세한 내용은 Cloud 감사 로그가 사용 설정된 사용자 클러스터 만들기를 참조하세요.

그런 후 다음을 실행합니다.

gkectl update cluster --config [USER_CLUSTER_YAML] --kubeconfig [ADMIN_CLUSTER_KUBECONFIG]

Anthos clusters on VMware 감사 로그 액세스

디스크 기반 감사 로깅

  1. 관리자 클러스터 및 연결된 모든 사용자 클러스터에서 실행 중인 Kubernetes API 서버를 확인합니다.

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get pods --all-namespaces -l component=kube-apiserver
    

    여기서 [ADMIN_CLUSTER_KUBECONFIG]는 관리자 클러스터의 kubeconfig 파일입니다.

  2. API 서버의 감사 로그를 다운로드합니다.

    kubectl cp -n [NAMESPACE] [APISERVER_POD_NAME]:/var/log/kube-audit/kube-apiserver-audit.log /tmp/kubeaudit.log
    

    이 명령어는 관리자 클러스터에 최대 1GB, 사용자 클러스터에 최대 850GB의 데이터를 포함할 수 있는 최신 로그 파일을 가져옵니다.

    이전 감사 기록은 별도의 파일에 보관됩니다. 이 파일을 보려면 다음을 작성합니다.

    kubectl exec -n [NAMESPACE] [APISERVER_POD_NAME] -- ls /var/log/kube-audit -la
    

    각 감사 로그의 파일 이름에는 파일이 순환된 시점을 나타내는 타임스탬프가 있습니다. 파일에는 해당 시간 및 날짜까지의 감사 로그가 포함되어 있습니다.

Cloud 감사 로그

Console

  1. Cloud Console에서 로깅 메뉴의 로그 페이지로 이동합니다.

    로그 페이지로 이동

  2. 위에서 설명한 드롭다운 메뉴 바로 위의 라벨로 필터링 또는 텍스트 검색창에서 아래쪽 화살표를 클릭하여 드롭다운 메뉴를 엽니다. 메뉴에서 고급 필터로 전환을 클릭합니다.

  3. 텍스트 상자에 다음 필터를 입력합니다.

    resource.type="k8s_cluster"
    logName="projects/[PROJECT_ID]/logs/externalaudit.googleapis.com%2Factivity"
    protoPayload.serviceName="anthosgke.googleapis.com"
    
  4. 필터 제출을 클릭하여 이 프로젝트에 로그인하도록 구성된 Anthos clusters on VMware 클러스터의 감사 로그를 모두 표시합니다.

gcloud

프로젝트의 관리자 활동 로그에서 k8s_cluster 리소스 유형에 적용되는 처음 두 로그 항목이 나열됩니다.

gcloud logging read \
    'logName="projects/[PROJECT_ID]/logs/externalaudit.googleapis.com%2Factivity" \
    AND resource.type="k8s_cluster" \
    AND protoPayload.serviceName="anthosgke.googleapis.com" ' \
    --limit 2 \
    --freshness 300d

여기서 [PROJECT_ID]는 프로젝트 ID입니다.

출력에 두 로그 항목이 표시됩니다. 각 로그 항목에서 logName 필드의 값은 projects/[PROJECT_ID]/logs/externalaudit.googleapis.com%2Factivity이고 protoPayload.serviceNameanthosgke.googleapis.com과 동일합니다.

감사 정책

감사 로깅 동작은 정적으로 구성된 Kubernetes 감사 로깅 정책에 따라 결정됩니다. 이 정책 변경은 현재 지원되지 않지만 향후 출시 버전에서 지원될 것입니다.