Zulassen des öffentlichen (nicht authentifizierten) Zugriffs

Es gibt zwei Möglichkeiten, einen öffentlichen Cloud Run-Dienst zu erstellen:

  • Deaktivieren Sie die IAM-Prüfung für Cloud Run Invoker (empfohlen).
  • Weisen Sie dem Mitgliedstyp allUsers die IAM-Rolle „Cloud Run Invoker“ zu.

Erforderliche Rollen

Wenn Sie die IAM-Überprüfung für den Invoker für einen Dienst deaktivieren oder wieder aktivieren möchten, benötigen Sie die folgenden Berechtigungen:

  • run.services.create
  • run.services.update
  • run.services.setIamPolicy

Diese Berechtigungen sind in der Rolle Cloud Run-Administrator (roles/run.admin) enthalten. Unter Cloud Run-IAM-Rollen finden Sie die vollständige Liste der Rollen und der zugehörigen Berechtigungen.

IAM-Prüfung für Cloud Run Invoker deaktivieren

Die empfohlene Methode, um einen öffentlichen Dienst zu erstellen, besteht darin, die IAM-Prüfung für Cloud Run Invoker zu deaktivieren. Cloud Run erzwingt diese Prüfung standardmäßig. Verwenden Sie diese Lösung, wenn das Projekt einer Organisationsrichtlinie für die domaineingeschränkte Freigabe unterliegt.

So deaktivieren Sie die Prüfung:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:

    Zu Cloud Run

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst konfigurieren, und füllen Sie die Seite mit den anfänglichen Diensteinstellungen nach Bedarf aus.

    Wenn Sie einen vorhandenen Dienst konfigurieren, klicken Sie auf den Dienst und dann auf den Tab Sicherheit.

  3. Wählen Sie Öffentlichen Zugriff erlauben aus.

  4. Klicken Sie auf Erstellen oder Speichern.

gcloud

  • Verwenden Sie für einen neuen Dienst den Befehl gcloud run deploy mit dem Flag --no-invoker-iam-check:

    gcloud run deploy SERVICE_NAME --no-invoker-iam-check

    Ersetzen Sie SERVICE_NAME durch den Namen des Dienstes.

  • Verwenden Sie für einen vorhandenen Dienst den Befehl gcloud run services update mit dem Flag --no-invoker-iam-check:

    gcloud run services update SERVICE_NAME --no-invoker-iam-check

Ersetzen Sie SERVICE_NAME durch den Namen des Dienstes.

YAML

  1. So rufen Sie die Konfiguration auf und laden sie herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aktualisieren Sie die Annotation run.googleapis.com/invoker-iam-disabled::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
        annotations:
          run.googleapis.com/invoker-iam-disabled: 'true'
        name: SERVICE_NAME

    Ersetzen Sie SERVICE_NAME durch den Namen Ihres Cloud Run-Dienstes.

  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Prüfen Sie nach der Bereitstellung, ob die Prüfung deaktiviert ist, indem Sie zum HTTPS-Endpunkt des Dienstes navigieren.

IAM-Prüfung für Cloud Run Invoker wieder aktivieren

So aktivieren Sie die Prüfung wieder:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:

    Zu Cloud Run

  2. Klicken Sie auf den Dienst und dann auf Sicherheit.

  3. Wählen Sie Authentifizierung erforderlich und dann Identity and Access Management (IAM) aus.

  4. Klicken Sie auf Speichern.

gcloud

  • Aktualisieren Sie den Dienst, indem Sie das Flag --invoker-iam-check übergeben:

    gcloud run services update SERVICE_NAME --invoker-iam-check

    Ersetzen Sie SERVICE_NAME durch den Namen des Dienstes.

YAML

  1. So rufen Sie die Konfiguration auf und laden sie herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aktualisieren Sie die Annotation run.googleapis.com/invoker-iam-disabled::

    apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
        annotations:
           run.googleapis.com/invoker-iam-disabled: 'false'
        name: SERVICE_NAME

    Ersetzen Sie SERVICE_NAME durch den Namen Ihres Cloud Run-Dienstes.

Prüfen Sie, ob die Prüfung nach der Bereitstellung wieder aktiviert ist, indem Sie zum HTTPS-Endpunkt des Dienstes navigieren.

