Compute Engine의 관리형 워크로드 아이덴티티 인증 문제 해결

이 문서에서는 gcloud CLI를 사용하여 Compute Engine용 관리형 워크로드 아이덴티티를 구성하는 방법을 설명합니다. 또한 워크로드 간에 상호 TLS (mTLS) 연결을 설정할 수 있는 Certificate Authority Service를 사용하여 Compute Engine용 관리형 워크로드 아이덴티티의 자동 프로비저닝 및 수명 주기 관리를 설정하는 방법도 설명합니다.

시작하기 전에

  1. Google Cloud 프로젝트를 만들거나 선택합니다.

    프로젝트를 선택하거나 만드는 데 필요한 역할

    • 프로젝트 선택: 프로젝트를 선택하는 데는 특정 IAM 역할이 필요하지 않습니다. 역할이 부여된 프로젝트를 선택하면 됩니다.
    • 프로젝트 만들기: 프로젝트를 만들려면 resourcemanager.projects.create 권한이 포함된 프로젝트 생성자 역할(roles/resourcemanager.projectCreator)이 필요합니다. 역할 부여 방법 알아보기
    • Google Cloud 프로젝트를 만듭니다.

      gcloud projects create PROJECT_ID

      PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다.

    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project PROJECT_ID

      PROJECT_ID을 Google Cloud 프로젝트 이름으로 바꿉니다.

  2. 관리형 워크로드 아이덴티티를 이해합니다.

  3. Certificate Authority Service를 사용한 인증서 발급에 대해 알아봅니다.

  4. 관리형 워크로드 아이덴티티를 사용하여 Compute Engine 워크로드를 인증하는 방법을 알아봅니다.

  5. 아직 사용 설정되지 않은 IAM 및 Certificate Authority Service API가 있으면 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할을 부여하는 방법 알아보기

    gcloud services enable iam.googleapis.com privateca.googleapis.com

  6. 결제 및 할당량에 프로젝트를 사용하도록 Google Cloud CLI를 구성합니다.

    gcloud config set billing/quota_project PROJECT_ID
    

    PROJECT_ID를 프로젝트의 ID로 바꿉니다.

필요한 역할

관리형 워크로드 아이덴티티를 만들고 관리형 워크로드 아이덴티티 인증서를 프로비저닝하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

또는 IAM 소유자(roles/owner) 기본 역할에는 관리형 워크로드 아이덴티티를 구성하는 권한도 포함됩니다. 프로덕션 환경에서는 기본 역할을 부여하지 말아야 하지만 개발 환경 또는 테스트 환경에서는 부여해도 됩니다.

개요

애플리케이션에 관리형 워크로드 아이덴티티를 사용하려면 다음 작업을 수행해야 합니다.

  1. 보안 관리자:

  2. Compute 관리자:

    Compute Engine에서 실행되는 워크로드에 관리형 워크로드 아이덴티티를 다음과 같이 사용 설정합니다.

워크로드 아이덴티티 풀 만들기

  1. 관리형 워크로드 아이덴티티를 구성하려면 TRUST_DOMAIN 모드에서 풀을 만들어야 합니다.

    gcloud iam workload-identity-pools create POOL_ID \
      --location="global" \
      --mode="TRUST_DOMAIN"
    

    POOL_ID를 풀의 고유 ID로 바꿉니다. ID는 4~32자여야 하고 소문자 영숫자 문자와 대시만 포함해야 하며 영숫자 문자로 시작하고 끝나야 합니다. 워크로드 아이덴티티 풀을 만든 후에는 해당 ID를 변경할 수 없습니다.

  2. 워크로드 아이덴티티 풀이 TRUST_DOMAIN 모드에서 생성되었는지 확인하려면 workload-identity-pools describe 명령어를 실행합니다.

    gcloud iam workload-identity-pools describe POOL_ID \
      --location="global"
    

    출력은 다음과 비슷합니다.

    mode: TRUST_DOMAIN
    name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID
    state: ACTIVE
    

    명령어 출력에 mode: TRUST_DOMAIN가 없으면 gcloud CLI가 결제 및 할당량에 올바른 프로젝트를 사용하도록 올바르게 구성했는지 확인합니다. 최신 버전의 gcloud CLI로 업데이트했는지 확인합니다.

