Dienstidentität für Instanzen konfigurieren

Auf dieser Seite wird beschrieben, wie Sie die Dienstidentität konfigurieren und aufrufen, die den Zugriff von Cloud Run-Instanzen auf APIs steuert. Cloud de Confiance by S3NS

Eine Cloud Run-Instanz hat eine Dienstidentität, die als authentifiziertes Konto für den Zugriff auf Cloud de Confiance by S3NS APIs über Ihren Cloud Run-Instanzcontainer verwendet wird. Weitere Informationen zur Dienstidentität finden Sie im Leitfaden Einführung in die Dienstidentität.

Verwendung der Dienstidentität

In Cloud Run ist die Dienstidentität ein Dienstkonto, das sowohl eine Ressource als auch ein Hauptkonto ist.

  • Dienstidentität als Ressource: Um ein Dienstkonto als Dienstidentität anzuhängen, muss das Bereitstellerkonto Zugriff auf die Dienstidentitätsressource haben. Für bestimmte Vorgänge wie das Erstellen oder Aktualisieren einer Instanz muss das Konto des Bereitstellers Berechtigungen für die Ressource „Dienstidentität“ haben.
  • Dienstidentität als Hauptkonto: Um von einer Cloud Run-Instanz aus auf Cloud de Confiance APIs zugreifen zu können, müssen Sie der Dienstidentität die erforderlichen Rollen oder Berechtigungen für die Vorgänge erteilen, die Ihre Instanz ausführen soll.

Der nächste Abschnitt behandelt die erforderlichen Rollen, um dem Bereitstellerkonto Zugriff auf die Dienstidentitätsressource zu gewähren und die Rollen oder Berechtigungen zu gewähren, die das Hauptkonto des Dienstkontos benötigt.

Erforderliche Rollen

Sie oder Ihr Administrator müssen dem Bereitstellerkonto und der Dienstidentität IAM-Rollen und ‑Berechtigungen zuweisen.

Klicken, um die erforderlichen Rollen für das Bereitstellerkonto aufzurufen

Um die Berechtigungen zu erhalten, die Sie zum Anhängen eines Dienstkontos als die Dienstidentität für die Instanz benötigen, müssen Sie oder Ihr Administrator Ihrem Bereitstellerkonto die Rolle Dienstkontonutzer (roles/iam.serviceAccountUser) für das Dienstkonto zuweisen, das als Dienstidentität verwendet wird.

Diese vordefinierte Rolle enthält die iam.serviceAccounts.actAs Berechtigung, die zum Anhängen eines Dienstkontos an die Instanz erforderlich ist. Sie können diese Berechtigung auch erhalten, indem Sie benutzerdefinierte Rollen konfigurieren oder andere vordefinierte Rollen verwenden.

Eine Anleitung zum Zuweisen dieser Rolle für das Bereitstellerkonto für die Dienstidentität finden Sie unter Bereitstellungsberechtigungen. Wenn sich das Dienstkonto in einem anderen Projekt als die Cloud Run-Instanz befindet, müssen Sie oder Ihr Administrator außerdem eine IAM-Rolle für den Cloud Run-Dienst-Agenten konfigurieren und eine Organisationsrichtlinie einrichten. Weitere Informationen finden Sie unter Dienstkonten in anderen Projekten verwenden.

Klicken, um die erforderlichen Rollen für die Dienstidentität aufzurufen

Damit die Dienstidentität von Cloud Run aus auf Cloud de Confiance APIs zugreifen kann, müssen Sie oder Ihr Administrator der Dienstidentität die Berechtigungen oder Rollen erteilen, die für die von Ihnen gewünschten Vorgänge erforderlich sind. Informationen zum Zugriff auf bestimmte Cloud-Clientbibliotheken finden Sie in der Cloud de Confiance Dokumentation für den Cloud de Confiance Dienst.

Wenn eine Cloud Run-Instanz nicht auf andere Cloud de Confiance Dienste zugreift, müssen Sie der Dienst identität keine Rollen oder Berechtigungen zuweisen und Sie können das Standard-Dienst konto verwenden, das dem Projekt zugewiesen wurde.

Empfehlungen zum Erstellen dedizierter Dienstkonten abrufen

