Esta página explica como encriptar dados confidenciais em parâmetros de modelos fornecidos pela Google, usando chaves de encriptação com o Cloud KMS.
Vista geral
Alguns modelos fornecidos pela Google permitem-lhe encriptar dados confidenciais nos parâmetros do modelo, como nomes de utilizador, palavras-passe, strings de ligação JDBC e chaves de API. Quando suportados, estes modelos incluem um parâmetro para especificar a chave de encriptação do Cloud KMS, como:
KMSEncryptionKey
tokenKMSEncryptionKey
apiKeyKMSEncryptionKey
Para usar chaves de encriptação do Cloud KMS com estes modelos, siga os passos seguintes:
- Conceda à conta de serviço do trabalhador do Dataflow a função desencriptador de CryptoKey do Cloud KMS.
- Crie uma chave de encriptação.
- Use a chave para encriptar os dados.
- Codifique os dados encriptados em Base64.
- Quando executar o modelo, especifique a chave de encriptação e use os valores dos parâmetros encriptados.
Se especificar uma chave de encriptação, tem de encriptar todos os parâmetros que suportam encriptação. Para saber que parâmetros podem ser encriptados, consulte a documentação do modelo específico.
Exemplo
O exemplo seguinte usa o modelo MySQL para o BigQuery.
Crie um conjunto de chaves.
gcloud kms keyrings create "KEY_RING_NAME" \ --location "global"
Crie uma chave de encriptação.
gcloud kms keys create "KEY_NAME" \ --location "global" \ --keyring "KEY_RING_NAME" \ --purpose "encryption"
Encripte e codifique em base64 o nome de utilizador, a palavra-passe e a string de ligaçã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
Resolução de problemas
Esta secção contém informações de resolução de problemas para encriptar parâmetros de modelos.
Autorização recusada
Quando executa a tarefa, é apresentado um erro PERMISSION_DENIED
nos registos da tarefa,
semelhante ao seguinte:
PERMISSION_DENIED: Permission cloudkms.cryptoKeyVersions.useToDecrypt denied on
resource RESOURCE_PATH (or it may not exist)
Para desencriptar os dados, a conta de serviço do trabalhador do Dataflow precisa da autorização cloudkms.cryptoKeyVersions.useToDecrypt para a chave de encriptação. Certifique-se de que a conta de serviço do trabalhador tem a função desencriptador de CryptoKey do Cloud KMS. Para mais informações, consulte o artigo Segurança e autorizações do fluxo de dados.
O que se segue?
- Saiba mais sobre o Cloud Key Management Service.
- Consulte a lista de modelos fornecidos pela Google.