Identitätswechsel für Dienstkonten verwalten

Auf dieser Seite wird beschrieben, wie Sie Mitgliedern und Ressourcen erlauben, sich als IAM-Dienstkonto (Identity and Access Management) auszugeben. Außerdem wird erläutert, wie Sie feststellen können, welche Mitglieder die Identität eines bestimmten IAM-Dienstkontos übernehmen können.

Hinweis

Informieren Sie sich darüber, wie Dienstkonten funktionieren.

Mitgliedern erlauben, die Identität von Dienstkonten zu übernehmen

Es gibt mehrere vordefinierte Rollen, mit denen ein Mitglied die Identität eines Dienstkontos übernehmen kann:

  • Dienstkontonutzer (roles/iam.serviceAccountUser): Mitglieder können indirekt auf alle Ressourcen zugreifen, auf die das Dienstkonto zugreifen kann. Wenn ein Mitglied beispielsweise die Rolle "Dienstkontonutzer" für ein Dienstkonto hat und das Dienstkonto die Rolle "Cloud SQL-Administrator" (roles/cloudsql.admin) für das Projekt hat, kann das Mitglied die Identität des Dienstkontos übernehmen, um eine Cloud SQL-Instanz zu erstellen.

    Mit dieser Rolle können Mitglieder auch ein Dienstkonto an eine Ressource binden, wie auf dieser Seite erläutert.

  • Ersteller von Dienstkonto-Tokens (roles/iam.serviceAccountTokenCreator): Mitglieder können Dienstkonten imitieren, um OAuth 2.0-Zugriffstoken zu erstellen, JSON Web Tokens (JWTs) zu signieren und binäre Blobs zu signieren, damit sie für die Authentifizierung verwendet werden können. Weitere Informationen finden Sie unter Kurzfristige Anmeldedaten für Dienstkonten erstellen.

  • Workload Identity-Nutzer (roles/iam.workloadIdentityUser): Mitglieder können die Identität von Dienstkonten von GKE-Arbeitslasten übernehmen. Diese Rolle kann nicht für einzelne Dienstkonten, aber für ein Projekt, einen Ordner oder eine Organisation gewährt werden.

Alternativ können Sie eine andere vordefinierte Rolle oder eine benutzerdefinierte Rolle zuweisen, die dieselben Berechtigungen wie diese Rollen enthält.

In den folgenden Abschnitten wird beschrieben, wie Sie Projekten, Ordnern und Organisationen sowie einzelnen Dienstkonten diese Rollen zuweisen. Wählen Sie die gewünschte Zugriffsebene aus:

Einem Mitglied gestatten, sich als mehrere Dienstkonten auszugeben

Ein Mitglied kann die Identität aller Dienstkonten übernehmen, die in einem Projekt, Ordner oder einer Organisation erstellt wurden. Weisen Sie dazu dem Projekt, Ordner oder der Organisation eine Rolle zu:

Console

  1. Rufen Sie in der Cloud Console die Seite IAM auf.

    Zur Seite "IAM"

  2. Wählen Sie in der Projektauswahl oben auf der Seite das Projekt, den Ordner oder die Organisation aus, der Sie die Rolle zuweisen möchten.

  3. Klicken Sie auf Hinzufügen.

  4. Geben Sie die E-Mail-Adresse des Mitglieds ein.

  5. Wählen Sie eine Rolle aus, mit der das Mitglied die Identität von Dienstkonten übernehmen kann. Weitere Informationen finden Sie in der Liste der Rollen zur Identitätsübernahme des Dienstkontos.

  6. Klicken Sie auf Speichern.

gcloud-Befehl

