Backup for GKE의 권한 오류 문제 해결


이 페이지에서는 Backup for GKE를 사용할 때 발생할 수 있는 권한 오류, 작업을 실행할 때 고려해야 할 사항, 오류 해결 방법을 설명합니다.

오류 100010101: PersistentVolumeClaim 백업 실패 - 테넌트 프로젝트의 IAM 바인딩이 누락됨

테넌트 프로젝트의 Identity and Access Management 바인딩이 누락되어 PersistentVolumeClaim 백업 시도가 실패하면 100010101 오류가 발생하며, 이로 인해 Failed to backup PersistentVolumeClaim - Missing IAM binding for tenant project라는 오류 메시지가 표시됩니다.

GKE용 백업은 GKE 클러스터의 영구 디스크 스냅샷을 만듭니다. 스냅샷은 소비자 프로젝트라고도 하는 Google Cloud 프로젝트에 있으며 Google Cloud 는 관리하는 테넌트 프로젝트 내에서 스냅샷을 만듭니다. 테넌트 프로젝트는 자체 조직과 별도로 google.com 조직 내에 있습니다.

테넌트 프로젝트 내의 서비스 에이전트에는 클러스터의 PersistentVolumeClaim에서 참조하는 영구 디스크를 암호화하는 고객 관리 암호화 키 (CMEK)를 사용할 수 있는 특정 권한이 필요합니다. 이 권한은 스냅샷 데이터를 암호화하고 복호화합니다. service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com 서비스 에이전트에 디스크의 CMEK에 대한 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할이 없으면 백업 작업이 실패합니다.

이 오류를 해결하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 roles/cloudkms.admin 또는 roles/owner와 같이 Cloud Key Management Service 키의 IAM 정책을 수정할 수 있는 충분한 IAM 권한이 있는지 확인합니다.

  2. 실패한 백업 작업의 status reason 메시지에 있는 TENANT_PROJECT_NUMBER 값을 사용하여 테넌트 프로젝트의 Compute Engine 서비스 에이전트를 찾습니다. 예를 들면 service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com입니다.

  3. 암호화된 Persistent Disk에 사용된 다음 CMEK 정보를 찾습니다.

    • 키 이름: 암호화 키의 이름입니다.

    • 키링: 키가 있는 키링의 이름입니다.

    • 위치: 키가 있는 Google Cloud 위치입니다. 예를 들면 global 또는 us-central1입니다.

  4. 테넌트 프로젝트의 Compute Engine 서비스 에이전트에 CMEK에 대한 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할을 부여하려면 Google Cloud CLI를 사용하여 gcloud kms keys add-iam-policy-binding 명령어를 실행하세요.

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    다음을 바꿉니다.

    • KEY_NAME: 암호화 키의 이름입니다.

    • KEY_RING: 키링의 이름입니다.

    • LOCATION: 키의 Google Cloud 위치입니다. 예를 들면 global 또는 us-central1입니다.

    • TENANT_PROJECT_NUMBER: 실패한 백업 작업의 status reason 메시지에서 가져온 테넌트 프로젝트 번호입니다.

    명령어가 성공하면 다음과 같이 출력됩니다.

    - members:
    - serviceAccount:service-987654321098@compute-system.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  5. 백업 작업을 다시 테스트합니다. 그래도 작업이 실패하면 Cloud Customer Care에 문의하여 추가 지원을 받으세요.

오류 100010104: PersistentVolumeClaim 백업 실패 - 스냅샷을 만드는 중에 조직 정책 제약 조건 위반

스냅샷 생성 중에 조직 정책 제약조건 위반으로 인해 PersistentVolumeClaim 백업 시도가 실패하면 오류 100010104가 발생하여 Failed to backup PersistentVolumeClaim - Org policy constraint violation while creating snapshot라는 오류 메시지가 표시됩니다.

GKE용 백업은 GKE 클러스터의 영구 디스크 스냅샷을 만듭니다. 스냅샷은 소비자 프로젝트라고도 하는 Google Cloud 프로젝트에 있으며 Google Cloud에서 관리하는 테넌트 프로젝트 내에 생성됩니다. 테넌트 프로젝트는 자체 조직과 별도로 google.com 조직 내에 있습니다.

