Pour éviter que des identifiants sensibles tels que des clés API et des mots de passe n'apparaissent en texte brut dans les configurations de jobs Dataflow, vous pouvez chiffrer les paramètres des modèles fournis par Google à l'aide de Cloud Key Management Service (Cloud KMS). Utilisez les informations suivantes pour chiffrer les valeurs de paramètres avec une clé Cloud KMS et transmettre le texte brouillé (textes chiffrés) à votre pipeline.
Présentation
Certains modèles fournis par Google vous permettent de chiffrer les données sensibles dans les paramètres du modèle, telles que les noms d'utilisateur, les mots de passe, les chaînes de connexion JDBC et les clés API. Lorsqu'ils sont compatibles, ces modèles incluent un paramètre permettant de spécifier la clé de chiffrement Cloud KMS, par exemple :
KMSEncryptionKeytokenKMSEncryptionKeyapiKeyKMSEncryptionKey
Pour utiliser des clés de chiffrement Cloud KMS avec ces modèles, procédez comme suit :
- Attribuez le rôle Déchiffreur de CryptoKeys Cloud KMS au compte de service de nœud de calcul Dataflow.
- Créez une clé de chiffrement.
- Utilisez la clé pour chiffrer les données.
- Encodez les données chiffrées en base64.
- Lorsque vous exécutez le modèle, spécifiez la clé de chiffrement et utilisez les valeurs de paramètre chiffrées.
Si vous spécifiez une clé de chiffrement, vous devez chiffrer tous les paramètres compatibles avec le chiffrement. Pour savoir quels paramètres peuvent être chiffrés, consultez la documentation du modèle concerné.
Exemple
L'exemple suivant utilise le modèle MySQL vers BigQuery.
Créer un trousseau de clés.
gcloud kms keyrings create "KEY_RING_NAME" \ --location "global"Créez une clé de chiffrement.
gcloud kms keys create "KEY_NAME" \ --location "global" \ --keyring "KEY_RING_NAME" \ --purpose "encryption"Chiffrez et encodez en base64 le nom d'utilisateur, le mot de passe et la chaîne de connexion 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`Exécutez le modèle.
gcloud dataflow flex-template run mysql-job \ --project=PROJECT_ID \ --region=us-central1 \ --template-file-gcs-location=gs://dataflow-templates/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
Dépannage
Cette section contient des informations de dépannage pour le chiffrement des paramètres de modèle.
Autorisation refusée
Lorsque vous exécutez le job, une erreur PERMISSION_DENIED semblable à celle-ci s'affiche dans les journaux du job :
PERMISSION_DENIED: Permission cloudkms.cryptoKeyVersions.useToDecrypt denied on
resource RESOURCE_PATH (or it may not exist)
Pour déchiffrer les données, le compte de service de nœud de calcul Dataflow doit disposer de l'autorisation cloudkms.cryptoKeyVersions.useToDecrypt pour la clé de chiffrement. Assurez-vous que le compte de service de nœud de calcul dispose du rôle Déchiffreur de CryptoKeys Cloud KMS. Pour en savoir plus, consultez la section Sécurité et autorisations pour Dataflow.
Étapes suivantes
- En savoir plus sur Cloud Key Management Service
- Consultez la liste des modèles fournis par Google.