Ändern Sie die IAM-Richtlinie für Ihr Projekt, Ihren Ordner oder Ihre Organisation, um einem Mitglied eine Rolle zuzuweisen, mit der er die Identität eines Dienstkontos übernehmen kann.

  1. Lesen Sie die IAM-Richtlinie für die Ressource:

    gcloud resource get-iam-policy resource-id \
        --format=json > policy.json
    

    Ersetzen Sie die folgenden Werte:

    • resource: Der Ressourcentyp, für den Sie die Richtlinie festlegen möchten. Dieser Wert sollte einer der folgenden sein: projects, resource-manager folders oder organizations.
    • resource-id: Die ID der Ressource, für die Sie die Richtlinie festlegen möchten.

    Der Befehl speichert die Richtlinie der Ressource in der Datei policy.json.

    Wenn für die Ressource bereits eine Richtlinie festgelegt wurde, sieht die Datei policy.json in etwa so aus:

    {
      "bindings": [
        {
          "members": [
            "user:hollis@example.com"
          ],
          "role": "roles/owner"
        }
      ],
      "etag": "BwUqLaVeua8=",
      "version": 1
    }
    

    Wenn für die Ressource keine Richtlinie vorhanden ist, enthält die Datei policy.json nur den Standardwert etag.

    Wenn keine Richtlinie vorhanden ist, erstellen Sie diese manuell. Verwenden Sie dazu die JSON-Datei in den folgenden Schritten als Vorlage.

  2. Ändern Sie die Richtlinie, um Ihren Mitgliedern die entsprechenden Rollen zuzuweisen. Führen Sie zum Zuweisen einer Rolle einen der folgenden Schritte aus:

    • Wenn keine Bindung für die Rolle vorhanden ist, fügen Sie ein Objekt zum Array bindings hinzu, das die Rolle angibt, die Sie gewähren möchten, und das Mitglied, dem Sie die Rolle zuweisen möchten.
    • Wenn für die Rolle bereits eine Bindung vorhanden ist, fügen Sie das neue Mitglied der Liste der vorhandenen Mitglieder hinzu. Wenn Ihre Richtlinie bedingte Rollenbindungen enthält, stellen Sie außerdem sicher, dass die Bindung die entsprechenden Bedingungen erfüllt, bevor Sie das Mitglied hinzufügen.

    Wenn das Array bindings noch nicht vorhanden ist, können Sie es erstellen.

    Beispiel

    Um die Rolle "Dienstkontonutzer (roles/iam.serviceAccountUser)" robin@example.com zuzuweisen, ändern Sie das im vorherigen Schritt gezeigte Beispiel so:

    {
      "bindings": [
        {
          "role": "roles/iam.serviceAccountUser",
          "members": [
            "user:robin@example.com"
          ]
        },
        {
          "role": "roles/owner",
          "members": [
            "user:hollis@example.com"
          ]
        }
      ],
      "etag": "BwUqLaVeua8=",
      "version": 1
    }
    
  3. Schreiben Sie die aktualisierte Richtlinie:

    gcloud resource set-iam-policy resource-id \
        policy-file
    

    Ersetzen Sie die folgenden Werte:

    • resource: Der Ressourcentyp, für den Sie die Richtlinie festlegen möchten. Dieser Wert sollte einer der folgenden sein: projects, resource-manager folders oder organizations.
    • resource-id: Die ID der Ressource, für die Sie die Richtlinie festlegen möchten.
    • policy-file: Der Pfad zu der Datei, die die aktualisierte Richtlinie enthält.

    Der Befehl gibt die aktualisierte Richtlinie aus, die für etag einen aktualisierten Wert enthält.

REST API

Um eine Rolle mithilfe der Resource Manager REST API zuzuweisen, müssen Sie die aktuelle IAM-Richtlinie für Ihr Projekt, Ihren Ordner oder Ihre Organisation lesen. Ändern Sie die Richtlinie, um die gewünschten Rollen zu gewähren. Schreiben Sie dann die aktualisierte Richtlinie.

IAM-Richtlinie für die Ressource lesen

Rufen Sie die Methode getIamPolicy() für Ihre Ressource auf, um die aktuelle Richtlinie zu lesen:

POST https://cloudresourcemanager.googleapis.com/api-version/resource/resource-id:getIamPolicy

