Cloud Logging용 CMEK 구성

이 문서에서는 조직의 규정 준수 요구사항을 충족하기 위해 Cloud Logging용 고객 관리 암호화 키(CMEK)를 구성하고 관리하는 방법을 설명합니다. 사용자는 조직, 폴더 또는 둘 다에 대해 기본 리소스 설정으로 CMEK를 구성할 수 있습니다. 구성된 경우 Cloud Logging은 조직 또는 폴더의 모든 새 로그 버킷이 고객 관리 키로 암호화되도록 합니다.

개요

기본적으로 Cloud Logging은 저장된 미사용 고객 콘텐츠를 암호화합니다. Logging에서 로그 버킷에 저장한 데이터는 봉투 암호화라고 하는 프로세스인 키 암호화 키를 통해 암호화됩니다. 로깅 데이터에 액세스하려면 사용자의 작업 없이 Google에서 대신 관리하는 이러한 키 암호화 키에 액세스해야 합니다.

조직에는 Google의 기본 저장 데이터 암호화가 제공하지 않는 규제 요건, 규정 준수 관련 요건, 고급 암호화 요건이 있을 수 있습니다. 조직의 요건을 충족하려면 Google이 데이터를 보호하는 암호화 키를 관리하는 것이 아니라 사용자가 자체 암호화를 제어하고 관리하도록 CMEK를 구성할 수 있습니다.

CMEK의 이점 및 제한사항을 포함한 자세한 내용은 고객 관리 암호화 키를 참조하세요.

Logging에 기본 리소스 설정으로 CMEK를 구성하면 조직 또는 폴더의 새 로그 버킷이 구성된 키로 자동으로 암호화됩니다. 그러나 이 키를 변경하거나 로그 버킷을 만들고 다른 키를 지정할 수 있습니다. 자세한 내용은 로그 버킷에 CMEK 구성을 참조하세요.

기본 요건

시작하려면 다음 단계를 완료하세요.

  1. CMEK 사용 시 몇 가지 제한사항이 있습니다. CMEK가 사용 설정된 로그 버킷을 만들기 전에 제한사항을 검토하세요.

  2. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

    gcloud init

    이 가이드에서는 Google Cloud CLI를 사용하는 방법을 설명합니다.

  3. CMEK를 사용 설정할 조직 또는 폴더의 식별자를 찾습니다.

    • ORGANIZATION_ID는 CMEK를 사용 설정할 Google Cloud 조직의 고유한 숫자 식별자입니다. 폴더에 CMEK만 구성하려는 경우 이 값이 필요하지 않습니다. 이 식별자를 가져오는 방법에 대한 자세한 내용은 조직 ID 가져오기를 참조하세요.
    • FOLDER_ID는 CMEK를 사용 설정할 Google Cloud 폴더의 고유한 숫자 식별자입니다. 조직에 CMEK만 구성하려는 경우 이 값이 필요하지 않습니다. 폴더 사용에 대한 자세한 내용은 폴더 만들기 및 관리를 참조하세요.
  4. 키를 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트 또는 상위 리소스에 대한 Cloud KMS 관리자(roles/cloudkms.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

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

  5. 조직에 대한 다음 Cloud Logging 권한이 있는지 확인합니다.

    • logging.settings.get
    • logging.settings.update
  6. Cloud KMS를 실행할 Google Cloud 프로젝트에 대해 Cloud KMS API를 사용 설정합니다.

  7. Cloud KMS를 실행할 Google Cloud 프로젝트에 키링 및 키를 만듭니다.

    Cloud Logging을 사용하면 모든 리전의 키를 사용할 수 있습니다. 하지만 로그 버킷을 만들 때 로그 버킷의 위치가 키 위치와 일치해야 합니다. 지원되는 리전에 대한 자세한 내용은 다음을 참조하세요.

    이 문서의 단계에 따라 CMEK를 Logging의 기본 리소스 설정으로 구성하면 조직 또는 폴더에서 생성된 새 로그 버킷이 CMEK에 자동으로 구성됩니다. 또한 로그 버킷의 위치가 키 위치와 일치해야 하므로 CMEK를 기본 리소스 설정으로 구성한 후에는 global 리전에 로그 버킷을 만들 수 없습니다.

  8. 다음 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 값으로 바꿉니다.

  • 다른 변수를 기본 요건 단계에서 결정한 값으로 바꿉니다.

콘솔

  1. Google Cloud 콘솔에서 Cloud Key Management Service 키 브라우저를 엽니다.
    Cloud KMS 키 브라우저 열기
  2. 원하는 키가 포함된 키링의 이름을 클릭합니다.

  3. 원하는 키의 체크박스를 선택합니다.

    권한 탭을 사용할 수 있게 됩니다.

  4. 구성원 추가 대화상자에서 액세스 권한을 부여할 로깅 서비스 계정의 이메일 주소를 지정합니다.

  5. 역할 선택 드롭다운에서 Cloud KMS CryptoKey 암호화/복호화를 선택합니다.

  6. 추가를 클릭합니다.

조직 정책 구성

Logging은 CMEK 보호가 필요할 수 있는 조직 정책을 지원하고 CMEK 보호에 사용할 수 있는 Cloud KMS CryptoKey를 제한할 수 있습니다.

  • logging.googleapis.comconstraints/gcp.restrictNonCmekServices 제약조건의 서비스 Deny 정책 목록에 있으면 Logging은 CMEK로 보호되지 않는 새 사용자 정의 버킷의 생성을 거부합니다. 하지만 이 제약조건은 Cloud Logging이 Google Cloud 프로젝트를 만들 때 생성되는 _Required_Default 로그 버킷의 생성을 차단하지는 않습니다.

  • constraints/gcp.restrictCmekCryptoKeyProjects가 적용되면 Logging이 허용된 프로젝트, 폴더, 조직에서 CryptoKey로 보호되는 CMEK로 보호되는 리소스를 만듭니다.

CMEK 및 조직 정책에 대한 자세한 내용은 CMEK 조직 정책을 참조하세요.

CMEK 제약조건을 지정하는 조직 정책이 있는 경우 이러한 제약조건이 조직 또는 폴더에 대한 Logging의 기본 리소스 설정과 일치하는지 확인하세요. 또한 기본 리소스 설정을 수정하려면 기본 리소스 설정을 업데이트하기 전에 조직 정책을 검토하고 필요한 경우 업데이트합니다.

조직 정책을 보거나 구성하려면 다음을 수행하세요.

  1. Google Cloud 콘솔의 탐색 패널에서 IAM 및 관리자를 선택한 후 조직 정책을 선택합니다.

    조직 정책으로 이동

  2. 조직을 선택합니다.
  3. 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가 사용 설정됩니다.

지원되는 대상으로 로그 라우팅

  • CMEK로 데이터를 암호화하도록 Cloud Logging 로그 버킷을 구성할 수 있습니다. 조직 또는 폴더의 기본 리소스 설정으로 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의 액세스 권한을 삭제한 후 변경사항이 적용되려면 최대 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 키가 순환할 때 임시 재해 복구 파일의 암호화 키를 자동으로 순환하지 않습니다. 기존 복구 파일은 생성될 때 사용한 키 버전을 계속 사용합니다. 새 복구 파일은 현재 기본 키 버전을 사용합니다.

제한사항

다음은 Logging의 기본 리소스 설정으로 CMEK를 구성할 때 알려진 제한사항입니다.

재해 복구 파일 사용 불가능

다음 두 조건을 모두 충족하는 경우 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 및 기본 설정 오류 문제 해결을 참조하세요.