このページでは、Cloud KMS で暗号鍵を使用して、Google 提供のテンプレート パラメータ内の機密データを暗号化する方法について説明します。
概要
Google 提供の一部のテンプレートでは、ユーザー名、パスワード、JDBC 接続文字列、API キーなどの機密データをテンプレート パラメータで暗号化できます。サポートされている場合、これらのテンプレートには、Cloud KMS 暗号鍵を指定するパラメータが含まれています。次に例を示します。
KMSEncryptionKey
tokenKMSEncryptionKey
apiKeyKMSEncryptionKey
これらのテンプレートで Cloud KMS 暗号鍵を使用するには、次の操作を行います。
- Dataflow のワーカー サービス アカウントに Cloud KMS CryptoKey 復号のロールを付与します。
- 暗号鍵を作成します。
- 鍵を使用してデータを暗号化します。
- 暗号化されたデータを Base64 でエンコードします。
- テンプレートを実行するときに、暗号鍵を指定し、暗号化されたパラメータ値を使用します。
暗号鍵を指定する場合は、暗号化をサポートするすべてのパラメータを暗号化する必要があります。暗号化できるパラメータについては、特定のテンプレートのドキュメントをご覧ください。
例
次の例では、MySQL to BigQuery テンプレートを使用します。
キーリングの作成
gcloud kms keyrings create "KEY_RING_NAME" \ --location "global"
暗号鍵を作成します。
gcloud kms keys create "KEY_NAME" \ --location "global" \ --keyring "KEY_RING_NAME" \ --purpose "encryption"
ユーザー名、パスワード、JDBC 接続文字列を暗号化して Base64 でエンコードします。
export USER_NAME=`echo -n "USER_NAME" \ | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \ | base64 -w 0` export PASSWORD=`echo -n "PASSWORD" \ | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \ | base64 -w 0` export CONNECTION_STRING=`echo -n "CONNECTION_STRING" \ | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \ | base64 -w 0`
テンプレートを実行します。
gcloud dataflow flex-template run mysql-job \ --project=PROJECT_ID \ --region=us-central1 \ --template-file-gcs-location=gs://dataflow-templates-us-central1/latest/flex/MySQL_to_BigQuery \ --parameters \ connectionURL="$CONNECTION_STRING",\ query="SOURCE_SQL_QUERY",\ outputTable=PROJECT_ID:DATASET.TABLE_NAME,\ bigQueryLoadingTemporaryDirectory=CLOUD_STORAGE_PATH,\ username="$USER_NAME",\ password="$PASSWORD",\ KMSEncryptionKey=projects/PROJECT_ID/locations/global/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
トラブルシューティング
このセクションでは、テンプレート パラメータの暗号化に関するトラブルシューティング情報を説明します。
アクセスが拒否されました
ジョブを実行すると、次のような PERMISSION_DENIED
エラーがジョブログに表示されます。
PERMISSION_DENIED: Permission cloudkms.cryptoKeyVersions.useToDecrypt denied on
resource RESOURCE_PATH (or it may not exist)
データを復号するには、Dataflow ワーカー サービス アカウントに暗号鍵に対する cloudkms.cryptoKeyVersions.useToDecrypt 権限が必要です。ワーカー サービス アカウントに Cloud KMS CryptoKey 復号のロールが付与されていることを確認します。詳細については、Dataflow のセキュリティと権限をご覧ください。
次のステップ
- Cloud Key Management Service の詳細を確認する。
- Google 提供のテンプレートのリストを確認する。