Dataproc を使用する場合、クラスタデータとジョブデータは、クラスタ内の Compute Engine VM に関連付けられている Persistent Disk(PD)上と Cloud Storage ステージング バケット内に保存されます。PD とバケットに保存されるデータは、Google によって生成されるデータ暗号鍵(DEK)と鍵暗号鍵(KEK)を使用して暗号化されます。CMEK 機能によって、ユーザー側で鍵暗号鍵(KEK)の作成、使用、取り消しを行うことができます。データ暗号鍵(DEK)は引き続き、Google が管理します。Google データ暗号鍵の詳細については、保存データの暗号化をご覧ください。
をご覧ください。CMEK の使用
CMEK を使用すると、Dataproc クラスタ内の VM に関連付けられた PD や、Dataproc ステージング バケットに書き込まれたクラスタ メタデータとジョブドライバ出力のデータを暗号化できます。手順 1 と 2 を行った後に、CMEK をクラスタの PD に使用する場合は手順 3、Cloud Storage バケットに使用する場合は手順 4、その両方に使用する場合は手順 5 を行ってください。
- Cloud Key Management Service(Cloud KMS)を使用して鍵を作成します。以降の手順で使用するため、リソース名をコピーします。リソース名は次のように構成されています。
projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
Compute Engine と Cloud Storage のサービス アカウントで鍵を使用できるようにします。
- Compute Engine → Cloud KMS 鍵によるリソースの保護 → 始める前にの項目 5 に従って、Cloud KMS の
CryptoKey Encrypter/Decrypter
のロールを Compute Engine のサービス アカウントに割り当てます。 - Cloud KMS の
CryptoKey Encrypter/Decrypter
のロールを Cloud Storage のサービス アカウントに割り当てます。
- Compute Engine → Cloud KMS 鍵によるリソースの保護 → 始める前にの項目 5 に従って、Cloud KMS の
たとえば、
gcloud
コマンドライン ツールまたは Dataproc API を使用して、手順 1 で作成したキーを Dataproc クラスタの VM に関連付けられた PD に設定できます。gcloud コマンド
gcloud dataproc clusters create コマンドでクラスタを作成するときに、手順 1 で取得した Cloud KMS リソース ID を
--gce-pd-kms-key
フラグに渡します。例:
gcloud dataproc clusters create my-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 ...
REST API
cluster.create リクエストの一部として ClusterConfig.EncryptionConfig.gcePdKmsKeyName を使用します。
鍵の設定を確認するには、clusters.get リクエストを発行します。次のように、レスポンスとして返される JSON に
gcePdKmsKeyName
が含まれています。... { "projectId": "project-id", "clusterName": "cluster-name", "config": { "encryptionConfig": { "gcePdKmsKeyName": "projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name" } },
Dataproc によって使用される Cloud Storage バケットで CMEK を使用して、クラスタとジョブのデータの読み取りや書き込みを行うには、CMEK を使用してバケットを作成します。注: バケットで鍵を追加するには、手順 1 で作成した鍵を使用します。 このバケットの名前を、gcloud beta dataproc clusters create コマンドでクラスタを作成するときに渡します。
例:
gcloud dataproc clusters create my-cluster \ --region=region \ --bucket=name-of-CMEK-bucket \ other args ...
ジョブがバケット引数を受け取る場合には、CMEK を有効化したバケットを
例:gcloud dataproc jobs submit
コマンドに渡すこともできます。次の例では...cmek-bucket...
バケット引数を PySpark ジョブの送信時に渡しています。gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \ --region=region \ --cluster=cluster-name \ -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
クラスタ内の PD と Dataproc で使用される Cloud Storage バケットで CMEK を使用するには、手順 3 と 4 で説明したように、
--gce-pd-kms-key
フラグと--bucket
フラグの両方をgcloud dataproc clusters create
コマンドに渡します。PD データとバケットデータには、それぞれ異なる鍵を作成して使用できます。