기존 지속적 검증 사용

이 페이지는 기존 지속적 검증(기존 CV)(지원 중단됨) 사용자를 대상으로 합니다.

기존 지속적 검증은 Binary Authorization 프로젝트 싱글톤 정책과의 지속적인 규정 준수를 위해 실행 중인 포드와 연결된 컨테이너 이미지를 주기적으로 확인하는 Binary Authorization의 기능입니다. 기존 CV는 Cloud Logging에 발견 항목을 로깅합니다.

기존 CV는 실행 중인 포드를 종료하지 않습니다.

제한사항

기존 CV에는 다음과 같은 제한사항이 있습니다.

  • 기존 CV는 Google Kubernetes Engine(GKE)에 배포된 포드만 지원합니다.
  • 기존 CV는 Anthos Service Mesh 서비스 ID, Kubernetes 서비스 계정, Kubernetes 네임스페이스에 대해 특정 규칙을 지정하는 Binary Authorization 정책을 지원하지 않습니다.

시작하기 전에

  1. 프로젝트에서 Google Kubernetes Engine에 대해 Binary Authorization을 설정했는지 확인합니다. 기존 CV는 프로젝트의 모든 클러스터에 있는 포드에서 정책 준수 이벤트를 로깅합니다.

  2. gcloud CLI가 최신 버전으로 업데이트되었는지 확인합니다.

필수 권한

Identity and Access Management(IAM) 역할에는 권한이 포함되며 사용자, 그룹, 서비스 계정에 할당될 수 있습니다. 다음 역할에는 CV에 나와 있는 권한이 포함됩니다.

역할 이름 기존 CV 권한 설명
roles/binaryauthorization.policyEditor binaryauthorization.continuousValidationConfig.update CV를 사용 설정하거나 중지합니다.

필요한 IAM 권한을 설정하려면 다음 명령어를 실행합니다.

PROJECT_NUMBER=$(gcloud projects list \
  --filter="projectId:ATTESTATION_PROJECT_ID" \
  --format="value(PROJECT_NUMBER)")
SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding ATTESTATION_PROJECT_ID \
    --member="serviceAccount:$SERVICE_ACCOUNT" \
    --role='roles/containeranalysis.occurrences.viewer'

기존 CV 사용 설정

콘솔

Google Cloud 콘솔을 사용하여 기존 CV를 사용 설정하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 Binary Authorization 정책 페이지로 이동합니다.

    Binary Authorization 정책으로 이동

  2. 정책 탭을 클릭합니다.

  3. 정책 수정을 클릭합니다.

  4. GKE 및 Anthos 배포의 추가 설정 섹션을 펼칩니다.

  5. 지속적 검증 사용 설정 체크박스를 선택합니다.

  6. 정책 저장을 클릭합니다.

REST API

REST API를 사용하여 기존 CV를 사용 설정하려면 다음을 수행합니다.

  1. 프로젝트 ID를 저장합니다.

    DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID
    

    DEPLOYER_PROJECT_ID를 GKE를 실행하는 프로젝트의 ID로 바꿉니다.

  2. Google Cloud용 OAuth 토큰을 가져옵니다.

    BEARER_TOKEN=$(gcloud auth print-access-token)
    

    토큰은 짧은 시간 동안만 유효합니다.

  3. 기존 CV 사용 설정

    curl "https://binaryauthorization.googleapis.com/v1alpha2/projects/${DEPLOYER_PROJECT_ID}/continuousValidationConfig" -X PUT -H "authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" --data '{"enforcementPolicyConfig": {"enabled": "true"}}'
    

이제 기존 CV가 이벤트를 로깅하도록 구성되었습니다.

Logging 로그 항목은 다음 예시와 비슷합니다.

{
"insertId": "6054e143-0000-2562-aa64-883d24f57e70",
"jsonPayload": {
  "@type": "type.googleapis.com/google.cloud.binaryauthorization.v1beta1.ContinuousValidationEvent",
  "podEvent": {
    "images": [
      {
        "description": "Image <var>IMAGE_NAME@IMAGE_DIGEST</var> denied by
        attestor projects/<var>ATTESTOR_PROJECT_ID</var>/attestors/<var>ATTESTOR_NAME</var>:
        No attestations found that were valid and signed by a key trusted by
        the attestor",
        "image": "<var>IMAGE_NAME@IMAGE_DIGEST</var>",
        "result": "DENY"
      }
    ],
    "verdict": "VIOLATES_POLICY",
    "deployTime": "2021-03-19T17:00:08Z",
    "pod": "<var>POD_NAME</var>"
  }
},
"resource": {
  "type": "k8s_cluster",
  "labels": {
    "cluster_name": "<var>CLUSTER_NAME</var>",
    "location": "<var>CLUSTER_LOCATION</var>",
    "project_id": "<var>DEPLOYER_PROJECT_ID</var>"
  }
},
"timestamp": "2021-03-19T17:15:43.872702342Z",
"severity": "WARNING",
"logName": "projects/<var>DEPLOYER_PROJECY_ID</var>/logs/binaryauthorization.googleapis.com%2Fcontinuous_validation",
"receiveTimestamp": "2021-03-19T17:57:00.432116179Z"
}

