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. Sie fügen der Funktion Hauptkonto (die Identitäten, die Sie aktivieren möchten, normalerweise ein Nutzer- oder Dienstkonto-E-Mail) hinzu und gewähren diesen Hauptkonten die entsprechenden IAM-Rollen. Diese Rollen enthalten Berechtigungen, mit denen die Aktionen definiert werden, die sie ausführen dürfen.

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.

Zugriff auf alle Funktionen in einem Projekt steuern

Wenn Sie Rollen für alle Funktionen in einem Projekt zuweisen möchten, können Sie diese Rollen für das Projekt zuweisen.