CMEK 및 기본 설정 오류 문제 해결

이 문서에서는 일반적인 CMEK 구성 오류를 찾아 완화하는 방법과 기본 리소스 위치를 설정할 때 발생하는 오류를 식별하는 방법을 설명합니다.

기본 리소스 위치 설정 문제 해결

조직 또는 폴더의 기본 스토리지 위치를 업데이트하려 하지만 다음과 유사한 오류와 함께 명령어가 실패하는 경우입니다.

ERROR: (gcloud.logging.settings.update) INVALID_ARGUMENT: The KMS key location must match the storage location. Received KMS key location: us-central1, storage location: us-west1
- '@type': type.googleapis.com/google.rpc.DebugInfo
  detail: '[ORIGINAL ERROR] generic::invalid_argument: The KMS key location must match
    the storage location. Received KMS key location: us-central1, storage location:
    us-west1 [google.rpc.error_details_ext] { message: "The KMS key location must
    match the storage location. Received KMS key location: us-central1, storage location:
    us-west1" }'

이 오류를 해결하려면 조직 또는 폴더의 기본 스토리지 위치를 조직 또는 폴더의 Cloud Key Management Service 키 위치와 일치하도록 설정하세요.

CMEK 문제 해결

CMEK를 구성하면 Cloud KMS 키가 포함된 Google Cloud 프로젝트에 관련 문제에 대한 알림이 전송됩니다. 예를 들어 KMS_KEY_NAME이 잘못되었거나, 연결된 서비스 계정에 필요한 Cloud Key Management Service CryptoKey 암호화/복호화 역할이 없거나, 키 액세스가 사용 중지된 경우 업데이트가 실패합니다.

CMEK를 구성한 후에는 다음 중 하나 이상이 발생합니다.

  • Cloud Logging에서 CMEK 액세스 문제에 대한 알림이 수신되었습니다.

  • 조직 또는 폴더에 새 Google Cloud 프로젝트를 만들 때 _Default_Required 로그 버킷에 CMEK가 사용 설정되지 않은 것을 알게 됩니다.

  • CMEK가 사용 설정된 로그 버킷에서 읽거나 로그 버킷을 만들거나 업데이트하려고 하면 오류가 발생합니다.

알림에는 실패에 관한 정보와 문제를 완화하기 위해 취할 수 있는 조치가 포함되어 있습니다.

오류 권장사항
암호화 키 권한이 거부되었습니다.

Google Cloud 프로젝트와 연관된 로깅 서비스 계정에 지정된 Cloud KMS 키로 작업을 수행하기 위한 IAM 권한이 부족합니다. 오류의 안내를 따르거나 다음 문서를 참조하세요.

암호화 키가 사용 중지되었습니다. 지정된 Cloud KMS 키가 사용 중지되었습니다. 오류의 안내에 따라 키를 다시 사용 설정합니다.
암호화 키가 폐기되었습니다.

지정된 Cloud KMS 키가 폐기되었습니다. 안내를 따르거나 다음 문서를 참조하세요.

Cloud KMS 키가 포함된 프로젝트 식별

로그 버킷, 폴더 또는 조직에서 사용되는 암호화 키가 포함된 Google Cloud 프로젝트의 ID를 식별하려면 다음을 수행합니다.

프로젝트

gcloud logging settings describe --project=PROJECT_ID

명령어를 실행하기 전에 PROJECT_ID를 로그 버킷이 포함된 프로젝트 ID로 바꿉니다.

폴더

gcloud logging settings describe --folder=FOLDER_ID

명령어를 실행하기 전에 FOLDER_ID를 폴더의 ID로 바꿉니다.

조직

gcloud logging settings describe --organization=ORGANIZATION_ID

명령어를 실행하기 전에 ORGANIZATION_ID를 조직의 ID로 바꿉니다.

위 명령어는 다음과 비슷한 정보를 반환합니다.

kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.s3ns-system.iam.gserviceaccount.com
loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.s3ns-system.iam.gserviceaccount.com

조직 및 폴더의 경우 다음 필드도 반환됩니다.

kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY

kmsKeyName 필드의 값에는 키를 저장하는 Google Cloud 프로젝트가 포함됩니다.

키 사용성 확인

키의 사용성을 확인하려면 다음 명령어를 실행하여 모든 키를 나열합니다.

gcloud kms keys list \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING

이 명령어는 각 키에 대한 정보를 표 형식으로 반환합니다. 출력의 첫 번째 줄은 열 이름 목록입니다.

NAME PURPOSE ...

명령어 결과에 Cloud KMS CryptoKey가 ENABLED으로 표시되고 키의 용도가 대칭적 암호화인지 확인합니다. PURPOSE 열에는 ENCRYPT_DECRYPT가 포함되고 PRIMARY_STATE 열에는 ENABLED가 포함되어 있어야 합니다.

필요하면 새 키를 만듭니다.

권한 구성 확인

조직의 CMEK 설정과 연결된 서비스 계정에는 반드시 구성된 키에 대한 Cloud KMS CryptoKey 암호화/복호화 역할이 있어야 합니다.

키의 Cloud IAM 정책을 나열하려면 다음 명령어를 실행합니다.

gcloud kms keys get-iam-policy KMS_KEY_NAME

필요하면 Cloud KMS CryptoKey 암호화/복호화 역할이 포함된 서비스 계정을 키에 추가합니다.