Wenn Sie ein neues Dienstkonto über die Cloud de Confiance Console erstellen, ist der optionale Schritt "Diesem Dienstkonto Zugriff auf das Projekt gewähren" für jeden zusätzlichen Zugriff erforderlich. Beispielsweise kann ein Cloud Run-Dienst einen anderenprivaten Cloud Run-Dienst aufrufen oder auf eine Cloud SQL-Datenbank zugreifen, die beide IAM-Rollen erfordern. Weitere Informationen finden Sie in der Dokumentation zum Verwalten des Zugriffs.

Der Recommender-Dienst gibt automatisch Empfehlungen zum Erstellen eines dedizierten Dienstkontos mit den minimal erforderlichen Berechtigungen.

Dienstidentität konfigurieren

Wenn Sie noch kein Dienstkonto erstellt haben, können Sie ein nutzerverwaltetes Dienstkonto in IAM oder in Cloud Run erstellen.

Zum Konfigurieren einer Dienstidentität verwenden Sie die gcloud CLI oder YAML:

gcloud

Wenn Sie noch kein Dienstkonto erstellt haben, erstellen Sie ein nutzerverwaltetes Dienstkonto in IAM.

Sie können eine vorhandene Instanz aktualisieren um ein Dienstkonto zu konfigurieren. Verwenden Sie dazu den folgenden Befehl:

gcloud beta run instances update INSTANCE --service-account SERVICE_ACCOUNT

Ersetzen Sie Folgendes:

  • INSTANCE: Der Name der Instanz.
  • SERVICE_ACCOUNT: Das Dienstkonto, das der neuen Identität zugeordnet ist. Dieser Wert ist die E-Mail Adresse des Dienstkontos im Format SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com, wobei SERVICE_ACCOUNT_NAME der Name des Dienst Kontos und PROJECT_ID Ihre Projekt-ID ist. Sie können ein Dienstkonto auch während der Bereitstellung mit dem folgenden Befehl festlegen:
gcloud beta run instances deploy INSTANCE --image IMAGE_URL --service-account SERVICE_ACCOUNT

Ersetzen Sie Folgendes:

  • INSTANCE: Der Name der Instanz.
  • IMAGE_URL: Ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest.
  • SERVICE_ACCOUNT: Das Dienstkonto, das der neuen Identität zugeordnet ist. Dieser Wert ist die E-Mail-Adresse des Dienstkontos im Format SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com.

YAML

  1. Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Das folgende Beispiel enthält die YAML-Konfiguration:

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      serviceAccountName: SERVICE_ACCOUNT

    Ersetzen Sie Folgendes:

    • INSTANCE: Der Name Ihrer Cloud Run-Instanz.
    • SERVICE_ACCOUNT: Das Dienstkonto, das der neuen Identität zugeordnet ist. Dieser Wert ist die E-Mail-Adresse des Dienst kontos, z. B. SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com.
  3. Erstellen oder aktualisieren Sie die Instanz mit dem folgenden Befehl:

    gcloud beta run instances replace instance.yaml

Dienstkonten in anderen Projekten verwenden

