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 beschrieben, wie Sie feststellen können, welche Mitglieder die Identität eines bestimmten IAM-Dienstkontos übernehmen können.

Vorbereitung

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

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

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 IAM-Seite

  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

Ä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 dem Array bindings ein Objekt 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

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 zuzuweisen und schreiben Sie dann die aktualisierte Richtlinie.

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

Die Methode getIamPolicy der Resource Manager API ruft die IAM-Richtlinie eines Projekts, Ordners oder einer Organisation ab.

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • API_VERSION: Die zu verwendende API-Version. Verwenden Sie v1 für Projekte und Organisationen. Verwenden Sie v2 für Ordner.
  • RESOURCE_TYPE: Der Ressourcentyp, dessen Richtlinie Sie verwalten möchten. Verwenden Sie den Wert projects, folders oder organizations.
  • RESOURCE_ID: Die ID Ihres Google Cloud-Projekts, Ihrer Organisation oder Ihres Ordners. Projekt-IDs sind alphanumerische Strings, wie my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.
  • POLICY_VERSION: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.

HTTP-Methode und URL:

POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy

JSON-Text anfordern:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie müssten in etwa folgende JSON-Antwort erhalten:

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

Wenn keine Richtlinie vorhanden ist, enthält die Antwort nur das Standard-etag. Wenn Sie diese Antwort erhalten, fügen Sie ein version-Feld hinzu, das auf 3 gesetzt ist, und ein bindings-Feld, das auf ein leeres Array gesetzt ist.

Ä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 dem Array bindings ein Objekt 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.

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:owner@example.com"
      ]
    }
  ]
}

Schreiben Sie die aktualisierte Richtlinie.

Die Methode setIamPolicy der Resource Manager API legt die Richtlinie in der Anfrage als neue IAM-Richtlinie für das Projekt, den Ordner oder die Organisation fest.

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • API_VERSION: Die zu verwendende API-Version. Verwenden Sie v1 für Projekte und Organisationen. Verwenden Sie v2 für Ordner.
  • RESOURCE_TYPE: Der Ressourcentyp, dessen Richtlinie Sie verwalten möchten. Verwenden Sie den Wert projects, folders oder organizations.
  • RESOURCE_ID: Die ID Ihres Google Cloud-Projekts, Ihrer Organisation oder Ihres Ordners. Projekt-IDs sind alphanumerische Strings, wie my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.
  • POLICY: Eine JSON-Darstellung der Richtlinie, die Sie festlegen möchten. Weitere Informationen zum Format einer Richtlinie finden Sie in der Richtlinienreferenz.

    Zum Festlegen der im vorherigen Schritt angezeigten Richtlinie ersetzen Sie beispielsweise POLICY durch Folgendes:

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

HTTP-Methode und URL:

POST https://iam.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:setIamPolicy

JSON-Text anfordern:

{
  "policy": POLICY
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

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. Wählen Sie ein Projekt aus.

  3. Klicken Sie auf die E-Mail-Adresse des Dienstkontos, das vom Mitglied übernommen werden soll.

  4. Klicken Sie auf den Tab Berechtigungen.

  5. Klicken Sie unter Mitglieder mit Zugriff auf dieses Dienstkonto auf Zugriff erlauben.

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

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

  8. Klicken Sie auf Speichern, 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

Ä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

    Wenn Sie die Rolle „Dienstkontonutzer (roles/iam.serviceAccountUser)“ robin@example.com zuweisen möchten, ä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

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

Die Methode serviceAccounts.getIamPolicy ruft die IAM-Richtlinie eines Dienstkontos ab.

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.
  • SA_ID: Die ID Ihres Dienstkontos. Dies 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_VERSION: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.

HTTP-Methode und URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:getIamPolicy

JSON-Text anfordern:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie müssten in etwa folgende JSON-Antwort erhalten:

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

Wenn keine Richtlinie vorhanden ist, enthält die Antwort nur das Standard-etag. Wenn Sie diese Antwort erhalten, fügen Sie ein version-Feld hinzu, das auf 3 gesetzt ist, und ein bindings-Feld, das auf ein leeres Array gesetzt ist.

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

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:admin@example.com"
      ]
    }
  ]
}