CA 옵션 선택

워크로드 인증서에 서명하려면 사용 사례에 가장 적합한 인증 기관 (CA) 옵션을 선택하세요.

  • Google 관리형 기본 CA: 완전 관리형 무료 솔루션에 이 옵션을 사용하세요. 기본 CA는 모든Google Cloud 사용자에게 신뢰할 수 있는 공유 루트를 제공합니다.

  • 맞춤 CA: Certificate Authority Service를 통해 자체 공개 키 인프라 (PKI)를 구성하는 데 이 옵션을 사용하세요. 이 옵션은 맞춤 신뢰할 수 있는 루트가 필요하거나 규정 준수 요구사항을 충족하기 위해 서명 키를 하드웨어 보안 모듈 (HSM)에 저장해야 하는 경우에 적합합니다. Certificate Authority Service는 관리형 워크로드 아이덴티티와 별도로 청구됩니다. 자세한 내용은 CA Service 가격 책정을 참고하세요.

CA 구성

기본 CA

기본 CA를 워크로드 아이덴티티 풀에 바인딩하려면 use-default-shared-ca 플래그를 사용하여 워크로드 아이덴티티 풀을 업데이트합니다.

gcloud iam workload-identity-pools update TRUST_DOMAIN_NAME \
    --location="global" \
    --use-default-shared-ca \
    --project=PROJECT_ID

다음을 바꿉니다.

  • TRUST_DOMAIN_NAME: 트러스트 도메인 이름입니다.
  • PROJECT_ID: 프로젝트 ID입니다.

맞춤 CA

커스텀 CA를 사용하여 관리형 워크로드 아이덴티티를 구성하려면 다음 단계를 완료하세요.

  1. 관리형 워크로드 아이덴티티의 인증서를 발급하도록 CA 서비스를 구성합니다.
  2. CA를 워크로드 아이덴티티 풀에 바인딩합니다.
  3. CA 풀에서 인증서를 요청하도록 관리형 워크로드 아이덴티티를 승인합니다.

관리형 워크로드 아이덴티티에 대해 인증서를 발급하도록 CA 서비스 구성

Certificate Authority Service 풀을 사용하여 루트 및 하위 인증 기관(CA)의 권장 구성을 만듭니다. 하위 CA 풀은 VM에 X.509 워크로드 아이덴티티 인증서를 발급합니다.

관리형 워크로드 아이덴티티를 사용하여 Compute Engine VM에 대해 인증서를 발급하도록 구성된 CA 풀은 VM과 동일한 리전에 있어야 합니다. 리전 서비스 중단에 대한 복원력이 우수한 멀티 리전 아키텍처를 설계하려면 워크로드의 각 리전에 하위 Certificate Authority Service CA 풀을 구성하는 것이 좋습니다. 이렇게 하면 각 Compute Engine VM이 리전 내 하위 Certificate Authority Service CA 풀을 참조할 수 있습니다.

CA 풀을 구성한 후 관리형 워크로드 아이덴티티가 CA 풀에서 서명된 인증서를 요청하고 수신하도록 승인합니다.

루트 CA 풀 구성

Certificate Authority Service에 대한 Google Cloud CLI 인터페이스를 사용하여 루트 CA 풀을 구성합니다.