Wenn Sie ein Dienstkonto von einem anderen Cloud de Confiance Projekt als der Cloud Run-Ressource konfigurieren, gehen Sie so vor:

  1. Sie oder Ihr Administrator müssen der Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) für das Dienstkonto, das Sie als Dienstidentität verwenden, die Berechtigung zuweisen.

    Console

    1. Rufen Sie in der Cloud de Confiance Console die Seite Dienstkonten auf:

      Zur Seite „Dienstkonten“

    2. Wählen Sie die E-Mail-Adresse des Dienstkontos aus, die Sie als Dienstidentität verwenden.

    3. Klicken Sie auf den Tab Hauptkonten mit Zugriff.

    4. Klicken Sie auf die Schaltfläche Zugriff gewähren.

    5. Geben Sie die E-Mail-Adresse des Bereitstellerkontos ein, die dem Hauptkonto entspricht, dem Sie die Administrator- oder Entwicklerrolle zuweisen.

    6. Wählen Sie im Drop-down-Menü Rolle auswählen die Rolle Dienstkonten > Dienstkontonutzer aus.

    7. Klicken Sie auf Speichern.

    gcloud

    Verwenden Sie den Befehl gcloud iam service-accounts add-iam-policy-binding und ersetzen Sie die markierten Variablen durch die entsprechenden Werte:

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.s3ns.iam.gserviceaccount.com \
        --member="PRINCIPAL" \
        --role="roles/iam.serviceAccountUser"

    Ersetzen Sie Folgendes:

    • SERVICE_ACCOUNT_NAME: Der Name des Dienstkontos, dem Sie die Cloud Run-Ressource zuordnen.
    • SERVICE_ACCOUNT_PROJECT_ID: Die Projekt-ID, in der sich das Dienstkonto befindet.
    • PRINCIPAL: Das Bereitstellerkonto, für das Sie die Bindung hinzufügen, im Format user|group|serviceAccount:email oder domain:domain, z. B.:

      • user:test-user@gmail.com
      • group:admins@example.com
      • serviceAccount:test123@example.domain.com
      • domain:example.domain.com
  2. Sie oder Ihr Administrator müssen dem Dienst-Agent der Cloud Run-Ressource die Rolle „Ersteller von Dienstkonto-Tokens“ (roles/iam.serviceAccountTokenCreator) für das Dienstkonto zuweisen, das Sie als Dienstidentität verwenden. Der Dienst-Agent hat das Format service-PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com.

    Console

    1. Rufen Sie in der Cloud de Confiance Console die Seite Dienstkonten auf:

      Zur Seite „Dienstkonten“

    2. Wählen Sie die E-Mail-Adresse des Dienstkontos aus, die Sie als Dienstidentität verwenden.

    3. Klicken Sie auf den Tab Berechtigungen.

    4. Klicken Sie auf den Button Zugriff gewähren.

    5. Geben Sie die E-Mail-Adresse des Dienst-Agents ein. Beispiel: service-PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com.

    6. Wählen Sie im Drop-down-Menü Rolle auswählen die Rolle Dienstkonten > Ersteller von Dienstkonto-Tokens aus.

    7. Klicken Sie auf Speichern.

    gcloud

    Führen Sie den Befehl gcloud iam service-accounts add-iam-policy-binding aus:

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.s3ns.iam.gserviceaccount.com \
        --member="serviceAccount:service-CLOUD_RUN_RESOURCE_PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"

    Ersetzen Sie Folgendes:

    • SERVICE_ACCOUNT_NAME: Der Name des Dienstkontos, dem Sie die Cloud Run-Ressource zuordnen.
    • SERVICE_ACCOUNT_PROJECT_ID: Die Projekt-ID, in der sich das Dienstkonto befindet.
    • CLOUD_RUN_RESOURCE_PROJECT_NUMBER: Die Projektnummer, in der sich Cloud Run befindet.

    Der Befehl gibt die aktualisierte „allow”-Richtlinie für das vom Nutzer verwaltete Dienstkonto aus.

  3. Für das Projekt, das dieses Dienstkonto enthält, muss die Organisationsrichtlinie iam.disableCrossProjectServiceAccountUsage auf Ordnerebene auf "falsch/nicht erzwungen" festgelegt oder dies aus Einstellungen auf Projektebene übernommen werden. Standardmäßig ist dies auf true eingestellt.

    Console

    1. Rufen Sie in der Cloud de Confiance Console die Seite Organisationsrichtlinien auf:

      Zu den Organisationsrichtlinien

    2. Wählen Sie in der Projektauswahl die Organisation und das Projekt aus, für das Sie die projektübergreifende Dienstkontonutzung deaktivieren möchten.

    3. Wählen Sie die Richtlinie Projektübergreifende Dienstkontonutzung deaktivieren aus.

    4. Klicken Sie auf Richtlinie verwalten.

    5. Wählen Sie unter Richtlinienquelle die Option Richtlinie der übergeordneten Ressource überschreiben aus.

    6. Klicken Sie auf Regel hinzufügen.

    7. Wählen Sie unter Erzwingung die Option Aus aus.

    8. Klicken Sie auf Richtlinie festlegen, um die Richtlinie zu erzwingen.

    gcloud

    Achten Sie darauf, dass die Einschränkung der Organisationsrichtlinie iam.disableCrossProjectServiceAccountUsage im Projekt mit dem Dienstkonto nicht erzwungen wird. Diese Einschränkung wird standardmäßig erzwungen.

    Führen Sie folgenden Befehl aus, um diese Einschränkung für die Organisationsrichtlinie zu deaktivieren:

    gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage
        --project=SERVICE_ACCOUNT_PROJECT_ID

    Ersetzen Sie SERVICE_ACCOUNT_PROJECT_ID durch die Projekt-ID, die das Dienstkonto enthält.

Sie können Rollenmitgliedschaften direkt auf die Dienstkontoressource anwenden oder von höheren Ebenen in der Ressourcenhierarchie übernehmen.

Nächste Schritte