本頁面說明如何使用 Cloud KMS 的加密金鑰,加密 Google 提供的範本參數中的機密資料。
總覽
部分 Google 提供的範本可讓您加密範本參數中的機密資料,例如使用者名稱、密碼、JDBC 連線字串和 API 金鑰。如果支援,這些範本會包含指定 Cloud KMS 加密金鑰的參數,例如:
KMSEncryptionKeytokenKMSEncryptionKeyapiKeyKMSEncryptionKey
如要在這些範本中使用 Cloud KMS 加密金鑰,請按照下列步驟操作:
- 將 Cloud KMS CryptoKey 解密者角色授予 Dataflow 工作站服務帳戶。
- 建立加密金鑰。
- 使用金鑰加密資料。
- 以 Base64 編碼加密資料。
- 執行範本時,請指定加密金鑰,並使用加密的參數值。
如果您指定加密金鑰,則必須加密所有支援加密的參數。如要瞭解哪些參數可以加密,請參閱特定範本的說明文件。
範例
建立金鑰環。
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 提供的範本清單。