Zugriff mit IAM autorisieren

Sie verwenden die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM), um Identitäten zum Ausführen von administrativen Aktionen wie dem Erstellen, Aktualisieren und Löschen von Funktionen zu autorisieren. 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.

Hinweise

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 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 verwalten.

Diese vordefinierte Rolle enthält die Berechtigung cloudfunctions.functions.setIamPolicy, die erforderlich ist, um den Zugriff für eine bestimmte Funktion oder alle Funktionen in einem Projekt zu steuern.

Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Eine vollständige Liste der Cloud Functions-Rollen und der zugehörigen Berechtigungen finden Sie unter Cloud Functions-IAM-Rollen.

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

  1. Öffnen Sie die Google Cloud Console:

    Zur Google Cloud Console

  2. Klicken Sie auf das Kästchen neben der Funktion, an der Sie interessiert sind.

  3. Klicken Sie oben auf dem Bildschirm auf Berechtigungen. Der Bereich Berechtigungen wird geöffnet.

  4. Klicken Sie auf Hauptkonto hinzufügen.

  5. 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.

  6. 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.

  7. 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 Functions-IAM-Rollen.

Rollen aus Hauptkonten entfernen

Console

  1. Öffnen Sie die Google Cloud Console:

    Zur Google Cloud Console

  2. Klicken Sie auf das Kästchen neben der Funktion, an der Sie interessiert sind.

  3. Klicken Sie oben auf dem Bildschirm auf Berechtigungen. Der Bereich Berechtigungen wird geöffnet.

  4. Suchen Sie nach dem Hauptkonto, das Sie entfernen möchten. Sehen Sie sich jede Rolle an, die ihm zugewiesen wurde.

  5. 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 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

  1. Öffnen Sie die Google Cloud Console:

    Zur Google Cloud Console

  2. Klicken Sie auf die Kästchen neben den Funktionen, für die Sie Zugriff gewähren oder diesen einschränken möchten.

  3. Klicken Sie oben auf dem Bildschirm auf Berechtigungen. Der Bereich Berechtigungen wird geöffnet.

So fügen Sie Hauptkonten hinzu:

  1. Klicken Sie auf Hauptkonto hinzufügen.

  2. Geben Sie unter Neue Hauptkonten mehrere Identitäten ein, die Zugriff auf die Funktion benötigen.

  3. 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.

  4. 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 Functions-IAM-Rollen.

Hauptkonten aufrufen

Console

  1. Öffnen Sie die Google Cloud Console:

    Zur Google Cloud Console

  2. Klicken Sie auf den Namen der Funktion, an der Sie interessiert sind.

  3. Wählen Sie den Tab Berechtigungen aus. Der Bereich Berechtigungen wird geöffnet.

  4. 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

Cloud Functions (1. Generation):

Wenn Sie den nicht authentifizierten Aufruf einer Funktion zulassen möchten, weisen Sie dem speziellen allUsers-Hauptkonto für die Funktion die Rolle Cloud Functions-Aufrufer zu:

Console

  1. Öffnen Sie die Google Cloud Console:

    Zur Google Cloud Console

  2. Klicken Sie auf das Kästchen neben der empfangenden Funktion. (Klicken Sie nicht auf die Funktion selbst.)

  3. Klicken Sie oben auf dem Bildschirm auf Berechtigungen. Der Bereich Berechtigungen wird geöffnet.

  4. Klicken Sie auf Hauptkonto hinzufügen.

  5. Geben Sie im Feld Neue Hauptkonten allUsers ein.

  6. Wählen Sie die Rolle Cloud Functions > Cloud Functions-Invoker aus dem Drop-down-Menü Rolle auswählen aus.

  7. Klicken Sie als Antwort auf das Dialogfeld auf Öffentlichen Zugriff zulassen.

gcloud

Verwenden Sie den Befehl gcloud functions add-iam-policy-binding, um dem speziellen allUsers-Hauptkonto für die Funktion die Rolle roles/cloudfunctions.invoker zuzuweisen:

gcloud functions add-iam-policy-binding FUNCTION_NAME \
 --member="allUsers" \
 --role="roles/cloudfunctions.invoker"

Weitere Informationen über diese Felder finden Sie in der gcloud functions add-iam-policy-binding-Referenz.

Cloud Functions (2. Generation):

Console

  1. Öffnen Sie die Google Cloud Console:

    Zur Google Cloud Console

  2. Klicken Sie auf den verknüpften Namen der Funktion, auf die Sie Zugriff gewähren möchten.

  3. Klicken Sie oben rechts auf der Übersichtsseite der Funktionsdetails auf den Link Powered by Cloud Run.

  4. Öffnen Sie den Tab Sicherheit und wählen Sie unter Authentifizierung die Option Nicht authentifizierte Aufrufe zulassen aus.

  5. 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.