Dataproc 서버리스에서 CMEK 사용

Dataproc Serverless를 사용하면 데이터가 기본 서버리스 인프라의 디스크와 Cloud Storage 스테이징 버킷에 저장됩니다. 이 데이터는 Google에서 생성한 데이터 암호화 키(DEK)와 키 암호화 키(KEK)를 사용하여 암호화됩니다. 고객 관리 암호화 키(CMEK)를 사용하여 키 암호화 키(KEK)를 만들고 사용하고 취소할 수 있습니다. Google은 데이터 암호화 키(DEK)에 대한 제어 권한을 보유합니다. Google 데이터 암호화 키에 대한 자세한 내용은 저장 데이터 암호화 기본값을 참조하세요.

CMEK 사용

이 섹션의 단계에 따라 CMEK를 사용하여 Dataproc Serverless가 영구 디스크 및 Dataproc 스테이징 버킷에 작성하는 데이터를 암호화합니다.

  1. Cloud Key Management Service(Cloud KMS)를 사용하여 키를 만듭니다.

  2. 리소스 이름을 복사합니다.

    리소스 이름을 복사합니다.
    리소스 이름은 다음과 같이 구성됩니다.
    projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

  3. Compute Engine, Dataproc, Cloud Storage 서비스 에이전트 서비스 계정에서 키를 사용하도록 설정합니다.

    1. Cloud KMS 키를 사용하여 리소스 보호 > 필요한 역할을 참고하여 Cloud KMS CryptoKey 암호화/복호화 역할을 Compute Engine 서비스 에이전트 서비스 계정에 할당합니다. 이 서비스 계정이 Google Cloud 콘솔의 IAM 페이지에 나열되지 않은 경우 Google 제공 역할 부여 포함을 클릭하여 나열합니다.
    2. Dataproc 서비스 에이전트 서비스 계정Cloud KMS CryptoKey 암호화/복호화 역할을 할당합니다. Google Cloud CLI를 사용하여 역할을 할당할 수 있습니다.

       gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
       --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
       --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      다음을 바꿉니다.

      KMS_PROJECT_ID: Cloud KMS를 실행하는 Google Cloud 프로젝트의 ID입니다. 이 프로젝트는 Dataproc 리소스를 실행하는 프로젝트일 수도 있습니다.

      PROJECT_NUMBER: Dataproc 리소스를 실행하는 Google Cloud 프로젝트의 프로젝트 번호(프로젝트 ID 아님)입니다.

    3. Dataproc Serverless 리소스를 실행하는 프로젝트에서 Cloud KMS API를 사용 설정합니다.

    4. Dataproc 서비스 에이전트 역할Dataproc 서비스 에이전트 서비스 계정에 연결되어 있지 않은 경우 Dataproc 서비스 에이전트 서비스 계정에 연결된 커스텀 역할에 serviceusage.services.use 권한을 추가합니다. Dataproc 서비스 에이전트 역할이 Dataproc 서비스 에이전트 서비스 계정에 연결되어 있으면 이 단계를 건너뜁니다.

    5. 단계에 따라 버킷에 키를 추가합니다.

  4. 배치 워크로드를 제출하는 경우에는 다음 단계를 따릅니다.

    1. Batch kmsKey 매개변수에 키를 지정합니다.
    2. Batch stagingBucket 매개변수에 Cloud Storage 버킷 이름을 지정합니다.