Schreiben Sie die aktualisierte Richtlinie.

Die Methode serviceAccounts.setIamPolicy legt eine aktualisierte IAM-Richtlinie für das Dienstkonto fest.

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.
  • SA_ID: Die ID Ihres Dienstkontos. Dies 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: Eine JSON-Darstellung der Richtlinie, die Sie festlegen möchten. Weitere Informationen zum Format einer Richtlinie finden Sie in der Richtlinienreferenz.

    Zum Festlegen der im vorherigen Schritt angezeigten Richtlinie ersetzen Sie beispielsweise policy durch Folgendes:

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

HTTP-Methode und URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:setIamPolicy

JSON-Text anfordern:

{
  "policy": POLICY
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

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. Wählen Sie ein Projekt aus.

  3. Klicken Sie auf die E-Mail-Adresse des Dienstkontos, das vom Mitglied übernommen werden soll.

  4. Klicken Sie auf den Tab Berechtigungen. Im Bereich Mitglieder mit Zugriff auf dieses Dienstkonto werden die Mitglieder aufgelistet, die auf das Dienstkonto zugreifen können.

Dienstkonto an eine Ressource anhängen

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 Anhängen des Dienstkontos an die Ressource oder Verknüpfen des Dienstkontos mit der Ressource bezeichnet.

Wenn eine Ressource auf andere Google Cloud-Dienste und -Ressourcen zugreifen muss, wird die Identität des Dienstkontos übernommen, das mit ihr verknüpft ist. Wenn Sie beispielsweise ein Dienstkonto an eine Compute Engine-Instanz anhängen, und die Anwendungen auf der Instanz eine Clientbibliothek verwenden, um Google Cloud APIs aufzurufen, übernehmen diese Anwendungen automatisch die Identität des angehängten Dienstkontos.

In den meisten Fällen müssen Sie beim Erstellen einer Ressource ein Dienstkonto an eine Ressource anhängen. Nachdem die Ressource erstellt wurde, können Sie nicht mehr ändern, welches Dienstkonto an der Ressource angehängt ist. Compute Engine-Instanzen sind eine Ausnahme von dieser Regel. Sie können je nach Bedarf ändern, welches Dienstkonto an eine Instanz angehängt ist.

Bevor Sie ein Dienstkonto an eine Ressource anhängen, müssen Sie das Dienstkonto konfigurieren. Dieser Vorgang unterscheidet sich je nachdem, ob sich das Dienstkonto und die Ressource im selben Projekt oder in verschiedenen Projekten befinden. Nachdem Sie das Dienstkonto konfiguriert haben, können Sie die Ressource erstellen und das Dienstkonto an diese Ressource anhängen.

Für eine Ressource im selben Projekt konfigurieren

Bevor Sie ein Dienstkonto an eine andere Ressource im selben Projekt anhängen, weisen Sie dem Dienstkonto Rollen zu, damit es auf die entsprechenden Ressourcen zugreifen kann, genauso wie Sie anderen Mitgliedern Rollen zuweisen würden.

Für eine Ressource in einem anderen Projekt konfigurieren

In manchen Fällen müssen Sie ein Dienstkonto an eine Ressource anhängen, die sich in einem anderen Projekt befindet. Wenn Sie beispielsweise alle Dienstkonten in einem einzelnen Projekt erstellen, müssen Sie sie möglicherweise mit einer neuen Ressource in einem anderen Projekt verknüpfen.

Führen Sie die folgenden Schritte aus, bevor Sie ein Dienstkonto an eine Ressource in einem anderen Projekt anhängen:

  1. Führen Sie im Projekt, in dem sich das Dienstkonto befindet, die Schritte auf dieser Seite aus, um den Identitätsübertragung für ein Dienstkonto Projektübergreifend zu aktivieren.
  2. Identifizieren Sie das Projekt, in dem Sie die Ressource erstellen möchten.
  3. Ermitteln Sie den Art der Ressource, an die Sie das Dienstkonto anhängen möchten, sowie den Dienst, der diese Art von Ressource besitzt.

    Wenn Sie beispielsweise ein Pub/Sub-Abo erstellen, ist Pub/Sub der Dienst, der die Ressource besitzt.

  4. Suchen Sie die E-Mail-Adresse des von Google verwalteten Dienstkontos für den Dienst.

    Verschiedene Dienste verwenden unterschiedliche von Google verwaltete Dienstkonten. Einzelheiten finden Sie unter Von Google verwaltete Dienstkonten und Dienst-Agents.

  5. Weisen Sie den von Google verwalteten Dienstkonten die Rolle „Ersteller von Dienstkonto-Token” (roles/iam.serviceAccountTokenCreator) zu:

    Console

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

      Zur Seite „Dienstkonten“

    2. Wählen Sie das Projekt aus, dem das Dienstkonto gehört, das Sie an eine Ressource anhängen möchten.

    3. Suchen Sie das Dienstkonto, das Sie an eine Ressource anhängen möchten, und klicken Sie das zugehörige Kästchen an.

    4. Klicken Sie im Bereich Berechtigungen auf Mitglied hinzufügen.

    5. Geben Sie im Feld Neue Mitglieder die E-Mail-Adresse des von Google verwalteten Dienstkontos ein.

    6. Geben Sie im Drop-down-Liste Rolle auswählen den Wert Service Account Token Creator ein und klicken Sie dann auf die Rolle.

    7. Klicken Sie auf Speichern, um die Änderungen zu speichern.

    8. Optional: Wenn Sie die Rolle einem anderen von Google verwalteten Dienstkonto zuweisen müssen, wiederholen Sie die vorherigen Schritte.

    gcloud

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

    gcloud iam service-accounts add-iam-policy-binding \
        user-sa-name@project-id.iam.gserviceaccount.com \
        --member=serviceAccount:google-sa-email \
        --role=roles/iam.serviceAccountTokenCreator
    

    Ersetzen Sie die folgenden Werte:

    • user-sa-name: Der Name des nutzerverwalteten Dienstkontos, das Sie an eine Ressource anhängen.
    • project-id: Die Projekt-ID, in der sich das vom Nutzer verwaltete Dienstkonto befindet.
    • google-sa-email: Die E-Mail-Adresse des von Google verwalteten Dienstkontos.

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

    Optional: Wenn Sie die Rolle einem anderen von Google verwalteten Dienstkonto zuweisen müssen, führen Sie den Befehl noch einmal aus.

    REST

    Verwenden Sie zum Zuweisen dieser Rolle das Read-Modify-Write-Muster, um die IAM-Richtlinie für Ihr vom Nutzer verwaltetes Dienstkonto zu aktualisieren.

    Lesen Sie als Erstes die IAM-Richtlinie für das vom Nutzer verwaltete Dienstkonto:

    Die Methode projects.serviceAccounts.getIamPolicy gibt die IAM-Richtlinie für das Dienstkonto zurück.

    Ersetzen Sie diese Werte in den folgenden Anweisungen:

    • PROJECT_ID: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.
    • USER_SA_NAME: Der Name des nutzerverwalteten Dienstkontos, das Sie an eine Ressource binden.

    HTTP-Methode und URL:

    POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/USER_SA_NAME@PROJECT_ID.iam.gserviceaccount.com:getIamPolicy

    JSON-Text anfordern:

    {
      "requestedPolicyVersion": 3
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie müssten in etwa folgende JSON-Antwort erhalten:

    {
      "version": 1,
      "etag": "BwWl3KCTUMY=",
      "bindings": [
        {
          "role": "roles/iam.serviceAccountUser",
          "members": [
            "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com"
          ]
        }
      ]
    }
    

    Ändern Sie dann die Richtlinie, um dem von Google verwalteten Dienstkonto die Rolle "Ersteller von Dienstkonto-Token" zuzuweisen. Ersetzen Sie GOOGLE_SA_EMAIL durch die E-Mail-Adresse des von Google verwalteten Dienstkontos:

    {
      "version": 1,
      "etag": "BwWl3KCTUMY=",
      "bindings": [
        {
          "role": "roles/iam.serviceAccountTokenCreator",
          "members": [
            "serviceAccount:GOOGLE_SA_EMAIL"
          ]
        },
        {
          "role": "roles/iam.serviceAccountUser",
          "members": [
            "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com"
          ]
        }
      ]
    }
    

    Schreiben Sie anschließend die aktualisierte Richtlinie:

    Die Methode projects.serviceAccounts.setIamPolicy aktualisiert die IAM-Richtlinie für Ihr Dienstkonto.

    Ersetzen Sie diese Werte in den folgenden Anweisungen:

    • PROJECT_ID: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.
    • USER_SA_NAME: Der Name des nutzerverwalteten Dienstkontos, das Sie an eine Ressource binden.
    • GOOGLE_SA_EMAIL: Die E-Mail-Adresse des von Google verwalteten Dienstkontos, das Zugriffstoken für Ihr nutzerverwaltetes Dienstkonto erstellt.

    HTTP-Methode und URL:

    POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/USER_SA_NAME@PROJECT_ID.iam.gserviceaccount.com:setIamPolicy

    JSON-Text anfordern:

    {
      "policy": {
        "version": 1,
        "etag": "BwWl3KCTUMY=",
        "bindings": [
          {
            "role": "roles/iam.serviceAccountTokenCreator",
            "members": [
              "serviceAccount:GOOGLE_SA_EMAIL"
            ]
          },
          {
            "role": "roles/iam.serviceAccountUser",
            "members": [
              "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com"
            ]
          }
        ]
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie müssten in etwa folgende JSON-Antwort erhalten:

    {
      "version": 1,
      "etag": "BwWo331TkHE=",
      "bindings": [
        {
          "role": "roles/iam.serviceAccountTokenCreator",
          "members": [
            "serviceAccount:GOOGLE_SA_EMAIL"
          ]
        },
        {
          "role": "roles/iam.serviceAccountUser",
          "members": [
            "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com"
          ]
        }
      ]
    }
    

Dienstkonto an die neue Ressource anhängen

Nachdem Sie das nutzerverwaltete Dienstkonto konfiguriert haben, können Sie eine neue Ressource erstellen und das Dienstkonto an diese Ressource anhängen. Achten Sie darauf, dass Sie die neue Ressource im entsprechenden Projekt erstellen.

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

Dienstkonto beim Erstellen einer Ressource anhängen
AI Platform Prediction Modellversionen
AI Platform Training Jobs
Cloud Composer Umgebungen
Cloud Functions Cloud Functions-Funktion
Cloud Life Sciences Pipelines
Cloud Run Services
Cloud Scheduler Jobs
Cloud Quell-Repositories
Compute Engine
Dataflow Jobs
Datalab Instanzen
Dataproc Cluster
Google Kubernetes Engine
Notebooks Notebookinstanzen
Pub/Sub Abos
Vertex AI

Nachdem Sie die Ressource erstellt und das Dienstkonto an diese Ressource angehängt 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.

Audit-Logs interpretieren

Mit Cloud-Audit-Logging können Sie für Ihre Google Cloud-Ressourcen herausfinden, wer was wo und wann getan hat.

Wenn Sie kurzlebige Anmeldedaten verwenden, um die Identität eines Dienstkontos zu übernehmen, erstellen die meisten Google Cloud-Dienste Logeinträge, die die folgenden Identitäten enthalten:

  • Das Dienstkonto, für das die kurzlebigen Anmeldedaten eine Identitätsübernahme durchführen
  • Die Identität, die die kurzlebigen Anmeldedaten erstellt hat

Anhand dieser Logeinträge können Sie das Mitglied identifizieren, das die kurzlebigen Anmeldedaten erstellt hat, sowie das Dienstkonto, dessen Identität vom Mitglied angenommen wurde.

Beispiele für Audit-Log-Einträge, die die Identitätsübertragung für ein Dienstkonto anzeigen, finden Sie unter Identität eines Dienstkontos für den Zugriff auf Google Cloud übernehmen.

Identitätsübertragung für ein Dienstkonto Projektübergreifend aktivieren

Standardmäßig können Sie ein Dienstkonto nicht in einem Projekt erstellen und es mit einer Ressource in einem anderen Projekt verknüpfen. Wenn Sie alle Dienstkonten in einem Projekt behalten möchten, müssen Sie die Organisationsrichtlinie für dieses Projekt aktualisieren.

Prüfen Sie in der Organisationsrichtlinie für das Projekt, in dem sich Ihre Dienstkonten befinden, die folgenden booleschen Einschränkungen:

  • Achten Sie darauf, dass die boolesche Einschränkung iam.disableCrossProjectServiceAccountUsage für das Projekt nicht erzwungen wird.

    Diese boolesche Einschränkung steuert, ob Sie ein Dienstkonto an eine Ressource in einem anderen Projekt anhängen können. Die Einschränkung wird standardmäßig erzwungen.

    Wenn diese Einschränkung nicht erzwungen wird, fügt IAM eine Projektsperre hinzu, die das Löschen des Projekts verhindert. Diese Sperre hat den Ursprung iam.googleapis.com/cross-project-service-accounts. Wir raten Ihnen dringend davon ab, diese Sperre zu löschen.

  • Empfohlen: Achten Sie darauf, dass die boolesche Einschränkung iam.restrictCrossProjectServiceAccountLienRemoval für das Projekt erzwungen wird.

    Diese boolesche Einschränkung sorgt dafür, dass Mitglieder die Projektsperre nur dann entfernen können, wenn sie auf Organisationsebene die Berechtigung resourcemanager.projects.updateLiens haben. Wenn diese Einschränkung nicht erzwungen wird, können Mitglieder die Projektsperre entfernen, wenn sie die Berechtigung auf Projektebene haben.

Wie Sie eine boolesche Einschränkung in einer Organisationsrichtlinie aufrufen oder ändern, erfahren Sie unter Boolesche Einschränkung festlegen.

Identitätsübertragung für ein Dienstkonto Projektübergreifend deaktivieren

Wenn Sie zuvor die Identitätsübertragung für ein Dienstkonto projektübergreifend aktiviert haben, raten wir Ihnen dringend davon ab, diese Funktion zu deaktivieren, insbesondere in Produktionsumgebungen.

Insbesondere sollten Sie in dem Projekt, in dem sich Ihre Dienstkonten befinden, keine dieser Änderungen vornehmen:

  • Aktualisieren Sie nicht die Organisationsrichtlinie des Projekts, um die boolesche Einschränkung iam.disableCrossProjectServiceAccountUsage zu erzwingen.
  • Aktualisieren Sie die Organisationsrichtlinie des Projekts nicht, um die boolesche Einschränkung iam.restrictCrossProjectServiceAccountLienRemoval nicht zu erzwingen.
  • Entfernen Sie die Projektsperre mit dem Ursprung iam.googleapis.com/cross-project-service-accounts nicht, welche verhindert, dass das Projekt gelöscht werden kann.
  • Löschen Sie das Projekt nicht.

Wenn Sie bereit sind, die Risiken dieser Funktion anzunehmen, können Sie die Dienstkonten deaktivieren, die Sie projektübergreifend verwenden. Danach überwachen Sie Ihre Google Cloud-Umgebung für Probleme. Sollten Sie Probleme feststellen, können Sie die Dienstkonten wieder aktivieren. Wenn Sie keine Probleme sehen, haben Sie möglicherweise keine Google Cloud-Ressourcen, die von einem Dienstkonto in einem anderen Projekt abhängen.

Nächste Schritte