이 문서에서는 일반적인 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 암호화/복호화 역할이 포함된 서비스 계정을 키에 추가합니다.