Auf dieser Seite wird erläutert, wie Sie vertrauliche Daten in von Google bereitgestellten Vorlagenparametern mithilfe von Verschlüsselungsschlüsseln mit Cloud KMS verschlüsseln.
Übersicht
Mit einigen von Google bereitgestellten Vorlagen können Sie sensible Daten in den Vorlagenparametern verschlüsseln, z. B. Nutzernamen, Passwörter, JDBC-Verbindungsstrings und API-Schlüssel. Sofern unterstützt, enthalten diese Vorlagen einen Parameter zum Angeben des Cloud KMS-Verschlüsselungsschlüssels, z. B.:
KMSEncryptionKey
tokenKMSEncryptionKey
apiKeyKMSEncryptionKey
So verwenden Sie Cloud KMS-Verschlüsselungsschlüssel mit diesen Vorlagen:
- Weisen Sie dem Arbeiterdienstkonto von Dataflow die Rolle Cloud KMS CryptoKey-Entschlüsseler zu.
- Erstellen Sie einen Verschlüsselungsschlüssel.
- Verschlüsseln Sie die Daten mit dem Schlüssel.
- Codieren Sie die verschlüsselten Daten mit Base64.
- Geben Sie beim Ausführen der Vorlage den Verschlüsselungsschlüssel an und verwenden Sie die verschlüsselten Parameterwerte.
Wenn Sie einen Verschlüsselungsschlüssel angeben, müssen Sie alle Parameter verschlüsseln, die die Verschlüsselung unterstützen. Informationen dazu, welche Parameter verschlüsselt werden können, finden Sie in der Dokumentation der jeweiligen Vorlage.
Beispiel
Im folgenden Beispiel wird die Vorlage MySQL für BigQuery verwendet.
Schlüsselbund erstellen
gcloud kms keyrings create "KEY_RING_NAME" \ --location "global"
Verschlüsselungsschlüssel erstellen
gcloud kms keys create "KEY_NAME" \ --location "global" \ --keyring "KEY_RING_NAME" \ --purpose "encryption"
Verschlüsseln und Base64-codieren Sie den Nutzernamen, das Passwort und den JDBC-Verbindungsstring.
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`
Führen Sie die Vorlage aus.
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
Fehlerbehebung
Dieser Abschnitt enthält Informationen zur Fehlerbehebung beim Verschlüsseln von Vorlagenparametern.
Berechtigung verweigert
Wenn Sie den Job ausführen, wird in den Jobprotokollen ein PERMISSION_DENIED
-Fehler angezeigt, der in etwa so aussieht:
PERMISSION_DENIED: Permission cloudkms.cryptoKeyVersions.useToDecrypt denied on
resource RESOURCE_PATH (or it may not exist)
Zum Entschlüsseln der Daten benötigt das Dataflow-Worker-Dienstkonto die Berechtigung cloudkms.cryptoKeyVersions.useToDecrypt für den Verschlüsselungsschlüssel. Das Dienstkonto des Workers muss die Rolle Cloud KMS CryptoKey-Entschlüsseler haben. Weitere Informationen finden Sie unter Sicherheit und Berechtigungen in Dataflow.
Nächste Schritte
- Weitere Informationen zum Cloud Key Management Service
- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.