기존 CV 이벤트를 쿼리하는 방법은 Cloud Logging에서 기존 CV 이벤트 보기를 참조하세요.

문제 해결

기존 CV는 Cloud 애셋 인벤토리 및 Pub/Sub와 같은 다른 Google Cloud 서비스를 사용합니다. 기존 CV가 실패하는 경우 Cloud Logging에서 Cloud 애셋 인벤토리 오류를 확인할 수 있습니다.

또한 기존 CV는 binauthz-cv-cai-feed라는 피드 리소스를 만듭니다. 피드를 삭제하거나 수정하면 기존 CV가 실패할 수 있습니다. 기존 CV는 누락되었거나 변경된 피드를 자동으로 복원하지만 복원이 수행될 때까지는 발견 항목을 로깅하지 못할 수 있습니다.

CV 사용 중지

콘솔

Google Cloud 콘솔을 사용하여 기존 CV를 사용 중지하려면 다음을 수행합니다.

  1. Google Cloud Console에서 Binary Authorization 페이지로 이동합니다.

    Binary Authorization 정책으로 이동

  2. 정책 탭을 클릭합니다.

  3. 정책 수정을 클릭합니다.

  4. 지속적 검증 사용 설정 체크박스를 선택 취소합니다.

  5. 정책 저장을 클릭합니다.

REST API

REST API를 사용하여 기존 CV를 사용 중지하려면 다음을 수행합니다.

  1. 프로젝트 ID를 저장합니다.

    DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID
    

    DEPLOYER_PROJECT_ID를 GKE를 실행하는 프로젝트의 ID로 바꿉니다.

  2. Google Cloud용 OAuth 토큰을 가져옵니다.

    BEARER_TOKEN=$(gcloud auth print-access-token)
    

    토큰은 짧은 시간 동안만 유효합니다.

  3. 다음 명령어를 사용하여 기존 CV를 사용 중지합니다.

    curl "https://binaryauthorization.googleapis.com/v1alpha2/projects/${DEPLOYER_PROJECT_ID}/continuousValidationConfig" -X PUT -H "authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" --data '{"enforcementPolicyConfig": {"enabled": "false"}}'
    

Cloud Logging에서 기존 CV 이벤트 보기

CV를 사용 설정한 후에는 Binary Authorization 정책을 위반하는 모든 pod가 Cloud Logging에 정기적으로 로깅됩니다.

이러한 로그 항목에는 다음 로그 이름이 포함됩니다.

logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"

로그 탐색기

로그 탐색기를 사용하여 Cloud Logging에서 기존 CV 이벤트를 보려면 다음을 수행합니다.

  1. 로그 탐색기로 이동합니다.

  2. Google Cloud Observability를 사용 설정한 프로젝트 ID를 선택합니다.

  3. 검색어 상자에 다음 쿼리를 입력합니다.

    logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
    
  4. 시간 범위 선택기에서 기간을 선택합니다.

기존 로그 뷰어

로그 탐색기를 사용하여 Cloud Logging에서 기존 CV 이벤트를 보려면 다음을 수행합니다.

  1. 로그 탐색기로 이동합니다.

  2. 옵션 드롭다운 메뉴에서 기존 로그 뷰어로 돌아가기를 선택합니다.

  3. Google Cloud Observability를 설정한 Google Cloud 프로젝트를 선택합니다.

  4. 검색어 상자에 다음 쿼리를 입력합니다.

    logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
    
  5. 시간 범위 선택기에서 기간을 선택합니다.

gcloud

gcloud를 사용하여 Cloud Logging에서 지난 주 기존 CV 이벤트를 보려면 다음 명령어를 실행합니다.

gcloud logging read --order="desc" --freshness=7d \
  'logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"'

다음 단계