Ersetzen Sie die folgenden Werte:

  • api-version: Die zu verwendende API-Version. Verwenden Sie v1 für Projekte und Organisationen. Verwenden Sie v2 für Ordner.
  • resource: Der Ressourcentyp, für den Sie die Richtlinie festlegen möchten. Dieser Wert sollte einer der folgenden sein: projects, resource-manager folders oder organizations.
  • resource-id: Die ID der Ressource, für die Sie die Richtlinie festlegen möchten.

Der Anfragetext muss leer sein.

Der Antworttext enthält die aktuelle Richtlinie, die einem der folgenden ähnelt:

  • Wenn für die Ressource bereits eine Richtlinie festgelegt ist, sieht der Antworttext in etwa so aus:

    {
      "version": 1,
      "etag": "BwUqLaVeua8=",
      "bindings": [
        {
          "members": [
            "user:hollis@example.com"
          ],
          "role": "roles/owner"
        }
      ]
    }
    
  • Wenn für die Ressource keine Richtlinie festgelegt ist, enthält der Antworttext nur den Standardwert etag.

Wenn keine Richtlinie vorhanden ist, erstellen Sie diese manuell. Verwenden Sie dazu die JSON-Datei in den folgenden Schritten als Vorlage.

Ändern Sie die Richtlinie, um Ihren Mitgliedern die entsprechenden Rollen zuzuweisen.

Führen Sie zum Zuweisen einer Rolle einen der folgenden Schritte aus:

  • Wenn keine Bindung für die Rolle vorhanden ist, fügen Sie ein Objekt zum Array bindings hinzu, das die Rolle angibt, die Sie gewähren möchten, und das Mitglied, dem Sie die Rolle zuweisen möchten.
  • Wenn für die Rolle bereits eine Bindung vorhanden ist, fügen Sie das neue Mitglied der Liste der vorhandenen Mitglieder hinzu.

Wenn das Array bindings noch nicht vorhanden ist, können Sie es erstellen.

Beispiel:

Um die Rolle "Dienstkontonutzer (roles/iam.serviceAccountUser)" robin@example.com zuzuweisen, ändern Sie das im vorherigen Schritt gezeigte Beispiel so:

{
  "version": 1,
  "etag": "BwUqLaVeua8=",
  "bindings": [
    {
      "role": "roles/iam.serviceAccountUser",
      "members": [
        "user:robin@example.com"
      ]
    },
    {
      "role": "roles/owner",
      "members": [
        "user:hollis@example.com"
      ]
    }
  ]
}

Schreiben Sie die aktualisierte Richtlinie.

Rufen Sie die Methode setIamPolicy() für Ihre Ressource auf, um die aktualisierte Richtlinie zu schreiben:

POST https://iam.googleapis.com/api-version/resource/resource-id:setIamPolicy

Ersetzen Sie die folgenden Werte:

  • api-version: Die zu verwendende API-Version. Verwenden Sie v1 für Projekte und Organisationen. Verwenden Sie v2 für Ordner.
  • resource: Der Ressourcentyp, für den Sie die Richtlinie festlegen möchten. Dieser Wert sollte einer der folgenden sein: projects, resource-manager folders oder organizations.
  • resource-id: Die ID der Ressource, für die Sie die Richtlinie festlegen möchten.

Der Anfragetext muss die aktualisierte Richtlinie enthalten, zum Beispiel:

{
  "policy": {
    "etag": "BwUqLaVeua8=",
    "bindings": [
      {
        "role": "roles/iam.serviceAccountUser",
        "members": [
          "user:robin@example.com"
        ]
      },
      {
        "role": "roles/owner",
        "members": [
          "user:hollis@example.com"
        ]
      }
    ]
  }
}

Die Antwort enthält die aktualisierte Richtlinie.

Einem Mitglied gestatten, die Identität eines einzelnen Dienstkontos zu übernehmen

Damit ein Mitglied die Identität eines einzelnen Dienstkontos übernehmen kann, weisen Sie ihm eine Rolle zu:

Console

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

    Zur Seite "Dienstkonten"

  2. Klicken Sie auf Projekt auswählen, wählen Sie ein Projekt aus und klicken Sie auf Öffnen.

  3. Wählen Sie ein Dienstkonto aus. Wenn das Infofeld nicht sichtbar ist, klicken Sie auf Infofeld ansehen. Im Feld wird eine Liste der Rollen angezeigt, die dem Dienstkonto zugewiesen wurden.

  4. Klicken Sie auf Mitglied hinzufügen.

  5. Geben Sie die E-Mail-Adresse des Mitglieds ein.

  6. Wählen Sie eine Rolle aus, die dem Mitglied die Berechtigung erteilt, die Identität des Dienstkontos zu übernehmen. Weitere Informationen finden Sie in der Liste der Rollen zur Identitätsübernahme des Dienstkontos.

  7. Klicken Sie auf Hinzufügen, um dem Projektmitglied die Rolle zuzuweisen.

Wenn Sie Rollen für mehrere Dienstkonten zuweisen möchten, wiederholen Sie diese Schritte für jedes Dienstkonto.

gcloud-Befehl

Ändern Sie die IAM-Richtlinie für Ihr Dienstkonto, um einem Mitglied eine Rolle zuzuweisen, mit der er die Identität eines Dienstkontos übernehmen kann.

  1. Verwenden Sie den Befehl service-accounts get-iam-policy, um die aktuelle Richtlinie zu lesen:

    gcloud iam service-accounts get-iam-policy sa-id \
        --format=json > policy.json
    

    Ersetzen Sie die folgenden Werte:

    • sa-id: Die ID Ihres Dienstkontos. Diese kann entweder die E-Mail-Adresse des Dienstkontos im Format sa-name@project-id.iam.gserviceaccount.com oder die eindeutige numerische ID des Dienstkontos sein.

    Der Befehl speichert die Richtlinie des Dienstkontos in der Datei policy.json.

    Wenn für das Dienstkonto bereits eine Richtlinie festgelegt wurde, sieht die Datei policy.json in etwa so aus:

    {
      "bindings": [
        {
          "members": [
            "user:hollis@example.com"
          ],
          "role": "roles/iam.serviceAccountAdmin"
        }
      ],
      "etag": "BwUqLaVeua8=",
      "version": 1
    }
    

    Wenn für das Dienstkonto keine Richtlinie festgelegt ist, enthält die Datei policy.json nur das Standard-etag.

    Wenn keine Richtlinie vorhanden ist, erstellen Sie diese manuell. Verwenden Sie dazu die JSON-Datei in den folgenden Schritten als Vorlage.

  2. Ändern Sie in einem Texteditor das Bindings-Array in der Datei policy.json, um Ihren Mitgliedern die entsprechenden Rollen zuzuweisen. Führen Sie zum Zuweisen einer Rolle einen der folgenden Schritte aus:

    • Wenn keine Bindung für die Rolle vorhanden ist, fügen Sie dem Array bindings ein neues Objekt hinzu, das die Rolle und das Mitglied definiert, dem Sie die Rolle zuweisen möchten.
    • Wenn für die Rolle bereits eine Bindung vorhanden ist, fügen Sie das neue Mitglied der Liste der vorhandenen Mitglieder hinzu. Wenn Ihre Richtlinie bedingte Rollenbindungen enthält, stellen Sie außerdem sicher, dass die Bindung die entsprechenden Bedingungen erfüllt, bevor Sie das Mitglied hinzufügen.

    Wenn das Array bindings noch nicht vorhanden ist, können Sie es erstellen.

    Beispiel

    Um die Rolle "Dienstkontonutzer (roles/iam.serviceAccountUser)" robin@example.com zuzuweisen, ändern Sie das im vorherigen Schritt gezeigte Beispiel so:

    {
      "bindings": [
        {
          "role": "roles/iam.serviceAccountUser",
          "members": [
            "user:robin@example.com"
          ]
        },
        {
          "role": "roles/iam.serviceAccountAdmin",
          "members": [
            "user:hollis@example.com"
          ]
        }
      ],
      "etag": "BwUqLaVeua8=",
      "version": 1
    }
    
  3. Verwenden Sie den Befehl service-accounts set-iam-policy, um die aktualisierte Richtlinie zu schreiben:

    gcloud iam service-accounts set-iam-policy sa-id \
        policy-file
    

    Ersetzen Sie die folgenden Werte:

    • sa-id: Die ID Ihres Dienstkontos. Diese kann entweder die E-Mail-Adresse des Dienstkontos im Format sa-name@project-id.iam.gserviceaccount.com oder die eindeutige numerische ID des Dienstkontos sein.
    • policy-file: Pfad zur Datei, die die aktualisierte Richtlinie enthält.

    Der Befehl gibt die aktualisierte Richtlinie aus, die für etag einen aktualisierten Wert enthält.