CA 풀을 만든 후에는 이를 이동하거나 내보낼 수 없습니다.

  1. gcloud privateca pools create 명령어를 실행하여 엔터프라이즈 등급에서 루트 CA 풀을 만듭니다. 엔터프라이즈 등급은 소규모의 장기 인증서 발급을 위한 것입니다.

    gcloud privateca pools create ROOT_CA_POOL_ID \
       --location=REGION \
       --tier=enterprise
    

    다음을 바꿉니다.

    • ROOT_CA_POOL_ID: 루트 CA 풀의 고유 ID입니다. ID는 최대 64자이며 소문자 및 대문자 영숫자 문자, 밑줄, 하이픈만 포함해야 합니다. 풀 ID는 리전 내에서 고유해야 합니다.
    • REGION: 루트 CA 풀이 있는 리전입니다.

    자세한 내용은 CA 풀 만들기를 참조합니다.

  2. gcloud privateca roots create 명령어를 실행하여 루트 CA 풀에 루트 CA를 만듭니다. 루트 CA 풀에서 유일한 CA인 경우 루트 CA를 사용 설정하라는 메시지가 표시될 수 있습니다.

    예를 들어 다음과 비슷한 명령어를 사용하여 루트 CA를 만들 수 있습니다.

    gcloud privateca roots create ROOT_CA_ID \
       --pool=ROOT_CA_POOL_ID \
       --subject "CN=ROOT_CA_CN, O=ROOT_CA_ORGANIZATION" \
       --key-algorithm="ec-p256-sha256" \
       --max-chain-length=1 \
       --location=REGION
    

    다음을 바꿉니다.

    • ROOT_CA_ID: 루트 CA의 고유한 이름입니다. CA 이름은 최대 64자이며 소문자 및 대문자 영숫자 문자, 밑줄, 하이픈만 포함해야 합니다. CA 이름은 리전 내에서 고유해야 합니다.
    • ROOT_CA_POOL_ID: 루트 CA 풀의 ID입니다.
    • ROOT_CA_CN: 루트 CA의 일반 이름입니다.
    • ROOT_CA_ORGANIZATION: 루트 CA의 조직입니다.
    • REGION: 루트 CA 풀이 있는 리전입니다.

    자세한 내용은 루트 인증 기관 만들기를 참조합니다. CA의 subject 필드에 대한 자세한 내용은 제목을 참조합니다.

  3. 선택사항: 루트 CA 풀에 추가 루트 CA를 만들려면 이전 단계를 반복합니다. 이는 루트 CA 순환에 유용할 수 있습니다.

하위 CA 구성

Certificate Authority Service에 대한 Google Cloud CLI 인터페이스를 사용하여 하위 CA 풀과 하위 CA를 만듭니다.

인증서 발급 시나리오가 여러 개 있는 경우 시나리오마다 하위 CA를 만들 수 있습니다. 또한 CA 풀에 여러 하위 CA를 추가하면 인증서 요청의 부하를 더 효과적으로 분산할 수 있습니다.

gcloud privateca pools create 명령어를 사용하여 하위 CA 풀을 만듭니다.

  1. DevOps 등급에서 하위 CA 풀을 만듭니다. 이 등급은 대규모의 단기 인증서 발급을 위한 것입니다.

    gcloud privateca pools create SUBORDINATE_CA_POOL_ID \
      --location=REGION \
      --tier=devops
    

    다음을 바꿉니다.

    • SUBORDINATE_CA_POOL_ID: 하위 CA 풀의 고유 ID입니다. ID는 최대 64자이며 소문자 및 대문자 영숫자 문자, 밑줄, 하이픈만 포함해야 합니다. 풀 ID는 리전 내에서 고유해야 합니다.
    • REGION: 하위 CA 풀을 만들 리전입니다.

    자세한 내용은 CA 풀 만들기를 참조합니다.

  2. gcloud privateca subordinates create 명령어를 실행하여 하위 CA 풀에 하위 CA를 만듭니다. 기본 구성 기반 발급 모드를 변경하지 마십시오.

    예를 들어 다음과 비슷한 명령어를 사용하여 하위 CA를 만들 수 있습니다.

    gcloud privateca subordinates create SUBORDINATE_CA_ID \
      --pool=SUBORDINATE_CA_POOL_ID \
      --location=REGION \
      --issuer-pool=ROOT_CA_POOL_ID \
      --issuer-location=REGION \
      --subject="CN=SUBORDINATE_CA_CN, O=SUBORDINATE_CA_ORGANIZATION" \
      --key-algorithm="ec-p256-sha256" \
      --use-preset-profile=subordinate_mtls_pathlen_0
    

    다음을 바꿉니다.

    • SUBORDINATE_CA_ID: 하위 CA의 고유한 이름입니다. 이름은 최대 64자이며 소문자 및 대문자 영숫자 문자, 밑줄, 하이픈만 포함해야 합니다. CA 이름은 리전 내에서 고유해야 합니다.
    • SUBORDINATE_CA_POOL_ID: 하위 CA 풀의 이름입니다.
    • REGION: 하위 CA 풀이 있는 리전입니다.
    • ROOT_CA_POOL_ID: 루트 CA 풀의 ID입니다.
    • REGION: 루트 CA 풀의 리전입니다.
    • SUBORDINATE_CA_CN: 하위 CA의 일반 이름입니다.
    • SUBORDINATE_CA_ORGANIZATION: 하위 CA 발급 조직의 이름입니다.

    자세한 내용은 CA 풀 만들기를 참조합니다. CA의 subject 필드에 대한 자세한 내용은 제목을 참조합니다.

