Dataproc을 사용하면 클러스터 및 작업 데이터가 클러스터 및 Cloud Storage 스테이징 버킷의 Compute Engine VM과 연결된 영구 디스크에 저장됩니다. 이 영구 디스크 및 버킷 데이터는 Google에서 생성한 데이터 암호화 키(DEK)와 키 암호화 키(KEK)를 사용하여 암호화됩니다.
CMEK 기능을 사용하면 키 암호화 키(KEK)를 만들고 사용하고 취소할 수 있습니다. 데이터 암호화 키(DEK)는 Google에서 계속 관리합니다. Google 데이터 암호화 키에 대한 자세한 내용은 저장 데이터 암호화를 참조하세요.
클러스터 데이터에 CMEK 사용
고객 관리 암호화 키(CMEK)를 사용하여 다음 클러스터 데이터를 암호화할 수 있습니다.
- Dataproc 클러스터의 VM에 연결된 영구 디스크의 데이터
- Spark SQL 작업과 함께 제출된 쿼리 문자열과 같이 클러스터에 제출된 작업 인수 데이터
- 클러스터 메타데이터, 작업 드라이버 출력, 사용자가 만든 Dataproc 스테이징 버킷에 기록된 기타 데이터
클러스터 데이터 암호화에 CMEK를 사용하려면 다음 안내를 따르세요.
- Cloud Key Management Service를 사용하여 하나 이상의 키를 만듭니다.
다음 단계에서 사용하는 키의 리소스 ID라고도 하는 리소스 이름은 다음과 같이 구성됩니다.
projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
다음 서비스 계정에 다음 역할을 할당합니다.
- Compute Engine→Cloud KMS 키로 리소스 보호→시작하기 전에의 5번 항목을 따라 Cloud KMS CryptoKey 암호화/복호화 역할을 Compute Engine 서비스 에이전트 서비스 계정에 할당합니다.
Cloud Storage 서비스 에이전트 서비스 계정에 Cloud KMS CryptoKey 암호화/복호화 역할을 할당합니다.
Cloud KMS CryptoKey 암호화/복호화 및 서비스 사용량 소비자 역할을 Dataproc 서비스 에이전트 서비스 계정에 할당합니다.
클러스터 데이터 암호화에 사용할 키의 리소스 ID를 Google Cloud CLI 또는 Dataproc API에 전달합니다.
gcloud CLI
- 키를 사용하여 클러스터 영구 디스크 데이터를 암호화하려면 클러스터를 만들 때 키의 리소스 ID를
--gce-pd-kms-key
플래그에 전달합니다.gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --gce-pd-kms-key='projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME' \ other args ...
gcloud
명령줄 도구에서 키 설정을 확인할 수 있습니다.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
명령어 결과 스니펫:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name ...
- 키를 사용하여 클러스터 영구 디스크 데이터 및 작업 인수 데이터를 암호화하려면 클러스터를 만들 때 키의 리소스 ID를
--kms-key
플래그에 전달합니다.--kms-key
플래그로 암호화된 작업 유형 및 인수 목록은 Cluster.EncryptionConfig.kmsKey를 참조하세요.gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --kms-key='projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME' \ other args ...
gcloud CLI
dataproc clusters describe
명령어를 사용하여 키 설정을 확인할 수 있습니다. 클러스터 영구 디스크 및 작업 인수 데이터의 암호화에 키를 사용하도록 키 리소스 ID가gcePdKmsKeyName
및kmsKey
에 설정됩니다.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
명령어 결과 스니펫:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME kmsKey: projects/PROJECT_ID/locations/REGION/keyRings/key-KEY_RING_NAME-name/cryptoKeys/KEY_NAME ...
- Cloud Storage의 Dataproc 스테이징 버킷에 기록되는 클러스터 메타데이터, 작업 드라이버, 기타 출력 데이터를 암호화하려면 다음 안내를 따르세요.
- CMEK로 자체 버킷을 만듭니다. 버킷에 키를 추가할 때 1단계에서 만든 키를 사용합니다.
- 클러스터를 만들 때 버킷 이름을 `--bucket` 플래그에 전달합니다.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --bucket=CMEK_BUCKET_NAME \ other args ...
작업이 다음 `cmek-bucket` 예시와 같이 버킷 인수를 사용하는 경우 CMEK 사용 버킷을 `gcloud dataproc jobs submit` 명령어에 전달할 수도 있습니다.
gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \ --region=region \ --cluster=cluster-name \ -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
REST API
- 키를 사용하여 클러스터 VM 영구 디스크 데이터를 암호화하려면 cluster.create 요청의 일부로 ClusterConfig.EncryptionConfig.gcePdKmsKeyName 필드를 포함합니다.
gcloud CLI
dataproc clusters describe
명령어를 사용하여 키 설정을 확인할 수 있습니다.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
명령어 결과 스니펫:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME ...
- 키를 사용하여 클러스터 VM 영구 디스크 데이터 및 작업 인수 데이터를 암호화하려면 cluster.create 요청의 일부로
Cluster.EncryptionConfig.kmsKey
필드를 포함합니다.--kms-key
필드로 암호화된 작업 유형 및 인수 목록은 Cluster.EncryptionConfig.kmsKey를 참조하세요.gcloud CLI
dataproc clusters describe
명령어를 사용하여 키 설정을 확인할 수 있습니다. 클러스터 영구 디스크 및 작업 인수 데이터의 암호화에 키를 사용하도록 키 리소스 ID가gcePdKmsKeyName
및kmsKey
에 설정됩니다.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
명령어 결과 스니펫:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME kmsKey: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
- Cloud Storage의 Dataproc 스테이징 버킷에 기록되는 클러스터 메타데이터, 작업 드라이버, 기타 출력 데이터를 암호화하려면 다음 안내를 따르세요.
- CMEK로 자체 버킷을 만듭니다. 버킷에 키를 추가할 때 1단계에서 만든 키를 사용합니다.
- cluster.create 요청의 일부로 버킷 이름을 ClusterConfig.configBucket 필드에 전달합니다.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --bucket=CMEK_BUCKET_NAMEt \ other args ...
작업이 다음 `cmek-bucket` 예시와 같이 버킷 인수를 사용하는 경우 CMEK 사용 버킷을 `gcloud dataproc jobs submit` 명령어에 전달할 수도 있습니다.
gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \ --region=region \ --cluster=cluster-name \ -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
- 키를 사용하여 클러스터 영구 디스크 데이터를 암호화하려면 클러스터를 만들 때 키의 리소스 ID를
워크플로 템플릿 데이터에 CMEK 사용
Spark SQL 작업의 쿼리 문자열과 같은 Dataproc 워크플로 템플릿 작업 인수 데이터는 CMEK를 사용하여 암호화할 수 있습니다. 이 섹션의 1, 2, 3단계를 수행하여 Dataproc 워크플로 템플릿에 CMEK를 사용합니다. 이 기능이 사용 설정된 경우 CMEK를 사용하여 암호화된 워크플로 템플릿 작업 유형과 인수 목록은 WorkflowTemplate.EncryptionConfig.kmsKey를 참조하세요.
- Cloud Key Management Service(Cloud KMS)를 사용하여 키를 만듭니다.
다음 단계에서 사용하는 키의 리소스 이름은 다음과 같이 구성됩니다.
projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
- Dataproc 서비스 계정이 키를 사용하도록 설정하려면 다음 안내를 따르세요.
- DataprocService 에이전트 서비스 계정에 Cloud KMS
CryptoKey Encrypter/Decrypter
역할을 할당합니다. - DataprocService 에이전트 서비스 계정에 서비스 사용량
Service Usage Consumer
역할을 할당합니다.
- DataprocService 에이전트 서비스 계정에 Cloud KMS
- 워크플로의 1단계에서 만든 키를 설정하려면 Google Cloud CLI 또는 Dataproc API를 사용하면 됩니다. 워크플로에 키가 설정되면 모든 워크플로 작업 인수 및 쿼리가 WorkflowTemplate.EncryptionConfig.kmsKey에 나열된 작업 유형 및 인수의 키를 사용하여 암호화됩니다.
gcloud CLI
gcloud dataproc workflow-templates create 명령어로 워크플로 템플릿을 만들 때 키의 리소스 ID를
--kms-key
플래그에 전달합니다.예:
gcloud dataproc workflow-templates create my-template-name \ --region=region \ --kms-key='projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name' \ other args ...
gcloud
명령줄 도구에서 키 설정을 확인할 수 있습니다.gcloud dataproc workflow-templates describe TEMPLATE_NAME \ --region=REGION
... id: my-template-name encryptionConfig: kmsKey: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME ...
REST API
workflowTemplates.create 요청의 일부로 WorkflowTemplate.EncryptionConfig.kmsKey를 사용합니다.
workflowTemplates.get 요청을 실행하여 키 설정을 확인할 수 있습니다. 반환된 JSON에는
kmsKey
가 포함됩니다.... "id": "my-template-name", "encryptionConfig": { "kmsKey": "projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name" },
Cloud 외부 키 관리자
Cloud 외부 키 관리자(Cloud EKM)(EKM)를 사용하면 지원되는 외부 키 관리 파트너가 관리하는 키를 사용하여 Dataproc 데이터를 보호할 수 있습니다. Dataproc에서 EKM을 사용하는 단계는 CMEK 키 설정 시 사용하는 단계와 동일하지만 키가 외부 관리 키의 URI를 가리킨다는 차이가 있습니다(자세한 내용은Cloud EKM 개요 참조).
Cloud EKM 오류
Cloud EKM을 사용하는 경우 클러스터를 만들려고 시도하면 입력, Cloud EKM, 외부 키 관리 파트너 시스템 또는 EKM과 외부 시스템 간의 통신과 관련된 오류로 인해 실패할 수 있습니다. REST API 또는 Google Cloud 콘솔을 사용하는 경우 오류가 Logging에 로깅됩니다. 로그 보기 탭에서 실패한 클러스터의 오류를 조사할 수 있습니다.