REST API

Um eine Rolle mithilfe der IAM REST API zuzuweisen, müssen Sie die aktuelle IAM-Richtlinie des Dienstkontos lesen, die gewünschten Rollen zuweisen und dann die aktualisierte Richtlinie schreiben.

IAM-Richtlinie des Dienstkontos lesen

Rufen Sie die Methode getIamPolicy() auf, um die aktuelle Richtlinie zu lesen:

POST https://iam.googleapis.com/v1/projects/project-id/serviceAccounts/sa-id:getIamPolicy

Ersetzen Sie die folgenden Werte:

  • project-id: ID Ihres Google Cloud-Projekts.
  • sa-id: Die ID Ihres Dienstkontos. Diese kann entweder die E-Mail-Adresse des Dienstkontos im Format sa-name@project-id.iam.gserviceaccount.com oder die eindeutige numerische ID des Dienstkontos sein.

Der Anfragetext muss leer sein.

Der Antworttext enthält die aktuelle Richtlinie, die einem der folgenden ähnelt:

  • Wenn für das Dienstkonto bereits eine Richtlinie festgelegt ist, sieht der Antworttext in etwa so aus:

    {
      "version": 1,
      "etag": "BwUqLaVeua8=",
      "bindings": [
        {
          "members": [
            "user:hollis@example.com"
          ],
          "role": "roles/iam.serviceAccountAdmin"
        }
      ]
    }
    
  • Wenn für das Dienstkonto keine Richtlinie festgelegt ist, enthält der Antworttext nur das Standard-etag.

Wenn keine Richtlinie vorhanden ist, erstellen Sie diese manuell. Verwenden Sie dazu die JSON-Datei in den folgenden Schritten als Vorlage.

Ändern Sie die Richtlinie, um Ihren Mitgliedern die entsprechenden Rollen zuzuweisen.

Ändern Sie in einem Texteditor das Bindings-Array aus dem Antworttext, um Ihren Mitgliedern die entsprechenden Rollen zuzuweisen. Führen Sie zum Zuweisen einer Rolle einen der folgenden Schritte aus:

  • Wenn keine Bindung für die Rolle vorhanden ist, fügen Sie dem Array bindings ein neues Objekt hinzu, das die Rolle und das Mitglied definiert, dem Sie die Rolle zuweisen möchten.
  • Wenn für die Rolle bereits eine Bindung vorhanden ist, fügen Sie das neue Mitglied der Liste der vorhandenen Mitglieder hinzu.

Wenn das Array bindings noch nicht vorhanden ist, können Sie es erstellen.

Beispiel:

Um die Rolle "Dienstkontonutzer (roles/iam.serviceAccountUser)" robin@example.com zuzuweisen, ändern Sie das im vorherigen Schritt gezeigte Beispiel so:

{
  "version": 1,
  "etag": "BwUqLaVeua8=",
  "bindings": [
    {
      "role": "roles/iam.serviceAccountUser",
      "members": [
        "user:robin@example.com"
      ]
    },
    {
      "role": "roles/iam.serviceAccountAdmin",
      "members": [
        "user:hollis@example.com"
      ]
    }
  ]
}

Schreiben Sie die aktualisierte Richtlinie.

Rufen Sie die Methode setIamPolicy() auf, um die aktualisierte Richtlinie zu schreiben:

POST https://iam.googleapis.com/v1/projects/project-id/serviceAccounts/sa-id:setIamPolicy

