Der Cloud Key Management Service ist ein Google Cloud -Dienst, mit dem Sie kryptografische Schlüssel verwalten und verwenden können. Auf dieser Seite wird erläutert, wie Sie verschlüsselte Informationen aus Cloud KMS in Cloud Build verwenden.
Hinweise
-
Enable the Cloud Build and Cloud KMS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten, installieren und konfigurieren Sie die Google Cloud CLI.
Verschlüsseln Sie die vertraulichen Informationen mit Cloud KMS. Cloud KMS speichert Ihre verschlüsselten Inhalte in einer Datei.
[OPTIONAL] Um Builds für die Verwendung verschlüsselter Daten zu konfigurieren, konvertieren Sie das ENCRYPTED_FILE in base64: (Dieser Schritt ist für Build-Konfigurationen, die verschlüsselte Dateien verwenden, nicht erforderlich.)
base64 ENCRYPTED_FILE
Erforderliche IAM-Berechtigungen
Weisen Sie dem Build-Dienstkonto die IAM-Rolle Cloud KMS CryptoKey-Entschlüsseler (roles/cloudkms.cryptoKeyDecrypter) zu:
Rufen Sie in der Google Cloud Console die Cloud Build-Seite Einstellungen auf:
Suchen Sie die Zeile mit der Rolle Cloud KMS CryptoKey-Entschlüsseler und setzen Sie ihren Status auf AKTIVIERT.
Builds für die Verwendung verschlüsselter Daten konfigurieren
Erstellen Sie im Stammverzeichnis des Projekts eine Cloud Build-Konfigurationsdatei mit dem Namen
cloudbuild.yamlodercloudbuild.json.In Ihrer Build-Konfigurationsdatei:
- Fügen Sie nach Abschluss des Builds
stepseinavailableSecrets-Feld hinzu, um den verschlüsselten Wert als Umgebungsvariable und den zur Entschlüsselung zu verwendendenkmsKeyNameanzugeben. Sie können Substitutionsvariablen im Wert vonkmsKeyNameverwenden. - Geben Sie im Build-Schritt, in dem Sie das Secret angeben möchten, Folgendes an:
- Fügen Sie das Feld
entrypointhinzu, das aufbashverweist, um das Bash-Tool im Build-Schritt zu verwenden. Dies ist erforderlich, um auf die Umgebungsvariable für das Secret zu verweisen. - Fügen Sie das Feld
secretEnvhinzu, das die Umgebungsvariable für den verschlüsselten Wert angibt. - Fügen Sie im Feld
argsdas Flag-cals erstes Argument hinzu. Jeder String, den Sie nach -c übergeben, wird als Befehl behandelt. Weitere Informationen zum Ausführen von Bash-Befehlen mit -c finden Sie in der Bash-Dokumentation. - Wenn Sie den verschlüsselten Wert im Feld
argsangeben, geben Sie ihn mit der Umgebungsvariable$$.
- Fügen Sie das Feld
The following example build config file shows how to login to Docker and pull a private image:
YAML
steps: - name: 'gcr.io/cloud-builders/docker' entrypoint: 'bash' args: ['-c', 'docker login --username=$$USERNAME --password=$$PASSWORD'] secretEnv: ['USERNAME', 'PASSWORD'] - name: 'gcr.io/cloud-builders/docker' entrypoint: 'bash' args: ['-c', 'docker pull $$USERNAME/IMAGE:TAG'] secretEnv: ['USERNAME'] availableSecrets: inline: - kmsKeyName: projects/PROJECT_ID/locations/global/keyRings/USERNAME_KEYRING_NAME/cryptoKeys/USERNAME_KEY_NAME envMap: USERNAME: 'ENCRYPTED_USERNAME' - kmsKeyName: projects/PROJECT_ID/locations/global/keyRings/PASSWORD_KEYRING_NAME/cryptoKeys/PASSWORD_KEY_NAME envMap: PASSWORD: 'ENCRYPTED_PASSWORD'an.JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "entrypoint": "bash", "args": [ "-c", "docker login --username=$$USERNAME --password=$$PASSWORD" ], "secretEnv": [ "USERNAME", "PASSWORD" ] }, { "name": "gcr.io/cloud-builders/docker", "entrypoint": "bash", "args": [ "-c", "docker pull $$USERNAME/REPOSITORY:TAG" ], "secretEnv": [ "USERNAME" ] } ], "availableSecrets": { "inline": [{ "kmsKeyName": "projects/PROJECT_ID/locations/global/keyRings/USERNAME_KEYRING_NAME/cryptoKeys/USERNAME_KEY_NAME", "envMap": { "USERNAME": "ENCRYPTED_USERNAME" } }, { "kmsKeyName": "projects/PROJECT_ID/locations/global/keyRings/PASSWORD_KEYRING_NAME/cryptoKeys/PASSWORD_KEY_NAME", "envMap": { "PASSWORD": "ENCRYPTED_PASSWORD" } }] } }Replace the placeholder values in the above commands with the following:
PROJECT_ID: The ID of the Google Cloud project which contains your Cloud KMS service.USERNAME_KEYRING_NAME: The key ring name of your Docker username.USERNAME_KEY_NAME: The key name of your Docker username.ENCRYPTED_USERNAME: Your encrypted Docker username in base64 format.PASSWORD_KEYRING_NAME: The key ring name of your Docker password.PASSWORD_KEY_NAME: The key name of your Docker password.ENCRYPTED_PASSWORD: Your encrypted Docker password in base64 format.REPOSITORY: The name of your Docker repository from where you're pulling the image.TAG: The tag name of your image.
- Fügen Sie nach Abschluss des Builds
Use the build config file to manually start a build or to automate builds using triggers.
Configuring builds to use encrypted files
In your project root directory, create a Cloud Build build config file named
cloudbuild.yamlorcloudbuild.json.In your build config file, before any build steps that interact with the decrypted file, add a
gcloudbuild step to decrypt the encrypted file using the encryption key. The following example build config file shows how to login to Docker using the encrypted file with Docker password:YAML
steps: - name: gcr.io/cloud-builders/gcloud args: - kms - decrypt - "--ciphertext-file=ENCRYPTED_PASSWORD_FILE" - "--plaintext-file=PLAINTEXT_PASSWORD_FILE" - "--location=global" - "--keyring=KEYRING_NAME" - "--key=KEY_NAME" - name: gcr.io/cloud-builders/docker entrypoint: bash args: - "-c" - docker login --username=DOCKER_USERNAME --password-stdin < PLAINTEXT_PASSWORD_FILEJSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gcloud", "args": [ "kms", "decrypt", "--ciphertext-file=ENCRYPTED_PASSWORD_FILE", "--plaintext-file=PLAINTEXT_PASSWORD_FILE", "--location=global", "--keyring=KEYRING_NAME", "--key=KEY_NAME" ] }, { "name": "gcr.io/cloud-builders/docker", "entrypoint": "bash", "args": [ "-c", "docker login --username=DOCKER_USERNAME --password-stdin < PLAINTEXT_PASSWORD_FILE" ] } ] }Replace the placeholder values in the above commands with the following:
KEYRING_NAME: The key ring name of your Docker password.KEY_NAME: The key name of your Docker password.ENCRYPTED_PASSWORD_FILE: Encrypted file with your Docker password.PLAINTEXT_PASSWORD_FILE: Plaintext file with your Docker password.
Use the build config file to manually start a build or to automate builds using triggers.
Configuring builds to use encrypted data (legacy)
To encrypt sensitive data using Cloud KMS and use that data in a build config file:
In your build config file, add a
secretsfield to specify the encrypted value and theCryptoKeyto use to decrypt it. Then, in the build step where you want to use the encrypted variable, add asecretEnvfield to specify the variable as an environment variable. Include the variable's name in thesecretEnvfield. If you specify the variable value, or a non-secret environment variable with the same name, Cloud Build throws an error.YAML
steps: - name: 'gcr.io/cloud-builders/docker' entrypoint: 'bash' args: ['-c', 'docker login --username=user-name --password=$$PASSWORD'] secretEnv: ['PASSWORD'] - name: 'gcr.io/cloud-builders/docker' args: ['push', 'user-name/myubuntu'] secrets: - kmsKeyName: projects/project-id/locations/global/keyRings/keyring-name/cryptoKeys/key-name secretEnv: PASSWORD: 'encrypted-password'JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "entrypoint": "bash", "args": [ "-c", "docker login --username=user-name --password=$$PASSWORD" ], "secretEnv": [ "PASSWORD" ] }, { "name": "gcr.io/cloud-builders/docker", "args": [ "push", "user-name/myubuntu" ] } ], "secrets": [ { "kmsKeyName": "projects/project-id/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secretEnv": { "PASSWORD": "encrypted-password" } } ] }Nächste Schritte
- Builds für den Zugriff auf Secrets von Secret Manager konfigurieren
- Weitere Informationen finden Sie unter Auf private GitHub-Repositories zugreifen.
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2025-10-19 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-10-19 (UTC)."],[],[]]