CA를 워크로드 아이덴티티 풀에 바인딩

CA 계층 구조를 만든 후 각 CA의 인증서 발급 구성으로 풀을 업데이트하여 CA를 워크로드 아이덴티티 풀에 바인딩합니다.

  1. 다음 콘텐츠로 issuance-config.yaml 파일을 만듭니다.

    inlineCertificateIssuanceConfig:
    caPools:
    REGION: projects/PROJECT_ID/locations/REGION/caPools/SUBORDINATE_CA_POOL_ID
    keyAlgorithm: RSA_2048
    lifetime: 86400s
    rotationWindowPercentage: 50

    파일에서 다음을 바꿉니다.

    • REGION: 하위 CA 풀이 있는 리전입니다.
    • PROJECT_ID: 하위 CA 풀이 포함된 프로젝트의 ID입니다.
    • SUBORDINATE_CA_POOL_ID: 하위 CA 풀의 ID입니다.
  2. 다음 명령어를 실행하여 워크로드 아이덴티티 풀을 업데이트합니다.

    gcloud iam workload-identity-pools update POOL_ID \
       --location="global" \
       --inline-certificate-issuance-config-file=ISSUANCE_CONFIG_FILE
    

    다음을 바꿉니다.

    • POOL_ID: 풀의 고유 ID
    • ISSUANCE_CONFIG_FILE: issuance-config.yaml 파일의 경로입니다.

CA 풀에서 인증서를 요청하도록 관리형 워크로드 아이덴티티를 승인

