Zugriff mit IAM autorisieren
Mit der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) können Sie Identitäten zum Ausführen von Verwaltungsaktionen für Funktionen autorisieren, die mit der Cloud Functions v2 API erstellt wurden, z. B. mit gcloud functions
, der REST API oder Terraform. Zu den Verwaltungsaktionen gehören das Erstellen, Aktualisieren und Löschen von Funktionen. Informationen zum IAM-Zugriff für mit Cloud Run erstellte Funktionen finden Sie unter Zugriffssteuerung mit IAM.
In IAM weisen Sie Hauptkonten (die Identitäten, die Sie aktivieren möchten, normalerweise eine Nutzer- oder Dienstkonto-E-Mail-Adresse) die entsprechenden IAM-Rollen für die Funktion oder das Projekt zu. Diese Rollen enthalten Berechtigungen, mit denen die Aktionen definiert werden, die das Hauptkonto ausführen darf.
Vorbereitung
Um die Berechtigung zu erhalten, den Zugriff für eine bestimmte Funktion oder alle Funktionen in einem Projekt zu verwalten, bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Cloud Run Functions Admin (roles/function.admin
) für die Funktion oder das Projekt zu gewähren.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigung cloudfunctions.functions.setIamPolicy
, die zum Verwalten des Zugriffs für eine bestimmte Funktion oder alle Funktionen in einem Projekt erforderlich ist.
Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Eine vollständige Liste der Rollen und zugehörigen Berechtigungen für Cloud Run Functions finden Sie unter IAM-Rollen für Cloud Run Functions.
Zugriff auf eine Funktion aktivieren
Sie können Aktionen für eine Funktion steuern, indem Sie einzelnen Identitäten Rollen über IAM zuweisen oder einschränken.
Hauptkonten hinzufügen und Rollen gewähren
Console
Öffnen Sie die Google Cloud Console:
Klicken Sie auf das Kästchen neben der Funktion, an der Sie interessiert sind.
Klicken Sie oben auf dem Bildschirm auf Berechtigungen. Der Bereich Berechtigungen wird geöffnet.
Klicken Sie auf Hauptkonto hinzufügen.
Geben Sie in das Feld Neue Hauptkonten eine oder mehrere Identitäten ein, die Zugriff auf die Funktion erhalten sollen. Dies ist normalerweise die E-Mail-Adresse eines Nutzers oder Dienstkontos.
Wählen Sie aus dem Drop-down-Menü Rolle auswählen eine oder mehrere Rollen aus. Die ausgewählten Rollen werden in der Ansicht mit einer kurzen Beschreibung ihrer jeweiligen Berechtigungen angezeigt.
Klicken Sie auf Speichern.
gcloud
Führen Sie den Befehl gcloud functions add-iam-policy-binding
aus:
gcloud functions add-iam-policy-binding FUNCTION_NAME \ --member=PRINCIPAL_ID \ --role=ROLE
Dabei ist FUNCTION_NAME
der Funktionsname, PRINCIPAL_ID
die ID des Hauptkontos, normalerweise eine E-Mail-Adresse, und ROLE
die Rolle.
Eine Liste der Quellen, die eine PRINCIPAL_ID
bereitstellen können, finden Sie auf der IAM-Konzeptseite.
Eine Liste der zulässigen Werte für ROLE
finden Sie auf der Referenzseite für Cloud Run Functions-IAM-Rollen.
Rollen aus Hauptkonten entfernen
Console
Öffnen Sie die Google Cloud Console:
Klicken Sie auf das Kästchen neben der Funktion, an der Sie interessiert sind.
Klicken Sie oben auf dem Bildschirm auf Berechtigungen. Der Bereich Berechtigungen wird geöffnet.
Suchen Sie nach dem Hauptkonto, das Sie entfernen möchten. Sehen Sie sich jede Rolle an, die ihm zugewiesen wurde.
Wenn Sie das Hauptkonto in der Rolle gefunden haben, die Sie löschen möchten, klicken Sie auf das Papierkorbsymbol daneben. Wenn Sie den Zugriff des Hauptkontos vollständig entfernen möchten, tun Sie dies für jede Rolle, die dem Hauptkonto gewährt wurde.
gcloud
Führen Sie den Befehl gcloud functions remove-iam-policy-binding
aus:
gcloud functions remove-iam-policy-binding FUNCTION_NAME \ --member=PRINCIPAL_ID \ --role=ROLE
Dabei ist FUNCTION_NAME
der Funktionsname, PRINCIPAL_ID
die E-Mail-Adresse, die das Dienstkonto identifiziert, wobei serviceAccount:
vorangestellt ist, und ROLE
die Rolle.
Eine Liste der zulässigen Quellen für PRINCIPAL_ID
finden Sie auf der Seite für IAM-Konzepte.
Eine Liste der möglichen Werte für ROLE
finden Sie auf der Referenzseite für Cloud Run Functions-IAM-Rollen.
Wenn dem Hauptkonto mehrere Rollen zugewiesen wurden, müssen Sie diejenige angeben, die entfernt werden soll.
Mehrere Hauptkonten auf einmal hinzufügen
Console
Öffnen Sie die Google Cloud Console:
Klicken Sie auf die Kästchen neben den Funktionen, für die Sie Zugriff gewähren oder diesen einschränken möchten.
Klicken Sie oben auf dem Bildschirm auf Berechtigungen. Der Bereich Berechtigungen wird geöffnet.
So fügen Sie Hauptkonten hinzu:
Klicken Sie auf Hauptkonto hinzufügen.
Geben Sie unter Neue Hauptkonten mehrere Identitäten ein, die Zugriff auf die Funktion benötigen.
Wählen Sie aus dem Drop-down-Menü Rolle auswählen eine oder mehrere Rollen aus. Die ausgewählten Rollen werden in der Ansicht mit einer kurzen Beschreibung ihrer jeweiligen Berechtigungen angezeigt.
Klicken Sie auf Speichern.
gcloud
Erstellen Sie eine IAM-Richtlinie, z. B. mit dem Namen policy.json
:
{ "bindings": [ { "role": ROLE, "members": [ PRINCIPAL_ID ] } ] }
Führen Sie den Befehl gcloud functions set-iam-policy
aus:
gcloud functions set-iam-policy FUNCTION_NAME policy.json
Eine Liste der zulässigen Quellen für PRINCIPAL_ID
finden Sie auf der Seite für IAM-Konzepte.
Eine Liste der zulässigen Werte für ROLE
finden Sie auf der Referenzseite für Cloud Run Functions-IAM-Rollen.
Hauptkonten aufrufen
Console
Öffnen Sie die Google Cloud Console:
Klicken Sie auf den Namen der Funktion, an der Sie interessiert sind.
Wählen Sie den Tab Berechtigungen aus. Der Bereich Berechtigungen wird geöffnet.
Wählen Sie den Tab Nach Hauptkonten ansehen aus, um eine Liste aller Hauptkonten mit Berechtigungen für die ausgewählte Funktion aufzurufen.
gcloud
Führen Sie den Befehl gcloud functions get-iam-policy
aus:
gcloud functions get-iam-policy FUNCTION_NAME
Nicht authentifizierten HTTP-Funktionsaufruf zulassen
Seit dem 15. Januar 2020 beschränken HTTP-Funktionen ohne aktivierte nicht authentifizierte Aufrufe zulassen den Zugriff auf Endnutzer und Dienstkonten ohne entsprechende Berechtigungen.
Um einen nicht authentifizierten Aufruf zuzulassen, müssen Sie dies bei oder nach der Bereitstellung angeben.
Sie verwenden eine spezielle Variante des zuvor beschriebenen Ansatzes, um nicht authentifizierten Aufrufern die Möglichkeit zu geben, eine HTTP-Funktion aufzurufen.
Bei der Bereitstellung
Console
Wählen Sie im Bereich Trigger im Abschnitt Authentifizierung die Option Nicht authentifizierte Aufrufe zulassen aus.
gcloud
Der Befehl gcloud functions deploy
enthält eine Eingabeaufforderung, damit Sie die Aufrufberechtigungen bei der Funktionserstellung konfigurieren können. Er kann auch das Flag --allow-unauthenticated
enthalten:
gcloud functions deploy FUNCTION_NAME \ --trigger-http \ --allow-unauthenticated \ ...
Nachfolgende Bereitstellungen derselben Funktion ändern ihren Status auch dann nicht, wenn Sie dieses Flag nicht verwenden.
Nach der Bereitstellung
Console
Öffnen Sie die Google Cloud Console:
Klicken Sie auf den verknüpften Namen der Funktion, auf die Sie Zugriff gewähren möchten.
Klicken Sie oben rechts auf der Übersichtsseite der Funktionsdetails auf den Link Powered by Cloud Run.
Öffnen Sie den Tab Sicherheit und wählen Sie unter Authentifizierung die Option Nicht authentifizierte Aufrufe zulassen aus.
Klicken Sie auf Speichern.
gcloud
Verwenden Sie den Befehl gcloud run services add-iam-policy-binding
, um der jeweiligen Funktion die Rolle roles/run.invoker
zuzuweisen.
gcloud run services add-iam-policy-binding FUNCTION_NAME \ --member="user:USER_EMAIL"\ --role="roles/run.invoker"
Weitere Informationen über diese Felder finden Sie in der gcloud run add-iam-policy-binding
-Referenz.
Domaineingeschränkte Freigabe
Wenn Sie Funktionen in einem Projekt entwickeln, das der Organisationsrichtlinie für die domaineingeschränkte Freigabe unterliegt, können Sie den nicht authentifizierten Aufruf einer Funktion nicht zulassen. Mit dieser Richtlinie wird die Freigabe öffentlicher Daten eingeschränkt, um das Risiko der Datenexfiltration zu verringern.
Wenn Sie Funktionen bereitstellen möchten, die einen nicht authentifizierten Aufruf zulassen, sollten Sie die Organisationsrichtlinie für die domaineingeschränkte Freigabe für das Projekt entfernen. Organisationsrichtlinien können auf Organisations-, Ordner- oder Projektebene festgelegt werden.
Nachdem Sie die Funktionen erstellt haben, die den nicht authentifizierten Aufruf zulassen, kann die Organisationsrichtlinie wieder aktiviert werden:
- Für Funktionen, die vor der erneuten Aktivierung der Organisationsrichtlinie bereitgestellt wurden, ist der nicht authentifizierte Aufruf weiterhin zulässig.
- Neue Versionen dieser vorhandenen Funktionen können ohne Authentifizierung des Aufrufs bereitgestellt werden.
- Neue Funktionen, die nicht authentifizierte Aufrufe zulassen, können nicht bereitgestellt werden.