조직 정책에 따라 스토리지 리소스를 만들 수 있는 위치가 결정됩니다. Constraint constraints/compute.storageResourceUseRestrictions violated 오류는 허용된 조직 구조에 속하지 않는 테넌트 프로젝트에서 리소스 또는 스냅샷이 생성되어 정책을 위반한다는 의미입니다. 테넌트 프로젝트가 Google 조직 내에 있으므로 정의된 정책에서 벗어나 백업이 실패합니다.

이 오류를 해결하려면 다음 안내를 따르세요.

  1. constraints/compute.storageResourceUseRestrictions 제약조건을 구현하는 조직 정책을 찾습니다. Google Cloud 콘솔을 사용하여 조직 정책을 보는 방법에 대한 자세한 내용은 조직 정책 보기를 참고하세요.

  2. constraints/compute.storageResourceUseRestrictions 정책을 수정하여 Backup for GKE에서 사용하는 folders/77620796932 테넌트 프로젝트 폴더를 허용 목록에 포함합니다.

  3. 폴더를 허용 목록에 추가한 후 정책 변경사항을 저장합니다.

  4. 조직 정책이 업데이트되고 전파된 후 백업 작업을 다시 테스트합니다. 일반적으로 몇 분 정도 걸립니다. 백업은 스토리지 리소스 사용 제한을 위반하지 않고 진행되어야 합니다. 그래도 작업이 실패하면 Cloud Customer Care에 문의하여 추가 지원을 받으세요.

오류 100010106: PVC 백업 실패 - Backup for GKE 서비스 에이전트의 IAM 바인딩이 누락됨

100010106 오류는 GKE용 백업 서비스 에이전트의 Identity and Access Management 바인딩이 누락되어 PersistentVolumeClaim 백업 시도가 실패할 때 발생하며, 그 결과 Failed to backup PVC - Missing IAM binding for Backup for GKE service agent라는 오류 메시지가 표시됩니다.

GKE용 백업에는 볼륨 Persistent Disk를 암호화하고 복호화하기 위해 BackupPlan의 고객 관리 암호화 키 (CMEK)를 사용할 권한이 필요합니다. Backup for GKE 서비스 에이전트에 BackupPlan CMEK에 대한 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할이 없으면 백업 작업이 실패합니다.

이 오류를 해결하려면 다음 안내를 따르세요.

  1. 프로젝트에 특정한 Google 관리 Backup for GKE 서비스 에이전트를 식별합니다. 예를 들면 service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com입니다. 다음 방법을 사용하여 프로젝트 번호를 찾을 수 있습니다.

    • Google Cloud 콘솔에서 Google Cloud 프로젝트 대시보드를 사용합니다.

    • Google Cloud CLI를 사용하여 gcloud projects describe 명령어를 실행합니다.

      gcloud projects describe PROJECT_ID –format="value(projectNumber)"
      

      PROJECT_ID를 프로젝트의 고유 이름으로 바꿉니다.

  2. 다음 CMEK 세부정보를 확인합니다.

    • 키 이름: 암호화 키의 이름입니다.

    • 키링: 키가 있는 키링의 이름입니다.

    • 위치: BackupPlan CMEK가 있는 Google Cloud 위치입니다. 예를 들면 global 또는 us-central1입니다.

  3. CMEK에 대한 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할을 Backup for GKE 서비스 에이전트에 부여하려면 Google Cloud CLI를 사용하여 gcloud kms keys add-iam-policy-binding 명령어를 실행합니다.

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    다음을 바꿉니다.

    • KEY_NAME: 암호화 키의 이름입니다.

    • KEY_RING: 키링의 이름입니다.

    • LOCATION: 키의 Google Cloud 위치입니다. 예를 들면 global 또는 us-central1입니다.

    • PROJECT_NUMBER: Google Cloud 프로젝트 번호

  4. Cloud Key Management Service 키에 필요한 Identity and Access Management 권한이 있는지 확인합니다. 예를 들면 roles/cloudkms.admin 또는 roles/owner입니다.

  5. 부여된 권한이 있는지 확인합니다. 이전 gcloud kms keys add-iam-policy-binding 명령어의 출력에서 다음과 유사한 항목을 찾습니다.

    -members:
    -serviceAccount:service-123456789012@gcp-sa-gkebackup.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  6. 필요한 권한을 부여한 후 백업 작업을 다시 테스트합니다. 작업이 완료되지 않으면 Cloud Customer Care에 문의하여 추가 지원을 받으세요.