Ersetzen Sie die folgenden Werte:

  • project-id: ID Ihres Google Cloud-Projekts.
  • sa-id: Die ID Ihres Dienstkontos. Diese kann entweder die E-Mail-Adresse des Dienstkontos im Format sa-name@project-id.iam.gserviceaccount.com oder die eindeutige numerische ID des Dienstkontos sein.

Der Anfragetext muss die aktualisierte Richtlinie enthalten, zum Beispiel:

{
  "policy": {
    "version": 1,
    "etag": "BwUqLaVeua8=",
    "bindings": [
      {
        "role": "roles/iam.serviceAccountUser",
        "members": [
          "user:robin@example.com"
        ]
      },
      {
        "role": "roles/iam.serviceAccountAdmin",
        "members": [
          "user:hollis@example.com"
        ]
      }
    ]
  }
}

Die Antwort enthält die aktualisierte Richtlinie.

Mitglieder auflisten, die auf ein Dienstkonto zugreifen können

Verwenden Sie die Cloud Console, um alle Mitglieder anzuzeigen, die entweder aufgrund von Rollen, die für das Dienstkonto oder für das Projekt, den Ordner oder die Organisation gewährt wurden, Zugriff auf ein Dienstkonto haben:

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

    Zur Seite "Dienstkonten"

  2. Klicken Sie auf Projekt auswählen, wählen Sie ein Projekt aus und klicken Sie auf Öffnen.

  3. Aktivieren Sie das Kästchen neben dem gewünschten Dienstkonto.

  4. Wenn das Infofeld nicht sichtbar ist, klicken Sie auf Infofeld ansehen. Eine Liste der Rollen, die für das Dienstkonto zugewiesen wurden, wird angezeigt.

  5. Wenn Sie eine Rolle maximieren, können Sie die Mitglieder sehen, denen diese Rolle für das Dienstkonto zugewiesen wurde.

Dienstkonto an eine Ressource binden

Bei einigen Google Cloud-Ressourcen können Sie ein nutzerverwaltetes Dienstkonto angeben, das von der Ressource als Standardidentität verwendet wird. Dieser Vorgang wird als "das Dienstkonto an die Ressource binden" oder als "das Dienstkonto mit der Ressource verknüpfen" bezeichnet.

Wenn die Ressource auf andere Google Cloud-Dienste und -Ressourcen zugreifen muss, übernimmt sie das Dienstkonto, das an die Ressource gebunden ist. Wenn Sie beispielsweise ein Dienstkonto an eine Compute Engine-Instanz binden, verwenden die Anwendungen auf der Instanz dieses Dienstkonto automatisch, wenn sie Google Cloud APIs aufrufen.

In den meisten Fällen müssen Sie ein Dienstkonto an eine Ressource binden, wenn Sie diese Ressource erstellen. Nachdem die Ressource erstellt wurde, können Sie die Dienstkontobindung nicht mehr hinzufügen, ändern oder entfernen. Compute Engine-Instanzen sind eine Ausnahme von dieser Regel. Sie können die Dienstkontobindung aktualisieren, falls erforderlich.

Weitere Informationen finden Sie in der Anleitung für den Ressourcentyp, den Sie erstellen möchten:

Ein Dienstkonto beim Erstellen einer Ressource binden
AI Platform

Modellversionen

Geben Sie das Dienstkonto im Parameter --config an.

AI Platform Notebooks Notebookinstanzen
Cloud Composer Umgebungen
Cloud Functions Cloud Functions-Funktion
Cloud Life Sciences Pipelines
Cloud Run Services
Cloud Scheduler Jobs
Cloud Source Repositories
Compute Engine
Dataflow Jobs
Datalab Instanzen
Dataproc Cluster
Google Kubernetes Engine
Pub/Sub Abos

Nachdem Sie die Ressource erstellt und das Dienstkonto an diese Ressource gebunden haben, können Sie dem Dienstkonto Rollen zuweisen, damit es auf die entsprechenden Ressourcen zugreifen kann. Dieser Vorgang ist derselbe wie das Zuweisen einer Rolle an andere Mitglieder.

Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

Weitere Informationen