이 문서에서는 조직의 규정 준수 요구사항을 충족하기 위해 Cloud Logging용 고객 관리 암호화 키(CMEK)를 구성하고 관리하는 방법을 설명합니다. 사용자는 조직, 폴더 또는 둘 다에 대해 기본 리소스 설정으로 CMEK를 구성할 수 있습니다. 구성된 경우 Cloud Logging은 조직 또는 폴더의 모든 새 로그 버킷을 고객 관리 키로 암호화합니다.
개요
기본적으로 Cloud Logging은 저장된 미사용 고객 콘텐츠를 암호화합니다. Logging에서 로그 버킷에 저장한 데이터는 봉투 암호화라고 하는 프로세스인 키 암호화 키를 통해 암호화됩니다. 로깅 데이터에 액세스하려면 사용자의 작업 없이 Google에서 대신 관리하는 이러한 키 암호화 키에 액세스해야 합니다.
조직에는 Google의 기본 저장 데이터 암호화가 제공하지 않는 규제 요건, 규정 준수 관련 요건, 고급 암호화 요건이 있을 수 있습니다. 조직의 요건을 충족하려면 Google이 데이터를 보호하는 암호화 키를 관리하는 것이 아니라 사용자가 자체 암호화를 제어하고 관리하도록 CMEK를 구성할 수 있습니다.
CMEK의 이점 및 제한사항을 포함한 자세한 내용은 고객 관리 암호화 키를 참조하세요.
CMEK를 Logging의 기본 리소스 설정으로 구성하면 조직 또는 폴더의 새 로그 버킷이 구성된 키로 자동으로 암호화됩니다. 그러나 이 키를 변경하거나 로그 버킷을 만들고 다른 키를 지정할 수 있습니다. 자세한 내용은 로그 버킷에 CMEK 구성을 참조하세요.
기본 요건
시작하려면 다음 단계를 완료하세요.
CMEK 사용 시에는 몇 가지 제한사항이 있습니다. CMEK가 사용 설정된 로그 버킷을 만들기 전에 제한사항을 검토하세요.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
이 가이드에서는 Google Cloud CLI를 사용하는 방법을 설명합니다.
CMEK를 사용 설정할 조직 또는 폴더의 식별자를 찾습니다.
- ORGANIZATION_ID는 CMEK를 사용 설정할 Google Cloud 조직의 고유한 숫자 식별자입니다. 폴더에 대해 CMEK만 구성하려는 경우에는 이 값이 필요하지 않습니다. 이 식별자를 가져오는 방법에 대한 자세한 내용은 조직 ID 가져오기를 참조하세요.
- FOLDER_ID는 CMEK를 사용 설정할 Google Cloud 폴더의 고유한 숫자 식별자입니다. 조직의 CMEK만 구성하려는 경우에는 이 값이 필요하지 않습니다. 폴더 사용에 대한 자세한 내용은 폴더 만들기 및 관리를 참조하세요.
-
키를 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트 또는 상위 리소스에 대한 Cloud KMS 관리자(
roles/cloudkms.admin
) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요. 조직에 대한 다음 Cloud Logging 권한이 있는지 확인합니다.
logging.settings.get
logging.settings.update
Cloud KMS를 실행할 Google Cloud 프로젝트에 대해 Cloud KMS API를 사용 설정합니다.
Cloud KMS를 실행할 Google Cloud 프로젝트에 키링 및 키를 만듭니다.
Cloud Logging을 사용하면 모든 리전의 키를 사용할 수 있습니다. 하지만 로그 버킷을 만들 때는 로그 버킷의 위치가 키의 위치와 일치해야 합니다. 지원되는 리전에 대한 자세한 내용은 다음을 참고하세요.
이 문서의 단계에 따라 CMEK를 Logging의 기본 리소스 설정으로 구성하면 조직 또는 폴더에서 생성된 새 로그 버킷이 CMEK에 자동으로 구성됩니다. 또한 로그 버킷의 위치가 키 위치와 일치해야 하므로 CMEK를 기본 리소스 설정으로 구성한 후에는
global
리전에 로그 버킷을 만들 수 없습니다.다음 Cloud KMS 매개변수의 값을 식별하세요.
- KMS_PROJECT_ID는 고유한 영숫자 식별자로, Cloud KMS를 실행하는 Google Cloud 프로젝트의 Google Cloud 프로젝트 이름과 임의로 할당된 번호로 구성되어 있습니다. 이 식별자를 가져오는 방법에 대한 자세한 내용은 프로젝트 식별을 참조하세요.
- KMS_KEY_LOCATION은 Cloud KMS 키의 리전입니다.
- KMS_KEY_RING은 Cloud KMS 키링의 이름입니다.
- KMS_KEY_NAME은 Cloud KMS 키 이름입니다.
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY
같은 형식으로 지정해야 합니다.
조직 또는 폴더에 CMEK 사용 설정
기본 요건 단계를 완료한 후 다음 안내에 따라 Google Cloud 조직에 CMEK를 사용 설정하세요.
서비스 계정 ID 확인
CMEK를 적용할 조직 또는 폴더와 연결된 서비스 계정 ID를 확인하려면 다음 gcloud logging settings describe
명령어를 실행합니다.
폴더
gcloud logging settings describe --folder=FOLDER_ID
조직
gcloud logging settings describe --organization=ORGANIZATION_ID
이전 명령어를 실행하면 조직 또는 폴더의 서비스 계정이 아직 없는 경우 서비스 계정이 생성되고 kmsServiceAccountId
필드에 ID가 반환됩니다.
다음은 조직이 지정된 경우 이전 명령어에 대한 샘플 응답을 보여줍니다.
kmsServiceAccountId: cmek-p12345@gcp-sa-logging.iam.gserviceaccount.com name: organizations/ORGANIZATION_ID/settings
이 예시에서 SERVICE_ACCT_NAME의 값은 cmek-p12345
입니다.
프로비저닝 프로세스는 리소스당 한 번만 실행합니다. describe
명령어를 여러 번 실행하면 kmsServiceAccountId
필드에 동일한 값이 반환됩니다.
Google Cloud CLI를 사용할 수 없으면 Cloud Logging API 메서드 getSettings
를 실행하세요.
암호화/복호화 역할 할당
CMEK를 사용하려면 서비스 계정에 Cloud KMS CryptoKey 암호화/복호화 역할을 할당하여 Cloud KMS 사용 권한을 서비스 계정에 부여합니다.
gcloud
gcloud kms keys add-iam-policy-binding \ --project=KMS_PROJECT_ID \ --member serviceAccount:SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY_NAME
명령어에서 다음과 같이 변수를 설정합니다.
SERVICE_ACCT_NAME를 이전 단계에서 결정한
serviceAccountId
값으로 바꿉니다.다른 변수를 기본 요건 단계에서 결정한 값으로 바꿉니다.
콘솔
- Google Cloud 콘솔에서 Cloud Key Management Service 키 브라우저를 엽니다.
Cloud KMS 키 브라우저 열기 원하는 키가 포함된 키링의 이름을 클릭합니다.
원하는 키의 체크박스를 선택합니다.
권한 탭을 사용할 수 있게 됩니다.
구성원 추가 대화상자에서 액세스 권한을 부여할 로깅 서비스 계정의 이메일 주소를 지정합니다.
역할 선택 드롭다운에서 Cloud KMS CryptoKey 암호화/복호화를 선택합니다.
추가를 클릭합니다.
조직 정책 구성
Logging은 CMEK 보호가 필요할 수 있는 조직 정책을 지원하고 CMEK 보호에 사용할 수 있는 Cloud KMS CryptoKey를 제한할 수 있습니다.
logging.googleapis.com
이constraints/gcp.restrictNonCmekServices
제약조건의 서비스Deny
정책 목록에 있으면 Logging은 CMEK로 보호되지 않는 새 사용자 정의 버킷의 생성을 거부합니다. 하지만 이 제약조건은 Cloud Logging이 Google Cloud 프로젝트를 만들 때 생성되는_Required
및_Default
로그 버킷의 생성을 차단하지는 않습니다.constraints/gcp.restrictCmekCryptoKeyProjects
가 적용되면 Logging이 허용된 프로젝트, 폴더, 조직에서 CryptoKey로 보호되는 CMEK로 보호되는 리소스를 만듭니다.
CMEK 및 조직 정책에 대한 자세한 내용은 CMEK 조직 정책을 참고하세요.
CMEK 제약조건을 지정하는 조직 정책이 있는 경우 이러한 제약조건이 조직 또는 폴더의 Logging 기본 리소스 설정과 일치하는지 확인합니다. 또한 기본 리소스 설정을 수정하려면 기본 리소스 설정을 업데이트하기 전에 조직 정책을 검토하고 필요한 경우 업데이트합니다.
조직 정책을 보거나 구성하려면 다음을 수행하세요.
-
Google Cloud 콘솔에서 조직 정책 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 IAM 및 관리자인 결과를 선택합니다.
- 조직을 선택합니다.
CMEK와 관련된 제약조건을 확인하고 필요한 경우 업데이트합니다.
조직 정책을 수정하는 방법에 대한 자세한 내용은 정책 만들기 및 수정을 참조하세요.
Cloud KMS 키로 Cloud Logging 구성
CMEK를 Logging에 대한 기본 리소스 설정으로 구성하려면 다음 gcloud logging settings update
명령어를 실행합니다.
폴더
gcloud logging settings update \ --folder=FOLDER_ID \ --kms-location=KMS_KEY_LOCATION \ --kms-key-name=KMS_KEY_NAME \ --kms-keyring=KMS_KEY_RING \ --kms-project=KMS_PROJECT_ID
이전 명령어는 Cloud KMS 키에 관한 정보를 저장하도록 기본 리소스 설정을 업데이트합니다. 폴더의 기본 스토리지 위치가 KMS_KEY_LOCATION 값으로 설정되어 있는지 확인해야 합니다. 기본 스토리지 위치를 설정하지 않았거나 해당 위치의 값이 KMS_KEY_LOCATION 값과 일치하지 않으면 이전 명령어에 다음을 추가하세요.
--storage-location = KMS_KEY_LOCATION
--storage-location
플래그를 사용하면 폴더의 기본 스토리지 위치를 설정하거나 업데이트할 수 있습니다.
조직
gcloud logging settings update \ --organization=ORGANIZATION_ID \ --kms-location=KMS_KEY_LOCATION \ --kms-key-name=KMS_KEY_NAME \ --kms-keyring=KMS_KEY_RING \ --kms-project=KMS_PROJECT_ID
이전 명령어는 Cloud KMS 키에 관한 정보를 저장하도록 기본 리소스 설정을 업데이트합니다. 조직의 기본 스토리지 위치가 KMS_KEY_LOCATION 값으로 설정되어 있는지 확인해야 합니다. 기본 스토리지 위치를 설정하지 않았거나 해당 위치의 값이 KMS_KEY_LOCATION 값과 일치하지 않으면 이전 명령어에 다음을 추가하세요.
--storage-location = KMS_KEY_LOCATION
--storage-location
플래그를 사용하면 조직의 기본 스토리지 위치를 설정하거나 업데이트할 수 있습니다.
키가 적용되었으면 조직 또는 폴더의 새 로그 버킷이 이 키를 사용하여 저장 데이터를 암호화하도록 구성됩니다. 개별 로그 버킷에 대해 키를 변경할 수도 있습니다. 리전이 데이터의 리전 범위와 일치하는 키를 사용해야 하므로 global
리전에 로그 버킷을 만들 수 없습니다.
Google Cloud CLI를 사용할 수 없으면 Cloud Logging API 메서드 updateSettings
를 실행하세요.
키 사용 설정 확인
조직 또는 폴더에 CMEK가 성공적으로 사용 설정되었는지 확인하려면 다음 gcloud logging settings describe
명령어를 실행합니다.
폴더
gcloud logging settings describe --folder=FOLDER_ID
조직
gcloud logging settings describe --organization=ORGANIZATION_ID
이전 명령어는 Cloud KMS 키 이름을 반환합니다.
kmsKeyName: KMS_KEY_NAME kmsServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
kmsKeyName
필드가 채워지면 조직 또는 폴더에 CMEK가 사용 설정됩니다.
지원되는 대상으로 로그 라우팅
Cloud Logging 로그 버킷은 CMEK로 데이터를 암호화하도록 구성할 수 있습니다. CMEK를 조직 또는 폴더의 기본 리소스 설정으로 구성하면 조직 또는 폴더의 새 로그 버킷이 자동으로 CMEK를 사용합니다. 이러한 로그 버킷의 키를 변경할 수 있으며 기본 리소스 설정에서 지정된 것과 다른 KMS 키를 사용하는 로그 버킷을 만들 수 있습니다.
로그 버킷에 CMEK를 사용 설정할 때 키와 제한사항을 변경하는 방법을 포함해 로그 버킷에 적용되는 CMEK에 대한 자세한 내용은 로그 버킷에 CMEK 구성을 참조하세요.
Cloud Storage는 로그 라우팅을 위한 CMEK를 지원합니다. Cloud Storage에 CMEK를 구성하는 방법에 관한 안내는 고객 관리 암호화 키 사용을 참고하세요.
로그 데이터를 Cloud Storage로 라우팅할 때 키를 사용할 수 없어 데이터가 손실된 경우 해당 로그를 로그 버킷에도 저장하면 로그를 Cloud Storage에 일괄적으로 소급해 복사할 수 있습니다. 자세한 내용은 로그 항목 복사를 참조하세요.
BigQuery는 기본적으로 비활성 상태로 저장된 고객 콘텐츠를 암호화합니다. 자세한 내용은 Cloud Key Management Service 키로 데이터 보호를 참조하세요.
Pub/Sub는 기본적으로 비활성 상태로 저장된 고객 콘텐츠를 암호화합니다. 자세한 내용은 메시지 암호화 구성을 참조하세요.
Cloud KMS 키 관리
다음 섹션에서는 Cloud KMS 키를 변경, 액세스 취소 또는 사용 중지하는 방법을 설명합니다.
Cloud KMS 키 변경
조직 또는 폴더와 연결된 Cloud KMS 키를 변경하려면 키를 만들고 새 Cloud KMS 키 이름으로 CMEK 설정을 업데이트하세요.
폴더
gcloud logging settings update \ --folder=FOLDER_ID --kms-key-name=NEW_KMS_KEY_NAME --kms-location=NEW_KMS_KEY_LOCATION \ --kms-keyring=NEW_KMS_KEY_RING \ --kms-project=NEW_KMS_PROJECT_ID
폴더의 기본 스토리지 위치가 KMS_KEY_LOCATION 값으로 설정되어 있는지 확인해야 합니다. 기본 스토리지 위치를 설정하지 않았거나 해당 위치의 값이 KMS_KEY_LOCATION 값과 일치하지 않으면 이전 명령어에 다음을 추가하세요.
--storage-location = NEW_KMS_KEY_LOCATION
조직
gcloud logging settings update \ --organization=ORGANIZATION_ID --kms-key-name=NEW_KMS_KEY_NAME --kms-location=NEW_KMS_KEY_LOCATION \ --kms-keyring=NEW_KMS_KEY_RING \ --kms-project=NEW_KMS_PROJECT_ID
조직의 기본 스토리지 위치가 KMS_KEY_LOCATION 값으로 설정되어 있는지 확인해야 합니다. 기본 스토리지 위치를 설정하지 않았거나 해당 위치의 값이 KMS_KEY_LOCATION 값과 일치하지 않으면 이전 명령어에 다음을 추가하세요.
--storage-location = NEW_KMS_KEY_LOCATION
Cloud KMS 키에 대한 액세스 권한 취소
Cloud KMS 키에 대해 구성된 서비스 계정의 IAM 권한을 삭제하여 해당 키에 대한 Logging의 액세스 권한을 취소할 수 있습니다.
키에 대한 Logging의 액세스 권한을 삭제한 후 변경사항이 적용되려면 최대 1시간까지 걸릴 수 있습니다.
Cloud KMS 키에 대한 Logging의 액세스 권한을 취소하려면 다음 Google Cloud CLI 명령어를 실행합니다.
gcloud kms keys remove-iam-policy-binding \ --project=KMS_PROJECT_ID \ --member serviceAccount:SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY_NAME
CMEK 사용 중지
조직 또는 폴더에서 CMEK를 사용 중지하면 이후 작업에만 CMEK 정책 적용이 삭제되고 이전에 적용된 구성은 그대로 유지됩니다.
CMEK가 기본 리소스 설정으로 구성된 리소스에서 CMEK를 사용 중지하려면 다음 Google Cloud CLI 명령어를 실행하세요.
폴더
gcloud logging settings update --folder=FOLDER_ID --clear-kms-key
조직
gcloud logging settings update --organization=ORGANIZATION_ID --clear-kms-key
키를 삭제하려면 키 버전 삭제 및 복원을 참조하세요.
Cloud KMS 키 순환 고려사항
Cloud Logging은 Google Cloud 조직 또는 폴더와 연결된 Cloud KMS 키가 순환할 때 임시 재해 복구 파일의 암호화 키를 자동으로 순환하지 않습니다. 기존 복구 파일은 생성될 때 사용한 키 버전을 계속 사용합니다. 새 복구 파일은 현재 기본 키 버전을 사용합니다.
제한사항
다음은 CMEK를 Logging의 기본 리소스 설정으로 구성할 때 알려진 제한사항입니다.
재해 복구 파일 사용 불가능
다음 두 조건을 모두 충족하는 경우 Logging은 Cloud KMS 키를 사용하고 액세스할 수 있습니다.
- 키가 사용 설정되어 있습니다.
- 로깅 서비스 계정에 키에 대한 암호화 및 복호화 권한이 있습니다.
Logging에서 Cloud KMS 키에 액세스하지 못하면 Logging이 임시 재해 복구 파일을 작성할 수 없으며 사용자는 쿼리 작동을 중지합니다. 키 액세스가 복원된 후에도 쿼리 성능이 저하될 수 있습니다.
Logging이 라우팅 지원을 위해 필요한 임시 파일을 쓸 수 없기 때문에 Cloud Storage로의 로그 라우팅도 영향을 받을 수 있습니다. 데이터를 암호화 또는 복호화하는 동안 오류가 발생하면 Cloud KMS 키가 포함된 Google Cloud 프로젝트로 알림이 전송됩니다.
클라이언트 라이브러리 가용성
Logging 클라이언트 라이브러리는 CMEK를 구성하는 메서드를 제공하지 않습니다.
Cloud EKM 키 사용 불가로 인한 성능 저하
Cloud EKM 키를 사용하는 경우 Google은 외부 키 관리 파트너 시스템에서 외부 관리 키의 가용성을 제어 할 수 없습니다.
CMEK가 조직 또는 폴더의 기본 리소스 설정으로 구성된 경우 외부에서 관리되는 키를 사용할 수 없으면 Cloud Logging이 계속 키에 대한 액세스를 다시 시도합니다. 또한 Cloud Logging은 수신 로그 데이터를 최대 1시간 동안 버퍼링합니다. 1시간이 지난 후에도 클라우드 로깅이 외부 관리 키에 액세스할 수 없으면 Cloud Logging이 데이터 삭제를 시작합니다.
CMEK가 로그 버킷에 적용되고 외부에서 관리되는 키를 사용할 수 없으면 Cloud Logging에서 로그를 계속 로그 버킷에 저장하지만 사용자는 해당 데이터에 액세스할 수 없습니다.
외부 키를 사용할 때에 고려할 사항과 가능한 대안은 Cloud 외부 키 관리자 문서를 참조하세요.
로그 버킷 제한사항
로그 버킷에서 CMEK를 사용할 때의 제한사항은 제한사항을 참고하세요.
할당량
로깅 사용량 한도에 대한 자세한 내용은 할당량 및 한도를 참조하세요.
구성 오류 문제해결
CMEK 구성 오류 문제 해결에 대한 자세한 내용은 CMEK 및 기본 설정 오류 문제 해결을 참조하세요.