Für die Abhängigkeiten Ihres Worker-Pools sind möglicherweise API-Schlüssel, Passwörter, Zertifikate oder andere vertrauliche Informationen erforderlich. Für Cloud Run empfiehlt Google, diese vertraulichen Informationen in einem Secret zu speichern, das Sie in Secret Manager erstellen.
Sie können ein Secret für Ihre Container auf eine der folgenden Arten verfügbar machen:
- Wenn Sie jedes Secret als Volume bereitstellen, stellt Cloud Run das Secret dem Container als Dateien zur Verfügung. Beim Lesen eines Volumes ruft Cloud Run immer den Secret-Wert aus Secret Manager ab, um den Wert mit der neuesten Version zu verwenden. Diese Methode funktioniert auch gut mit der Secret-Rotation.
- Übergeben Sie ein Secret mithilfe von Umgebungsvariablen.
Umgebungsvariablen werden beim Starten der Instanz aufgelöst. Wenn Sie diese Methode verwenden, empfiehlt Google, dass Sie das Secret auf eine bestimmte Version statt auf
latest
setzen.
Weitere Informationen finden Sie unter Best Practices für Secret Manager.
So werden Secrets bei der Bereitstellung und zur Laufzeit geprüft
Während der Bereitstellung des Worker-Pools prüft Cloud Run alle verwendeten Secrets. Mit der Prüfung wird sichergestellt, dass das Dienstkonto, mit dem der Container ausgeführt wird, die Berechtigung hat, auf diese Secrets zuzugreifen.
Während der Laufzeit beim Start von Instanzen:
- Wenn das Secret eine Umgebungsvariable ist, ruft Cloud Run den Wert des Secrets vor dem Starten der Instanz ab. Wenn der Secret-Abruf fehlschlägt, wird die Instanz nicht gestartet.
- Wenn Sie das Secret als Volume bereitstellen, führt Cloud Run beim Start der Instanz keine Prüfungen durch. Während der Laufzeit schlägt jedoch der Zugriff auf ein bereitgestelltes Volume fehl, wenn auf ein Secret nicht zugegriffen werden kann.
Volume-Inhaberschaft
Die Inhaberschaft eines Cloud Run-Secret-Volumes variiert je nach Ausführungsumgebung und Bereitstellungstyp.
Wenn Sie ein Secret-Volume mit der Ausführungsumgebung der zweiten Generation einbinden, was bei Worker-Pools immer der Fall ist, gehört das Volume dem Root-Nutzer.
Hinweise
-
Enable the Secret Manager API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Verwenden Sie ein vorhandenes Secret oder erstellen Sie ein Secret in Secret Manager, wie unter Secret erstellen beschrieben.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Konfiguration von Secrets benötigen:
-
Cloud Run Admin (
roles/run.admin
) im Cloud Run-Worker-Pool -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) für die Dienstidentität
Damit Cloud Run auf das Secret zugreifen kann, muss die Dienstidentität die folgende Rolle haben:
- Zugriffsperson für Secret Manager-Secret (
roles/secretmanager.secretAccessor
)
Eine Anleitung zum Hinzufügen des Dienstidentitätshauptkontos zur Rolle „Secret Manager Secret Accessor“ finden Sie unter Zugriff auf Secrets verwalten.
Eine Liste der IAM-Rollen und -Berechtigungen im Zusammenhang mit Cloud Run finden Sie unter IAM-Rollen für Cloud Run und IAM-Berechtigungen für Cloud Run. Wenn Ihr Cloud Run-Workerpool mitGoogle Cloud -APIs wie Cloud-Clientbibliotheken verknüpft ist, lesen Sie die Konfigurationsanleitung für Dienstidentitäten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Bereitstellungsberechtigungen und Zugriff verwalten.
Secret für Cloud Run zugänglich machen
Jede Konfigurationsänderung führt zur Erstellung einer neuen Überarbeitung. Für nachfolgende Überarbeitungen gilt automatisch dieselbe Konfigurationseinstellung, sofern Sie sie nicht explizit aktualisieren.
Sie können ein Secret für Ihren Workerpool über die Google Cloud Console oder die Google Cloud CLI bereitstellen, wenn Sie einen neuen Workerpool bereitstellen oder einen vorhandenen Workerpool aktualisieren und eine Überarbeitung bereitstellen. Klicken Sie auf den gewünschten Tab:
Konsole
Rufen Sie in der Google Cloud Console Cloud Run auf:
Wählen Sie im Menü Worker-Pools aus und klicken Sie auf Container bereitstellen, um einen neuen Worker-Pool zu konfigurieren. Füllen Sie die Seite mit den anfänglichen Worker-Pool-Einstellungen aus und klicken Sie dann auf Container, Volumes, Netzwerk, Sicherheit, um die Konfigurationsseite zu maximieren.
Wenn Sie einen vorhandenen Workerpool konfigurieren möchten, klicken Sie auf den Workerpool und dann auf Neue Überarbeitung bearbeiten und bereitstellen.
Folgen Sie der Anleitung, um das Secret als Volume bereitzustellen oder als Umgebungsvariable freizugeben.
So machen Sie das Secret als Umgebungsvariable verfügbar:
- Klicken Sie auf den Tab Container.
- Klicken Sie auf dem Tab Variablen und Secrets auf Secret-Referenz.
- Geben Sie im Feld Name 1 den Namen der Umgebungsvariable ein.
- Wählen Sie in der Liste Secret das Secret aus, das Sie verwenden möchten.
- Wählen Sie in der Liste Version 1 die Version des Secrets aus, auf die verwiesen werden soll.
- Klicken Sie auf Fertig.
- Klicken Sie auf Erstellen oder Bereitstellen.
So stellen Sie ein Secret als Volume bereit:
- Klicken Sie auf den Tab Volumes und wählen Sie Volume hinzufügen aus.
- Wählen Sie in der Liste Volume-Typ die Option Secret aus.
- Geben Sie im Feld Volume name einen Namen ein oder übernehmen Sie den Standardnamen.
- Wählen Sie in der Liste Secret das Secret aus, das Sie verwenden möchten.
- Geben Sie im Feld Path 1 den Namen der Datei ein, die bereitgestellt werden soll.
- Wählen Sie in der Liste Version 1 die Version des Secrets aus, auf die verwiesen werden soll. Standardmäßig ist die neueste Version ausgewählt. Sie können bei Bedarf eine bestimmte Version auswählen.
- Klicken Sie auf Fertig.
- Wechseln Sie zum Tab Container, um das Secret im Container bereitzustellen.
- Klicken Sie auf dem Tab Volume-Bereitstellungen auf Volume bereitstellen.
- Wählen Sie in der Liste Name 1 den Namen des Volumes aus.
- Geben Sie im Feld Bereitstellungspfad 1 den Bereitstellungspfad für dieses Secret ein. In diesem Verzeichnis werden alle Versionen Ihres Secrets abgelegt.
- Klicken Sie auf Fertig.
- Klicken Sie auf Erstellen oder Bereitstellen.
gcloud
Führen Sie den folgenden Befehl aus, um das Secret beim Bereitstellen eines Worker-Pools als Umgebungsvariable bereitzustellen:
gcloud beta run worker-pools deploy WORKER_POOL \ --image IMAGE_URL \ --update-secrets=ENV_VAR_NAME=SECRET_NAME:VERSION
Ersetzen Sie Folgendes:
WORKER_POOL
: Der Name Ihres Worker-Pools.- IMAGE_URL: Ein Verweis auf das Container-Image, das den Worker-Pool enthält, z. B.
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. ENV_VAR_NAME
: der Name der Umgebungsvariable, die Sie mit dem Secret verwenden möchten.SECRET_NAME
: der Secret-Name im selben Projekt, z. B.mysecret
.VERSION
: die Secret-Version. Verwenden Sielatest
für die neueste Version oder eine Zahl, z. B.2
.
Wenn Sie mehrere Secrets gleichzeitig aktualisieren möchten, trennen Sie die Konfigurationsoptionen für jedes Secret durch ein Komma. Mit dem folgenden Befehl wird ein Secret aktualisiert, das als Volume bereitgestellt wird, und ein weiteres Secret, das als Umgebungsvariable bereitgestellt wird. Führen Sie den folgenden Befehl aus, um vorhandene Secrets zu aktualisieren:
gcloud beta run worker-pools deploy WORKER_POOL \ --image IMAGE_URL \ --update-secrets=PATH=SECRET_NAME:VERSION,ENV_VAR_NAME=SECRET_NAME:VERSION
Mit dem Flag
--set-secrets
können Sie vorhandene Secrets löschen und ein neues Secret für den Worker-Pool zugänglich machen:gcloud beta run worker-pools update WORKER_POOL \ --set-secrets="ENV_VAR_NAME=SECRET_NAME:VERSION"
Auf Secrets aus anderen Projekten verweisen
Wenn Sie auf ein Secret aus einem anderen Projekt verweisen möchten, prüfen Sie, ob das Worker-Pool-Konto Ihres Projekts Zugriff auf das Secret hat.
Konsole
Rufen Sie in der Google Cloud Console Cloud Run auf:
Wählen Sie im Menü Worker-Pools aus und klicken Sie auf Container bereitstellen, um einen neuen Worker-Pool zu konfigurieren. Füllen Sie die Seite mit den anfänglichen Worker-Pool-Einstellungen aus und klicken Sie dann auf Container, Volumes, Netzwerk, Sicherheit, um die Konfigurationsseite zu maximieren.
Wenn Sie einen vorhandenen Workerpool konfigurieren möchten, klicken Sie auf den Workerpool und dann auf Neue Überarbeitung bearbeiten und bereitstellen.
Folgen Sie der Anleitung, um das Secret als Volume bereitzustellen oder als Umgebungsvariable freizugeben.
So machen Sie das Secret als Umgebungsvariable verfügbar:
- Klicken Sie auf den Tab Container.
- Klicken Sie auf dem Tab Variablen und Secrets auf Secret-Referenz.
- Geben Sie im Feld Name 1 den Namen der Umgebungsvariable ein.
- Klicken Sie in der Liste Secret auf Secret manuell eingeben.
Geben Sie die Ressourcen-ID des Secrets im folgenden Format ein:
projects/PROJECT_NUMBER/secrets/SECRET_NAME
Ersetzen Sie Folgendes:
PROJECT_NUMBER durch Ihre Google Cloud Projektnummer. Eine detaillierte Anleitung zum Ermitteln der Projektnummer finden Sie unter Projekte erstellen und verwalten.
SECRET_NAME: Der Name des Secrets im Secret Manager.
Wählen Sie in der Liste Version 1 die Version des Secrets aus, auf die verwiesen werden soll.
Klicken Sie auf Fertig.
Klicken Sie auf Erstellen oder Bereitstellen.
So stellen Sie ein Secret als Volume bereit:
- Klicken Sie auf den Tab Volumes und wählen Sie Volume hinzufügen aus.
- Wählen Sie in der Liste Volume-Typ die Option Secret aus.
- Geben Sie im Feld Volume name einen Namen ein oder übernehmen Sie den Standardnamen.
- Klicken Sie in der Liste Secret auf Secret manuell eingeben.
Geben Sie die Ressourcen-ID des Secrets im folgenden Format ein:
projects/PROJECT_NUMBER/secrets/SECRET_NAME
Ersetzen Sie Folgendes:
PROJECT_NUMBER durch Ihre Google Cloud Projektnummer. Eine detaillierte Anleitung zum Ermitteln der Projektnummer finden Sie unter Projekte erstellen und verwalten.
SECRET_NAME: Der Name des Secrets im Secret Manager.
Geben Sie im Feld Path 1 den Namen der Datei ein, die bereitgestellt werden soll.
Wählen Sie in der Liste Version 1 die Version des Secrets aus, auf die verwiesen werden soll. Standardmäßig ist die neueste Version ausgewählt. Sie können bei Bedarf eine bestimmte Version auswählen.
Klicken Sie auf Fertig.
Wechseln Sie zum Tab Container, um das Secret im Container bereitzustellen.
Klicken Sie auf dem Tab Volume-Bereitstellungen auf Volume bereitstellen.
Wählen Sie in der Liste Name 1 den Namen des Volumes aus.
Geben Sie im Feld Bereitstellungspfad 1 den Bereitstellungspfad für dieses Secret ein. In diesem Verzeichnis werden alle Versionen Ihres Secrets abgelegt.
Klicken Sie auf Fertig.
Klicken Sie auf Erstellen oder Bereitstellen.
gcloud
Führen Sie den folgenden Befehl aus, um auf ein Secret als Umgebungsvariable zu verweisen:
gcloud beta run worker-pools deploy WORKER_POOL \ --image IMAGE_URL \ --update-secrets=ENV_VAR_NAME=projects/PROJECT_NUMBER/secrets/SECRET_NAME:VERSION
Ersetzen Sie Folgendes:
WORKER_POOL
: Der Name Ihres Worker-Pools.- IMAGE_URL: Ein Verweis auf das Container-Image, das den Worker-Pool enthält, z. B.
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. PROJECT_NUMBER
durch die Projektnummer des Projekts, in dem das Secret erstellt wurde.SECRET_NAME
: der Name des Secrets, z. B.mysecret
.VERSION
mit der Secret-Version. Verwenden Sielatest
für die neueste Version oder eine Zahl, z. B.2
.
Einstellungen für Secrets aufrufen
So rufen Sie die aktuellen Secret-Einstellungen für Ihren Cloud Run-Worker-Pool auf:
Konsole
Rufen Sie in der Google Cloud Console die Seite „Cloud Run-Worker-Pools“ auf:
Klicken Sie auf den gewünschten Worker-Pool, um die Seite Worker-Pooldetails zu öffnen.
Klicken Sie auf Neue Überarbeitung bearbeiten und bereitstellen.
Suchen Sie die CPU-Einstellung in den Konfigurationsdetails.
gcloud
Verwenden Sie den folgenden Befehl:
gcloud beta run worker-pools describe WORKER_POOL
Suchen Sie in der zurückgegebenen Konfiguration nach der Einstellung für Secrets.
Secrets aus einem Worker-Pool entfernen
Sie können Secrets aus einem Worker-Pool mithilfe der Google Cloud Console oder der gcloud CLI entfernen:
Console
Rufen Sie in der Google Cloud Console Cloud Run auf:
Wählen Sie Ihren Worker-Pool aus der Liste aus und klicken Sie auf Neue Überarbeitung bearbeiten und bereitstellen.
Klicken Sie auf den Tab Container.
Wenn Sie Secrets löschen möchten, die als Volume bereitgestellt wurden, wählen Sie den Tab Volumebereitstellungen aus, bewegen Sie den Mauszeiger auf das Secret, das Sie entfernen möchten, und klicken Sie dann auf
Löschen.Wenn Sie Secrets löschen möchten, die als Umgebungsvariable bereitgestellt werden, wählen Sie den Tab Variablen und Secrets aus, bewegen Sie den Mauszeiger auf das Secret, das Sie entfernen möchten, und klicken Sie dann auf
Löschen.Klicken Sie auf Bereitstellen.
gcloud
Sie können alle Secrets aus einem Worker-Pool entfernen oder ein oder mehrere Secrets angeben, die entfernt werden sollen:
- Führen Sie den folgenden Befehl aus, um alle Secrets zu entfernen:
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL \ --clear-secrets
Ersetzen Sie Folgendes:
- WORKER_POOL: Der Name Ihres Worker-Pools.
IMAGE_URL: Ein Verweis auf das Container-Image, das den Worker-Pool enthält, z. B.
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
.Mit dem Flag
--remove-secrets
geben Sie eine Liste der zu entfernenden Secrets an. Mit dem folgenden Befehl wird ein Secret gelöscht, das als Volume bereitgestellt wird, und ein weiteres Secret, das als Umgebungsvariable freigegeben wird.
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL \ --remove-secrets=ENV_VAR_NAME,SECRET_FILE_PATH
Ersetzen Sie Folgendes:
- WORKER_POOL: Der Name Ihres Worker-Pools.
- IMAGE_URL: Ein Verweis auf das Container-Image, das den Worker-Pool enthält, z. B.
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. - ENV_VAR_NAME: Der Name der Umgebungsvariablen.
SECRET_FILE_PATH: der vollständige Pfad des Secrets. Beispiel:
/mnt/secrets/primary/latest
, wobei/mnt/secrets/primary/
der Bereitstellungspfad undlatest
der Pfad des Secrets ist. Sie können auch die Bereitstellungspfade und die Pfade des Secrets separat angeben:--set-secrets MOUNT_PATH:SECRET_PATH=SECRET:VERSION
Secrets in Ihrem Code verwenden
Beispiele für den Zugriff auf Secrets in Ihrem Code als Umgebungsvariablen finden Sie in der Anleitung zur Endnutzerauthentifizierung, insbesondere im Abschnitt Vertrauliche Konfigurationen mit Secret Manager verarbeiten.
Unzulässige Pfade und Einschränkungen
Für das Einbinden von Secrets gelten die folgenden Einschränkungen:
- Mit Cloud Run können Sie keine Secrets unter
/dev
,/proc
und/sys
oder in ihren Unterverzeichnissen bereitstellen. - Mit Cloud Run können Sie nicht mehrere Secrets auf demselben Pfad bereitstellen, da zwei Volume-Bereitstellungen nicht an demselben Speicherort bereitgestellt werden können.
Verzeichnis überschreiben
Wenn das Secret als Volume in Cloud Run bereitgestellt wird und das letzte Verzeichnis im Volume-Bereitstellungspfad bereits vorhanden ist, sind alle Dateien oder Ordner im vorhandenen Verzeichnis nicht mehr zugänglich.
Wenn z. B. ein Secret mit dem Namen my-secret
im Pfad /etc/app_data
bereitgestellt wird, wird der gesamte Inhalt im Verzeichnis app_data
überschrieben und die einzige sichtbare Datei ist /etc/app_data/my-secret
.
Um das Überschreiben von Dateien in einem vorhandenen Verzeichnis zu vermeiden, erstellen Sie ein neues Verzeichnis für die Bereitstellung des Secrets, z. B. /etc/app_data/secrets
, sodass der Bereitstellungspfad für das Secret /etc/app_data/secrets/my-secret
lautet.