오류 100010107: PVC 백업 실패 - IAM 바인딩 누락 - 에이전트 서비스 계정 (KCP)

오류 100010107는 Backup for GKE 백업 작업을 실행하려고 할 때 Google Kubernetes Engine 클러스터 서비스 에이전트가 고객 관리 암호화 키 (CMEK)에 액세스할 수 없어 Failed to backup PVC - Missing IAM binding - agent service account (KCP)이라는 메시지가 표시될 때 발생합니다.

일반적으로 service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com 형식인 Google Kubernetes Engine 클러스터 서비스 에이전트는 GKE 클러스터가 Google Cloud서비스와 상호작용하는 데 필수적입니다. 백업 계획에서 고객 관리 암호화 키 (CMEK)를 사용하는 경우 이 서비스 에이전트에는 CMEK를 사용하여 백업 데이터를 암호화하고 복호화할 수 있는 권한이 필요합니다. 백업 계획에 CMEK에 대한 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할이 누락된 경우 클러스터에서 시작된 백업 작업이 permission denied 오류와 함께 실패합니다.

이 오류를 해결하려면 다음 문제 해결 안내를 따르세요.

  1. Cloud Key Management Service 키의 IAM 정책을 수정할 수 있는 올바른 권한이 있는지 확인합니다. 예를 들면 cloudkms.admin 또는 roles/owner입니다.

  2. Google Kubernetes Engine 클러스터 서비스 에이전트를 식별합니다. 이 서비스 에이전트는 GKE 클러스터용으로 Google Cloud 에서 자동으로 생성하고 관리합니다. 예를 들면 service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com입니다. 전체 서비스 계정을 구성하려면 프로젝트 번호가 필요합니다. 다음 방법 중 하나를 사용하여 프로젝트 번호를 찾을 수 있습니다.

    • Google Cloud 콘솔에서 Google Cloud 프로젝트 대시보드를 사용합니다.

    • Google Cloud CLI를 사용하여 gcloud projects describe 명령어를 실행합니다.

      gcloud projects describe PROJECT_ID –-format="value(projectNumber)"
      

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

  3. 다음 CMEK 정보를 찾습니다.

    • 키 이름: 암호화 키의 이름입니다.

    • 키링: 키가 있는 키링의 이름입니다.

    • 위치: 키가 있는 Google Cloud 위치입니다. 예를 들면 global 또는 us-central1입니다.

  4. CMEK 수준에서 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할을 부여합니다. Google Kubernetes Engine 서비스 에이전트에는 암호화 키에 대한 권한이 필요합니다. CMEK에 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할을 부여하려면 Google Cloud CLI를 사용하여 gcloud kms key add-iam-policy-binding 명령어를 실행합니다.

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    다음을 바꿉니다.

    • KEY_NAME: 암호화 키의 이름입니다.

    • KEY_RING: 키링의 이름입니다.

    • LOCATION: 키의 Google Cloud 위치입니다. 예를 들면 global 또는 us-central1입니다.

    • PROJECT_NUMBER: 프로젝트의 이름입니다.

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

     - members:
     - serviceAccount:service-123456789012@container-engine-robot.iam.gserviceaccount.com
     role: roles/cloudkms.cryptoKeyEncrypterDecrypter
     ```
    
  5. Backup for GKE 작업을 다시 시도합니다. 작업이 계속 실패하면 Cloud Customer Care에 문의하여 추가 지원을 받으세요.

다음 단계