Zugriffssteuerung mit IAM
Auf dieser Seite finden Sie zusätzliche Informationen zur Verwendung von IAM-Rollen (Identity and Access Management), um Zugriffssteuerungen auf Projektebene festzulegen und die Zugriffsebene für Ihr Google Cloud Projekt und Funktionen zu bestimmen, die mit gcloud functions
-Befehlen oder der Cloud Functions v2 API erstellt wurden.
Wenn Sie Funktionen mit Cloud Run erstellt oder bereitgestellt haben, finden Sie unter Zugriffssteuerung mit IAM und Cloud Run-Rollen eine detaillierte Beschreibung der vordefinierten Cloud Run-Rollen, der Zugriffssteuerung auf einzelne Dienste, der Veröffentlichung eines Dienstes oder der Konfiguration der Organisationsrichtlinie für den Cloud Run-Aufrufer in IAM.
Zugriffskontrolle für Nutzer
Fügen Sie Nutzer als Teammitglieder Ihrem Projekt hinzu und weisen Sie ihnen mithilfe der IAM Rollen zu.
Cloud Run-Funktionen unterstützen die folgenden Rollen:
- Vordefinierte Cloud Run-Rollen (empfohlen)
- Vordefinierte Cloud Functions-Rollen
- Einfache Rollen: Bearbeiter, Inhaber und Betrachter
Zugriffssteuerung für Dienstkonten
Ein Dienstkonto ist ein speziellerGoogle Cloud -Kontotyp, der als Identität für einen nicht menschlichen Nutzer fungiert. Das Konto muss authentifiziert und autorisiert werden, um Zugriff auf Daten zu erhalten und verschiedene Aktionen durchführen zu können. Einige dieser Konten werden von Google selbst erstellt und verwaltet und als Dienst-Agents bezeichnet.
Die folgenden Dienstkonten werden für Cloud Run Functions verwendet:
Name | Mitglieds-ID | Rolle |
---|---|---|
Standardmäßiges Compute Engine-Dienstkonto | PROJECT_NUMBER-compute@developer.gserviceaccount.com |
Editor |
Google Cloud Functions-Dienst-Agent | service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com |
Google Cloud Functions-Dienst-Agent |
Altes Cloud Build-Dienstkonto1 | PROJECT_NUMBER@cloudbuild.gserviceaccount.com |
Cloud Build-Dienstkonto |
Cloud Build-Dienstkonto | service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com |
Cloud Build-Dienst-Agent |
Google Container Registry-Dienst-Agent | service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com |
Container Registry-Dienst-Agent |
Artifact Registry-Dienst-Agent | service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com |
Artifact Registry-Dienst-Agent |
Laufzeitdienstkonten
Während der Laufzeit verwendet Cloud Run Functions standardmäßig das Compute Engine-Standarddienstkonto (PROJECT_NUMBER-compute@developer.gserviceaccount.com
), das die Rolle Bearbeiter im Projekt hat. Sie können die Rollen dieser Dienstkonten ändern, um die Berechtigungen für ausgeführte Funktionen einzuschränken oder zu erweitern. Außerdem können Sie ändern, welches Dienstkonto verwendet wird. Hierfür verwenden Sie beim Konfigurieren der Dienstidentität kein Standarddienstkonto.
Weitere Informationen zu Dienstkonten finden Sie in der zugehörigen Dokumentation.
Administrative Dienstkonten
Wenn beim Erstellen, Aktualisieren oder Löschen von Funktionen Verwaltungsaufgaben an einem Projekt ausgeführt werden sollen, benötigen alle Projekte in Cloud Run Functions das Dienstkonto „Google Cloud Functions-Dienst-Agent“ (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
).
Darüber hinaus erstellen und speichern alle Laufzeiten Container-Images in Ihrem Projekt. Sie müssen auch Folgendes bereitstellen:
- Das alte Cloud Build-Dienstkonto1 (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
) - Das Dienstkonto „Cloud Build Service Agent“ (
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com
) - Das Dienstkonto Google Container Registry-Dienst-Agent (
service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com
)
Diese Dienstkonten sollten die Rollen haben, die in der vorherigen Tabelle aufgeführt sind.
Dienstkonto Google Cloud Functions-Dienst-Agent
Standardmäßig hat das Dienstkonto Google Cloud Functions-Dienst-Agent (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
) im Projekt die Rolle cloudfunctions.serviceAgent.
Hier einige der wichtigsten Berechtigungen, die cloudfunctions.serviceAgent
verwendet:
Berechtigung | Beschreibung |
---|---|
roles/artifactregistry.admin |
Repositories verwalten und Build-Images in Artifact Registry speichern |
roles/cloudbuild.builds.editor |
Erforderlich, um mit Cloud Build Builds im Nutzerprojekt auszuführen. |
roles/cloudbuild.customworkers.builder |
Builds in benutzerdefinierten Cloud Build-Workern erstellen. |
compute.globalOperations.get ,compute.networks.access ,vpcaccess.connectors.{get, use} |
Funktionen mit Zugriff auf die VPC des Nutzerprojekts bereitstellen. |
roles/eventarc.developer |
Eventarc-Trigger für Funktionen verwalten. |
firebasedatabase.instances.{get, update} |
Erstellen von Funktionen, die von der Firebase Realtime Database ausgelöst werden |
iam.serviceAccounts.{actAs, getAccessToken, signBlob} |
Möglichkeit zum Abrufen der Anmeldedaten des Laufzeitdienstkontos |
iam.serviceAccounts.getOpenIdToken |
Erforderlich, damit der Agent ein OpenID-Token für eine benutzerdefinierte Behörde abrufen kann. OpenID-Token wird zum Aufrufen von IAM-aktivierten Funktionen verwendet. |
pubsub.subscriptions |
Verwalten von Abonnements im Projekt des Nutzers |
pubsub.topics |
Verwalten von Themen im Projekt des Nutzers |
roles/run.developer |
Cloud Run-Dienst für Funktionen verwalten. |
storage.buckets.create ,storage.objects.{delete, get, create, list} |
Erforderlich zum Speichern von Quellcode in Nutzerprojekt. |
Sie können die gesamten Berechtigungen unter den vordefinierten IAM-Rollen oder mit diesem Befehl anzeigen lassen:
gcloud iam roles describe roles/cloudfunctions.serviceAgent
Setzen Sie dieses Dienstkonto auf die Standardrolle zurück. Entfernen Sie dazu die Rolle, die es derzeit hat, und fügen Sie die Cloud Functions-Dienst-Agent-Rolle hinzu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \ --role roles/cloudfunctions.serviceAgent
Berechtigungsfehler beheben
Wenn Sie beim Bereitstellen, Aktualisieren, Löschen oder Ausführen von Funktionen in einem Projekt Berechtigungsfehler erhalten, führen Sie die folgenden Schritte aus:
Prüfen Sie, ob Sie die Rolle Bearbeiter oder Inhaber für Ihr Projekt haben oder ob Sie die Rolle Cloud Functions-Entwickler verwenden.
Wenn Sie die Rolle Cloud Functions-Developer auf Projektebene verwenden, prüfen Sie außerdem, ob Sie dem Nutzer die Rolle IAM Service Account User zugewiesen haben.
Derzeit sind nur Ausführungsberechtigungen auf Funktionsebene zulässig.
Prüfen Sie, ob das Dienstkonto des Cloud Functions-Dienst-Agents (
service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
) die Rolle Cloud Functions-Dienst-Agent (cloudfunctions.serviceAgent
) für Ihr Projekt hat.Achten Sie darauf, dass das Kästchen Von Google bereitgestellte Rollenzuweisungen auf dem Tab Berechtigungen der Seite IAM der Konsole angeklickt ist, um Folgendes zu sehen: dieses Konto. Alternativ können Sie
gcloud projects add-iam-policy-binding PROJECT_ID
verwenden.Prüfen Sie, ob Sie Berechtigungen für Triggerquellen haben, z. B. Pub/Sub oder Cloud Storage.
Wenn Sie einen Fehler mit der Meldung „unzureichende Berechtigungen“ erhalten oder beim Ausführen von Funktionen Authentifizierungsprobleme auftreten, sollten Sie die Berechtigungen des Laufzeitdienstkontos prüfen. Dieses muss die richtigen Berechtigungen haben, um auf die Ressourcen zuzugreifen, die die Funktionen benötigen. Anschließend sollten Sie Schritt 2 und 3 ausführen.
Wenn während der Bereitstellung der Fehler „Dienst nicht verfügbar“ auftritt, prüfen Sie, ob das Laufzeitdienstkonto PROJECT_ID@appspot.gserviceaccount.com
im Projekt vorhanden ist. Wie Sie dieses Dienstkonto wiederherstellen können, wenn es gelöscht wurde, erfahren Sie unter Dienstkonto wiederherstellen.
Weitere Informationen finden Sie unter Fehlerbehebung bei Cloud Run Functions.
1: Das alte Cloud Build-Dienstkonto wird nur für Cloud Run-Funktionen in Projekten verwendet, die vor Juli 2024 erstellt wurden.