Nesta página, explicamos como criptografar dados sensíveis em parâmetros de modelo fornecidos pelo Google usando chaves de criptografia com o Cloud KMS.
Visão geral
Alguns modelos fornecidos pelo Google permitem criptografar dados sensíveis nos parâmetros do modelo, como nomes de usuário, senhas, strings de conexão JDBC e chaves de API. Quando houver suporte, esses modelos incluem um parâmetro para especificar a chave de criptografia do Cloud KMS, como:
KMSEncryptionKey
tokenKMSEncryptionKey
apiKeyKMSEncryptionKey
Para usar chaves de criptografia do Cloud KMS com esses modelos, siga estas etapas:
- Conceda à conta de serviço do worker do Dataflow o papel Descriptografador do Cloud KMS CryptoKey.
- Crie uma chave de criptografia.
- Use a chave para criptografar os dados.
- Codifique os dados criptografados em Base64.
- Ao executar o modelo, especifique a chave de criptografia e use os valores de parâmetro criptografados.
Se você especificar uma chave de criptografia, será necessário criptografar todos os parâmetros que ofereçam suporte à criptografia. Para entender quais parâmetros podem ser criptografados, consulte a documentação do modelo específico.
Exemplo
O exemplo a seguir usa o modelo MySQL para BigQuery.
Criar um keyring
gcloud kms keyrings create "KEY_RING_NAME" \ --location "global"
Crie uma chave de criptografia.
gcloud kms keys create "KEY_NAME" \ --location "global" \ --keyring "KEY_RING_NAME" \ --purpose "encryption"
Criptografe e codifique em base64 o nome de usuário, a senha e a string de conexão JDBC.
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`
Execute o modelo.
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
Solução de problemas
Esta seção contém informações de solução de problemas para criptografar parâmetros de modelo.
Permissão negada
Ao executar o job, você encontra um erro PERMISSION_DENIED
nos registros do job,
semelhante a este:
PERMISSION_DENIED: Permission cloudkms.cryptoKeyVersions.useToDecrypt denied on
resource RESOURCE_PATH (or it may not exist)
Para descriptografar os dados, a conta de serviço do worker do Dataflow precisa da permissão cloudkms.cryptoKeyVersions.useToDecrypt para a chave de criptografia. Verifique se a conta de serviço do worker tem o papel de Descriptografador do CryptoKey do Cloud KMS. Para mais informações, consulte Segurança e permissões do Dataflow.
A seguir
- Saiba mais sobre o Cloud Key Management Service.
- Confira a lista de modelos fornecidos pelo Google.