Organisationsrichtlinie für die IAM-Prüfung für Cloud Run Invoker konfigurieren

Als Administrator können Sie die Möglichkeit, die IAM-Prüfung für Aufrufer zu deaktivieren, mit der verwalteten Einschränkung constraints/run.managed.requireInvokerIam einschränken. Diese Einschränkung wird nicht standardmäßig erzwungen.

Weisen Sie dem Mitgliedstyp allUsers die Cloud IAM-Rolle „Cloud Run Invoker“ zu.

Sie können den öffentlichen Zugriff auf einen Dienst zulassen, indem Sie dem Mitgliedstyp allUsers die IAM-Rolle „Cloud Run Invoker“ zuweisen.

Sie benötigen die Berechtigung run.services.setIamPolicy, um die Authentifizierung für einen Cloud Run-Dienst zu konfigurieren. Diese Berechtigung ist in der Rolle „Cloud Run-Administrator“ enthalten. Unter Cloud Run-IAM-Rollen finden Sie die vollständige Liste der Rollen und der zugehörigen Berechtigungen.

Console

Für einen vorhandenen Cloud Run-Dienst:

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:

    Zur Google Cloud Console

  2. Klicken Sie links neben dem Dienst, den Sie veröffentlichen möchten, auf das Kästchen. Klicken Sie nicht auf den Dienst selbst.

  3. Klicken Sie im Informationsbereich oben rechts auf den Tab Berechtigungen. Wenn der Informationsbereich nicht sichtbar ist, müssen Sie möglicherweise auf Infofeld ansehen und dann auf Berechtigungen klicken.

  4. Klicken Sie auf Hauptkonto hinzufügen.

Geben Sie im Feld Neue Hauptkonten den Wert allUsers ein.

  1. Wählen Sie im Menü Rolle auswählen die Rolle Cloud Run Invoker aus.

  2. Klicken Sie auf Speichern.

  3. Sie werden aufgefordert, zu bestätigen, dass Sie diese Ressource veröffentlichen möchten. Klicken Sie auf Öffentlichen Zugriff zulassen, um die Änderung auf die IAM-Einstellungen des Dienstes anzuwenden.

Für einen neuen Dienst, den Sie erstellen, erstellen Sie den Dienst und wählen Sie im Abschnitt Authentifizierung die Option Öffentlichen Zugriff zulassen aus, um den Dienst öffentlich verfügbar zu machen. Wenn Sie einen Dienst privat machen möchten, wählen Sie Authentifizierung erforderlich aus.

gcloud

Fügen Sie mit dem Befehl gcloud run services den speziellen Mitgliedstyp allUsers einem Dienst hinzu und weisen Sie ihm die Rolle roles/run.invoker zu, um einen Dienst öffentlich zugänglich zu machen:

  gcloud run services add-iam-policy-binding [SERVICE_NAME] \
    --member="allUsers" \
    --role="roles/run.invoker"

Alternativ können Sie den Befehl gcloud run deploy ausführen, um den Dienst beim Bereitstellen des Dienstes öffentlich zugänglich zu machen:

gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated

YAML

Erstellen Sie eine Datei mit dem Namen policy.yaml und dem folgendem Inhalt:

bindings:
- members:
  - allUsers
  role: roles/run.invoker

Lassen Sie öffentlichen Zugriff für den vorhandenen SERVICE zu:

gcloud run services set-iam-policy SERVICE policy.yaml

Terraform

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Fügen Sie einer google_cloud_run_v2_service-Ressource in Ihrer Terraform-Konfiguration Folgendes hinzu:
resource "google_cloud_run_v2_service" "default" {
  name     = "public-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
  }
}

Fügen Sie die folgende Ressource hinzu, die auf Ihren Cloud Run-Dienst verweist, um die IAM-Dienstbindung für roles/run.invoker zu aktualisieren:

resource "google_cloud_run_service_iam_binding" "default" {
  location = google_cloud_run_v2_service.default.location
  service  = google_cloud_run_v2_service.default.name
  role     = "roles/run.invoker"
  members = [
    "allUsers"
  ]
}

Diese Bindung ist nur für die angegebene Rolle autoritativ. Andere IAM-Bindungen innerhalb der IAM-Dienstrichtlinie werden beibehalten.