관리형 워크로드 아이덴티티에는 CA 서비스에서 인증서를 요청하고 공개 인증서를 가져올 수 있는 권한이 필요합니다.

  1. 각 하위 CA 풀에서 CA Service 워크로드 인증서 요청자(roles/privateca.workloadCertificateRequester) IAM 역할을 관리형 워크로드 아이덴티티에 부여합니다. 다음 gcloud privateca pools add-iam-policy-binding 명령어는 관리형 워크로드 아이덴티티가 CA 서비스 인증서 체인에서 인증서를 요청하도록 승인합니다.

    gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
      --location=REGION \
      --role=roles/privateca.workloadCertificateRequester \
      --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/POOL_ID/*"
    

    다음을 바꿉니다.

    • SUBORDINATE_CA_POOL_ID: 하위 CA 풀의 ID입니다.
    • REGION: 하위 CA 풀의 리전입니다.
    • PROJECT_NUMBER: 워크로드 아이덴티티 풀이 포함된 프로젝트의 프로젝트 번호입니다.
    • POOL_ID: 워크로드 아이덴티티 풀의 ID입니다.
  2. 관리형 워크로드 아이덴티티에 종속 CA 풀에 대한 CA 서비스 풀 리더(roles/privateca.poolReader) IAM 역할을 부여합니다. 이렇게 하면 관리형 워크로드 아이덴티티가 CA 인증서 체인에서 서명된 X.509 인증서를 가져올 수 있습니다.

    gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
      --location=REGION \
      --role=roles/privateca.poolReader \
      --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/POOL_ID/*"
    

    다음을 바꿉니다.

    • SUBORDINATE_CA_POOL_ID: 하위 CA 풀의 ID입니다.
    • REGION: 하위 CA 풀의 리전입니다.
    • PROJECT_NUMBER: 워크로드 아이덴티티 풀이 포함된 프로젝트의 프로젝트 번호입니다.
    • POOL_ID: 워크로드 아이덴티티 풀의 ID입니다.

관리형 워크로드 아이덴티티 만들기

관리형 워크로드 아이덴티티를 사용하면 Google Cloud 에서 워크로드 아이덴티티 풀 ID의 사용자 인증 정보를 워크로드에 자동으로 프로비저닝할 수 있습니다. 워크로드 아이덴티티는 워크로드 아이덴티티 풀 내에서 정의되며 네임스페이스라는 관리 경계로 구성됩니다.

네임스페이스 만들기

workload-identity-pools namespaces create 명령어를 사용하면 워크로드 아이덴티티 풀에 네임스페이스를 만들 수 있습니다.

gcloud iam workload-identity-pools namespaces create NAMESPACE_ID \
    --workload-identity-pool="POOL_ID" \
    --location="global"

다음을 바꿉니다.

  • NAMESPACE_ID: 네임스페이스의 고유 ID입니다. ID는 2~63자여야 하고 소문자 영숫자 문자와 대시만 포함해야 하며 영숫자 문자로 시작하고 끝나야 합니다. 네임스페이스를 만든 후에는 해당 ID를 변경할 수 없습니다.
  • POOL_ID: 앞에서 만든 워크로드 아이덴티티 풀 ID입니다.

관리형 워크로드 아이덴티티 만들기

workload-identity-pools managed-identities create 명령어를 사용하면 워크로드 아이덴티티 풀 네임스페이스에 관리형 워크로드 아이덴티티를 만들 수 있습니다.

gcloud iam workload-identity-pools managed-identities create MANAGED_IDENTITY_ID \
    --namespace="NAMESPACE_ID" \
    --workload-identity-pool="POOL_ID" \
    --location="global"

다음을 바꿉니다.

  • MANAGED_IDENTITY_ID: 관리형 아이덴티티의 고유 ID ID는 2~63자여야 하고 소문자 영숫자 문자와 대시만 포함해야 하며 영숫자 문자로 시작하고 끝나야 합니다. 관리형 워크로드 아이덴티티를 만든 후에는 ID를 변경할 수 없습니다.
  • NAMESPACE_ID: 앞에서 만든 네임스페이스 ID입니다.
  • POOL_ID: 앞에서 만든 워크로드 아이덴티티 풀 ID입니다.

관리형 워크로드 아이덴티티 ID는 SPIFFE 식별자이며 형식은 다음과 같습니다.

spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID

워크로드 증명 정책 정의

이 섹션에서는 증명 정책을 설정하는 방법을 설명합니다. 이 정책은 Google Cloud IAM에서 워크로드의 ID를 확인하는 데 사용되는 속성을 결정합니다. 확인 후에는 호출 워크로드에 사용자 인증 정보가 수신될 수 있습니다.

확인은 워크로드의 다음 속성 중 하나를 기반으로 합니다.

  • 연결된 서비스 계정 이메일 주소
  • 연결된 서비스 계정 UID
  • VM 인스턴스 이름
  • VM 인스턴스 ID

증명 규칙으로 워크로드 증명 정책 정의

워크로드가 관리형 ID를 사용하도록 허용하는 증명 정책을 만들려면 다음을 수행합니다.

  1. 연결된 서비스 계정, 인스턴스 이름 또는 인스턴스 ID를 사용하여 워크로드가 관리형 ID를 증명하도록 허용하는 증명 정책을 만들지 여부를 결정합니다.

  2. JSON 형식의 증명 정책 파일을 만듭니다.

    1. 선택사항: Compute Engine 인스턴스에서 X.509 사용자 인증 정보를 받으려면 연결된 서비스 계정을 사용 설정해야 합니다. 먼저 다음 명령어를 사용해서 새 서비스 계정을 만들고 이를 워크로드에 연결하는 것이 좋습니다.

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
      

      SERVICE_ACCOUNT_NAME을 서비스 계정 이름으로 바꿉니다.

    2. 서비스 계정 이메일 주소, 서비스 계정 UID, 인스턴스 이름 또는 인스턴스 ID를 기반으로 증명하는 JSON 형식의 증명 정책 파일을 만듭니다.

      서비스 계정의 이메일 주소

      서비스 계정 이메일 주소를 기반으로 증명하는 증명 정책 파일을 만들려면 다음 콘텐츠로 파일을 만듭니다.

      {
         "attestationRules": [
            {
               "googleCloudResource": "//compute.googleapis.com/projects/WORKLOAD_PROJECT_NUMBER/type/Instance/attached_service_account.email/SERVICE_ACCOUNT_EMAIL"
            }
         ],
      }
      

      다음을 바꿉니다.

      • WORKLOAD_PROJECT_NUMBER: VM 인스턴스 또는 서비스 계정이 포함된 프로젝트의 번호입니다.

        바로 전에 만든 관리형 ID 또는 서비스 계정이 포함된 프로젝트의 프로젝트 번호를 가져오려면 다음 명령어를 실행합니다.

        gcloud projects describe $(gcloud config get-value project) \
          --format="value(projectNumber)"
        
      • SERVICE_ACCOUNT_EMAIL: VM에 연결된 서비스 계정의 이메일 주소입니다.

      서비스 계정 UID

      서비스 계정 UID를 기반으로 증명하는 증명 정책 파일을 만들려면 다음 콘텐츠로 파일을 만듭니다.

      {
         "attestationRules": [
            {
               "googleCloudResource": "//compute.googleapis.com/projects/WORKLOAD_PROJECT_NUMBER/type/Instance/attached_service_account.uid/SERVICE_ACCOUNT_UID"
            }
         ],
      }
      

      다음을 바꿉니다.

      • WORKLOAD_PROJECT_NUMBER: VM 인스턴스 또는 서비스 계정이 포함된 프로젝트의 번호입니다.

        바로 전에 만든 관리형 ID 또는 서비스 계정이 포함된 프로젝트의 프로젝트 번호를 가져오려면 다음 명령어를 실행합니다.

        gcloud projects describe $(gcloud config get-value project) \
          --format="value(projectNumber)"
        
      • SERVICE_ACCOUNT_UID: VM에 연결된 서비스 계정의 UID입니다.

      서비스 계정의 고유 ID를 가져오려면 다음 명령어를 실행합니다.

         gcloud iam service-accounts describe SERVICE_ACCOUNT_EMAIL\
            --format="value(uniqueId)"
      

      인스턴스 이름

      인스턴스 이름을 기반으로 증명하는 증명 정책 파일을 만들려면 다음 콘텐츠로 파일을 만듭니다.

      {
         "attestationRules": [
            {
               "googleCloudResource": "//compute.googleapis.com/projects/WORKLOAD_PROJECT_NUMBER/name/zones/ZONE/instances/INSTANCE_NAME"
            }
         ],
      }
      

      다음을 바꿉니다.

      • WORKLOAD_PROJECT_NUMBER: VM 인스턴스 또는 서비스 계정이 포함된 프로젝트의 번호입니다.

        바로 전에 만든 관리형 ID 또는 서비스 계정이 포함된 프로젝트의 프로젝트 번호를 가져오려면 다음 명령어를 실행합니다.

        gcloud projects describe $(gcloud config get-value project) \
          --format="value(projectNumber)"
        
      • ZONE: Compute Engine VM 영역입니다.

      • INSTANCE_NAME: 신규 또는 기존 Compute Engine VM 인스턴스의 이름

      인스턴스 ID

      인스턴스 ID를 기반으로 증명하는 증명 정책 파일을 만들려면 다음 콘텐츠로 파일을 만듭니다.

      {
         "attestationRules": [
            {
               "googleCloudResource": "//compute.googleapis.com/projects/WORKLOAD_PROJECT_NUMBER/uid/zones/ZONE/instances/INSTANCE_ID"
            }
         ],
      }
      

      다음을 바꿉니다.

      • WORKLOAD_PROJECT_NUMBER: VM 인스턴스 또는 서비스 계정이 포함된 프로젝트의 번호입니다.

        바로 전에 만든 관리형 ID 또는 서비스 계정이 포함된 프로젝트의 프로젝트 번호를 가져오려면 다음 명령어를 실행합니다.

        gcloud projects describe $(gcloud config get-value project) \
          --format="value(projectNumber)"
        
      • INSTANCE_ID: Compute Engine VM 인스턴스 ID입니다.

        인스턴스 ID의 값은 기존 Compute Engine 인스턴스에서 가져와야 합니다. 인스턴스 ID를 가져오려면 다음 명령어를 실행합니다.

        gcloud compute instances describe INSTANCE_NAME --zone=ZONE --format="get(id)"
        
      • INSTANCE_NAME: Compute Engine VM 인스턴스 이름입니다.

      • ZONE: Compute Engine VM 영역입니다.

  3. 이 문서의 앞부분에서 만든 정책 JSON 파일을 사용하여 증명 정책을 만듭니다.

    gcloud iam workload-identity-pools managed-identities set-attestation-rules MANAGED_IDENTITY_ID \
       --namespace=NAMESPACE_ID \
       --workload-identity-pool=POOL_ID \
       --policy-file=PATH_TO_POLICY_JSON_FILE \
       --location=global
    

    다음을 바꿉니다.

    • MANAGED_IDENTITY_ID: 관리형 아이덴티티의 고유 ID ID는 2~63자여야 하고 소문자 영숫자 문자와 대시만 포함해야 하며 영숫자 문자로 시작하고 끝나야 합니다. 관리형 워크로드 아이덴티티를 만든 후에는 ID를 변경할 수 없습니다.
    • NAMESPACE_ID: 앞에서 만든 네임스페이스 ID입니다.
    • POOL_ID: 앞에서 만든 워크로드 아이덴티티 풀 ID입니다.
    • PATH_TO_POLICY_JSON_FILE: 이전에 만든 증명 정책을 나타내는 JSON 파일의 경로입니다.

    또한 증명 규칙을 개별적으로 추가하거나 삭제하여 정책을 업데이트할 수 있습니다. 증명 정책에 증명을 추가하려면 다음 명령어를 실행합니다.

    gcloud iam workload-identity-pools managed-identities add-attestation-rule MANAGED_IDENTITY_ID \
       --namespace=NAMESPACE_ID \
       --workload-identity-pool=POOL_ID \
       --google-cloud-resource='//compute.googleapis.com/projects/WORKLOAD_PROJECT_NUMBER/type/Instance/attached_service_account.uid/SERVICE_ACCOUNT_UID' \
       --location=global
    
  4. 증명 규칙을 나열하거나 삭제하는 방법을 보려면 다음 명령어를 실행합니다.

    gcloud iam workload-identity-pools managed-identities list-attestation-rules --help
    gcloud iam workload-identity-pools managed-identities remove-attestation-rule --help
    

선택사항: 워크로드 아이덴티티 풀 간 신뢰 제휴 사용 설정

서로 다른 트러스트 도메인에 있는 워크로드의 상호 인증을 사용 설정하려면 트러스트 제휴를 구성하면 됩니다.

  1. 다음 콘텐츠로 trust-config.yaml 파일을 만듭니다.

    inlineTrustConfig:
    additionalTrustBundles:
      POOL_ID.global.PROJECT_NUMBER.workload.id.goog:
         trustAnchors:
         - pemCertificate: "-----BEGIN CERTIFICATE-----\nPEM_ENCODED_CERTIFICATE\n-----END CERTIFICATE-----"

    파일에서 다음을 바꿉니다.

    • POOL_ID: 제휴할 워크로드 아이덴티티 풀의 ID입니다.
    • PROJECT_NUMBER: 제휴하려는 워크로드 아이덴티티 풀의 프로젝트 번호입니다.
    • PEM_ENCODED_CERTIFICATE: 제휴하려는 워크로드 아이덴티티 풀의 PEM 인코딩 루트 CA 인증서입니다.
  2. 트러스트 구성으로 워크로드 아이덴티티 풀을 업데이트하려면 다음 명령어를 실행합니다.

    gcloud iam workload-identity-pools update POOL_ID \
      --location="global" \
      --inline-trust-config-file=TRUST_CONFIG_FILE
    

    다음을 바꿉니다.

    • POOL_ID: 풀의 고유 ID
    • TRUST_CONFIG_FILE: trust-config.yaml 파일의 경로입니다.

다음 단계

직접 사용해 보기

Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.

무료로 시작하기