Zugriff auf Dienstkonten verwalten

Auf dieser Seite wird beschrieben, wie Sie den Zugriff eines Hauptkontos auf ein einzelnes Dienstkonto gewähren, ändern und widerrufen. Um den Zugriff eines Hauptkontos auf alle Dienstkonten in einem Projekt, Ordner oder einer Organisation zu verwalten, verwalten Sie den Zugriff auf Projekt-, Ordner- oder Organisationsebene.

In der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) wird der Zugriff über „allow”-Richtlinien (auch als IAM-Richtlinien bezeichnet) verwaltet. Eine „allow”-Richtlinie ist mit einer Google Cloud-Ressource verknüpft. Jede Richtlinie enthält eine Sammlung von Rollenbindungen, die ein oder mehrere Hauptkonten, z. B. Nutzer oder Dienstkonten, mit einer IAM-Rolle verknüpfen. Diese Rollenbindungen gewähren den Hauptkonten die angegebenen Rollen sowohl für die Ressource, mit der die „allow”-Richtlinie verbunden ist, als auch für alle Nachfolgerelemente der Ressource. Weitere Informationen zu „allow”-Richtlinien finden Sie unter „allow”-Richtlinien.

Dienstkonten sind sowohl Ressourcen, auf die andere Hauptkonten Zugriff erhalten können, als auch Hauptkonten, denen Zugriff auf andere Ressourcen gewährt werden kann. Auf dieser Seite werden Dienstkonten als Ressourcen behandelt und es wird beschrieben, wie Sie anderen Hauptkonten Zugriff darauf gewähren. In den folgenden Anleitungen wird beschrieben, wie Sie einem Dienstkonto Zugriff auf andere Ressourcen gewähren:

Auf dieser Seite wird beschrieben, wie Sie den Zugriff auf Dienstkonten mithilfe der Google Cloud Console, des Google Cloud CLI und der REST API verwalten. Sie können den Zugriff auch mithilfe von IAM-Clientbibliotheken verwalten.

Hinweis

  • Enable the IAM API.

    Enable the API

  • Weitere Informationen zu Dienstkonten

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Dienstkontoadministrator (roles/iam.serviceAccountAdmin) für das Dienstkonto oder das Projekt, dem das Dienstkonto gehört, zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten des Zugriffs auf ein Dienstkonto benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Verwalten des Zugriffs auf ein Dienstkonto erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um den Zugriff auf ein Dienstkonto zu verwalten:

  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • iam.serviceAccounts.getIamPolicy
  • iam.serviceAccounts.setIamPolicy

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Aktuellen Zugriff ansehen

Im folgenden Abschnitt erfahren Sie, wie Sie sich mit der Google Cloud Console, der gcloud CLI und der REST API den Zugriff auf ein Dienstkonto ansehen. Sie können den Zugriff auch mithilfe der IAM-Clientbibliotheken einsehen, um die Zulassungsrichtlinie des Dienstkontos abzurufen.

Console

  1. Rufen Sie in der Google 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.

  4. Wechseln Sie zum Tab Berechtigungen. Im Abschnitt Hauptkonten mit Zugriff auf dieses Dienstkonto werden alle Hauptkonten aufgelistet, denen eine Rolle für das Dienstkonto zugewiesen wurde.

    Diese Liste enthält Hauptkonten, deren Zugriff von Rollen stammt, die für übergeordnete Ressourcen gewährt wurden. Weitere Informationen zur Richtlinienübernahme finden Sie unter Richtlinienübernahme und die Ressourcenhierarchie.

  5. Optional: Klicken Sie auf das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen, um Rollenzuweisungen für Dienst-Agents aufzurufen.

gcloud

Wenn Sie sehen möchten, wer Zugriff auf Ihr Dienstkonto hat, rufen Sie die Zulassungsrichtlinie für das Dienstkonto ab. Informationen zum Interpretieren von „allow”-Richtlinien finden Sie unter Informationen zu „allow”-Richtlinien.

Um die Zulassungsrichtlinie für das Dienstkonto abzurufen, führen Sie den Befehl get-iam-policy für das Dienstkonto aus:

gcloud iam service-accounts get-iam-policy SA_ID --format=FORMAT > PATH

Geben Sie folgende Werte an:

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

  • FORMAT: Das Format der Richtlinie. Verwenden Sie json oder yaml.

  • PATH: Pfad zu einer neuen Ausgabedatei für die Richtlinie.

Mit dem folgenden Befehl wird beispielsweise die Richtlinie für das Dienstkonto my-service-account abgerufen und im JSON-Format in Ihrem Basisverzeichnis gespeichert:

gcloud iam service-accounts get-iam-policy my-service-account --format json > ~/policy.json

REST

Wenn Sie sehen möchten, wer Zugriff auf Ihr Dienstkonto hat, rufen Sie die Zulassungsrichtlinie für das Dienstkonto ab. Informationen zum Interpretieren von „allow”-Richtlinien finden Sie unter Informationen zu „allow”-Richtlinien.

Die Methode serviceAccounts.getIamPolicy ruft die Zulassungsrichtlinie eines Dienstkontos ab.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

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

Die Antwort enthält die Zulassungsrichtlinie des Dienstkontos. Beispiel:

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

Einzelne Rolle gewähren oder widerrufen

Sie können die Google Cloud Console und die gcloud CLI verwenden, um für ein einzelnes Hauptkonto schnell eine einzelne Rolle zuzuweisen oder zu widerrufen, ohne die Zulassungsrichtlinie des Dienstkontos direkt zu bearbeiten. Zu den gängigen Typen von Hauptkonten zählen Google-Konten, Dienstkonten, Google-Gruppen und Domains. Eine Liste der Typen von Hauptkonten finden Sie unter Konzepte in Verbindung mit Identität.

Im Allgemeinen werden Richtlinienänderungen innerhalb von zwei Minuten wirksam. In einigen Fällen kann es jedoch sieben Minuten oder länger dauern, bis die Änderungen im gesamten System wirksam wurden.

Hilfe bei der Ermittlung der am besten geeigneten vordefinierten Rolle finden Sie unter Vordefinierte Rollen auswählen.

Einzelne Rolle gewähren

So weisen Sie einem Hauptkonto eine einzelne Rolle zu:

Console

  1. Rufen Sie in der Google 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.

  4. Wechseln Sie zum Tab Berechtigungen und suchen Sie den Abschnitt Hauptkonten mit Zugriff auf dieses Dienstkonto.

  5. Wählen Sie ein Hauptkonto aus, um in folgenden Fällen eine Rolle zuzuweisen:

    • Wenn Sie eine Rolle einem Hauptkonto zuweisen möchten, das bereits andere Rollen für das Dienstkonto hat, suchen Sie nach einer Zeile, die das Hauptkonto enthält, klicken Sie in der Zeile auf Hauptkonto bearbeiten und klicken Sie dann auf Weitere Rolle hinzufügen.

      Wenn Sie einem Kundenservicemitarbeiter eine Rolle zuweisen möchten, müssen Sie das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen anklicken, um die entsprechende E-Mail-Adresse zu sehen.

    • Wenn Sie einer Entität eine Rolle zuweisen möchten, die noch keine Rollen für das Dienstkonto hat, klicken Sie auf Zugriff gewähren und geben Sie dann eine Kennung für die Entität ein, z. B. my-user@example.com.

  6. Wählen Sie eine zu gewährende Rolle aus der Drop-down-Liste aus. Wählen Sie als Best Practice für die Sicherheit eine Rolle aus, die nur die Berechtigungen enthält, die das Hauptkonto benötigt.

  7. Optional: Fügen Sie der Rolle eine Bedingung hinzu.

  8. Klicken Sie auf Speichern. Dem Hauptkonto wird die Rolle für das Dienstkonto zugewiesen.

gcloud

Wenn Sie einem Hauptkonto eine Rolle zuweisen möchten, führen Sie den Befehl add-iam-policy-binding aus:

gcloud iam service-accounts add-iam-policy-binding SA_ID \
    --member=PRINCIPAL --role=ROLE_NAME \
    --condition=CONDITION

Geben Sie folgende Werte an:

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

  • PRINCIPAL: Eine Kennung für das Hauptkonto bzw. Mitglied, die normalerweise die folgende Form hat: PRINCIPAL-TYPE:ID. Beispiel: user:my-user@example.com Eine vollständige Liste der für PRINCIPAL zulässigen Werte finden Sie unter Principal-IDs.

    Beim Hauptkontotyp user muss der Domainname in der Kennung eine Google Workspace- oder Cloud Identity-Domain sein. Informationen zum Einrichten einer Cloud Identity-Domain finden Sie unter Cloud Identity – Übersicht.

  • ROLE_NAME: Der Name der Rolle, die Sie zuweisen möchten. Verwenden Sie eines der folgenden Formate:

    • Vordefinierte Rollen: roles/SERVICE.IDENTIFIER
    • Benutzerdefinierte Rollen auf Projektebene: projects/PROJECT_ID/roles/IDENTIFIER
    • Benutzerdefinierte Rollen auf Organisationsebene: organizations/ORG_ID/roles/IDENTIFIER

    Eine Liste der vordefinierten Rollen finden Sie unter Informationen zu Rollen.

  • CONDITION: Optional. Die Bedingung, die der Rollenbindung hinzugefügt werden soll. Weitere Informationen zu Bedingungen finden Sie in der Übersicht der Bedingungen.

So gewähren Sie dem Nutzermy-user@example.combeispielsweise die Rolle „Dienstkontonutzer“ für das Dienstkonto my-service-account@my-project.iam.gserviceaccount.com:

gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
    --member=user:my-user@example.com --role=roles/iam.serviceAccountUser

Einzelne Rolle widerrufen

So widerrufen Sie eine einzelne Rolle eines Hauptkontos:

Console

  1. Rufen Sie in der Google 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.

  4. Wechseln Sie zum Tab Berechtigungen und suchen Sie den Abschnitt Hauptkonten mit Zugriff auf dieses Dienstkonto.

  5. Suchen Sie die Zeile mit dem Hauptkonto, dessen Zugriff Sie widerrufen möchten. Klicken Sie dann auf Hauptkonto bearbeiten in dieser Zeile.

  6. Klicken Sie für die Rolle, die Sie entziehen möchten, auf die Schaltfläche Löschen und dann auf Speichern.

gcloud

Wenn Sie einem Nutzer eine Rolle entziehen möchten, führen Sie den Befehl remove-iam-policy-binding aus:

gcloud iam service-accounts remove-iam-policy-binding SA_ID \
    --member=PRINCIPAL --role=ROLE_NAME

Geben Sie folgende Werte an:

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

  • PRINCIPAL: Eine Kennung für das Hauptkonto bzw. Mitglied, die normalerweise die folgende Form hat: PRINCIPAL-TYPE:ID. Beispiel: user:my-user@example.com Eine vollständige Liste der für PRINCIPAL zulässigen Werte finden Sie unter Principal-IDs.

    Beim Hauptkontotyp user muss der Domainname in der Kennung eine Google Workspace- oder Cloud Identity-Domain sein. Informationen zum Einrichten einer Cloud Identity-Domain finden Sie unter Cloud Identity – Übersicht.

  • ROLE_NAME: Der Name der Rolle, die Sie aufheben möchten. Verwenden Sie eines der folgenden Formate:

    • Vordefinierte Rollen: roles/SERVICE.IDENTIFIER
    • Benutzerdefinierte Rollen auf Projektebene: projects/PROJECT_ID/roles/IDENTIFIER
    • Benutzerdefinierte Rollen auf Organisationsebene: organizations/ORG_ID/roles/IDENTIFIER

    Eine Liste der vordefinierten Rollen finden Sie unter Informationen zu Rollen.

So widerrufen Sie z. B. die Rolle „Dienstkontonutzer“ des Nutzersmy-user@example.comfür das Dienstkonto my-service-account@my-project.iam.gserviceaccount.com:

gcloud iam service-accounts remove-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
    --member=user:my-user@example.com --role=roles/iam.serviceAccountUser

Mehrere Rollen mithilfe der Google Cloud Console zuweisen oder widerrufen

In der Google Cloud Console können Sie für ein einzelnes Hauptkonto mehrere Rollen zuweisen und widerrufen:

  1. Rufen Sie in der Google 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.

  4. Wechseln Sie zum Tab Berechtigungen und suchen Sie den Abschnitt Hauptkonten mit Zugriff auf dieses Dienstkonto.

  5. Wählen Sie das Hauptkonto aus, dessen Rollen Sie ändern möchten:

    • Wenn Sie Rollen für ein Hauptkonto ändern möchten, das bereits Rollen für das Dienstkonto hat, suchen Sie die Zeile mit dem Hauptkonto und klicken Sie in dieser Zeile auf Hauptkonto bearbeiten. Klicken Sie dann auf Weitere Rolle hinzufügen.

      Wenn Sie Rollen für einen Kundenservicemitarbeiter ändern möchten, klicken Sie das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen an, um die entsprechende E-Mail-Adresse zu sehen.

    • Wenn Sie Rollen für ein Hauptkonto zuweisen möchten, das noch keine Rollen für das Dienstkonto hat, klicken Sie auf Zugriff gewähren und geben Sie dann die E-Mail-Adresse oder eine andere Kennung des Hauptkontos ein.

  6. Ändern Sie die Rollen des Hauptkontos:

    • Wenn Sie eine Rolle für ein Hauptkonto zuweisen möchten, das noch keine Rollen für die Ressource hat, klicken Sie auf Rolle auswählen und wählen Sie eine Rolle aus der Drop-down-Liste aus.
    • Wenn Sie dem Hauptkonto eine zusätzliche Rolle zuweisen möchten, klicken Sie auf Weitere Rolle hinzufügen und wählen Sie dann eine Rolle aus der Drop-down-Liste aus.
    • Wenn Sie eine der Rollen des Hauptkontos durch eine andere Rolle ersetzen möchten, klicken Sie auf die vorhandene Rolle und wählen Sie dann eine andere Rolle aus der Drop-down-Liste aus.
    • Wenn Sie eine der Rollen des Hauptkontos widerrufen möchten, klicken Sie für jede Rolle, die Sie widerrufen möchten, auf die Schaltfläche Löschen .

    Sie können einer Rolle auch eine Bedingung hinzufügen, die Bedingung einer Rolle ändern oder die Bedingung einer Rolle entfernen.

  7. Klicken Sie auf Speichern.

Mehrere Rollen programmatisch gewähren oder widerrufen

Um umfangreiche Zugriffsänderungen vorzunehmen, bei denen mehrere Rollen für mehrere Hauptkonten zugewiesen und widerrufen werden, verwenden Sie das Muster read-modify-write, um die Zulassungsrichtlinie des Dienstkontos zu aktualisieren:

  1. Lesen Sie die aktuelle Zulassungsrichtlinie, indem Sie getIamPolicy() aufrufen.
  2. Zulassungsrichtlinie entweder mithilfe eines Texteditors oder programmatisch bearbeiten, um Hauptkonten oder Rollenbindungen hinzuzufügen oder zu entfernen.
  3. Schreiben Sie die aktualisierte Zulassungsrichtlinie durch Aufrufen von setIamPolicy().

In diesem Abschnitt wird gezeigt, wie Sie mit der gcloud CLI und der REST API die Zulassungsrichtlinie aktualisieren. Sie können die Zulassungsrichtlinie auch mit den IAM-Clientbibliotheken aktualisieren.

Im Allgemeinen werden Richtlinienänderungen innerhalb von zwei Minuten wirksam. In einigen Fällen kann es jedoch sieben Minuten oder länger dauern, bis die Änderungen im gesamten System wirksam wurden.

Aktuelle Zulassungsrichtlinie abrufen

gcloud

Um die Zulassungsrichtlinie für das Dienstkonto abzurufen, führen Sie den Befehl get-iam-policy für das Dienstkonto aus:

gcloud iam service-accounts get-iam-policy SA_ID --format=FORMAT > PATH

Geben Sie folgende Werte an:

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

  • FORMAT: Das Format für die Zulassungsrichtlinie. Verwenden Sie json oder yaml.

  • PATH: Den Pfad zu einer neuen Ausgabedatei für die Zulassungsrichtlinie.

Mit dem folgenden Befehl wird beispielsweise die Zulassungsrichtlinie für das Dienstkonto my-service-account abgerufen und im JSON-Format in Ihrem Basisverzeichnis gespeichert:

gcloud iam service-accounts get-iam-policy my-service-account --format json > ~/policy.json

REST

Die Methode serviceAccounts.getIamPolicy ruft die Zulassungsrichtlinie eines Dienstkontos ab.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

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

Die Antwort enthält die Zulassungsrichtlinie des Dienstkontos. Beispiel:

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

Speichern Sie die Antwort in einer Datei des entsprechenden Typs (json oder yaml).

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur Java API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import com.google.cloud.iam.admin.v1.IAMClient;
import com.google.iam.admin.v1.ServiceAccountName;
import com.google.iam.v1.GetIamPolicyRequest;
import com.google.iam.v1.Policy;
import java.io.IOException;

public class GetServiceAccountPolicy {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your project ID.
    String projectId = "your-project-id";
    // TODO: Replace with your service account name.
    String serviceAccount = "your-service-account";
    getPolicy(projectId, serviceAccount);
  }

  // Gets a service account's IAM policy.
  public static Policy getPolicy(String projectId, String serviceAccount) throws IOException {

    // Construct the service account email.
    // You can modify the ".iam.gserviceaccount.com" to match the name of the service account
    // whose allow policy you want to get.
    String serviceAccountEmail = serviceAccount + "@" + projectId + ".iam.gserviceaccount.com";

    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (IAMClient iamClient = IAMClient.create()) {
      GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
              .setResource(ServiceAccountName.of(projectId, serviceAccountEmail).toString())
              .build();
      Policy policy = iamClient.getIamPolicy(request);
      System.out.println("Policy retrieved: " + policy.toString());
      return policy;
    }
  }
}

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur Python API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import iam_admin_v1
from google.iam.v1 import iam_policy_pb2, policy_pb2


def get_service_account_iam_policy(project_id: str, account: str) -> policy_pb2.Policy:
    """
    Get policy for service account.
    project_id: ID or number of the Google Cloud project you want to use.
    account: ID or email which is unique identifier of the service account.
    """

    iam_client = iam_admin_v1.IAMClient()
    request = iam_policy_pb2.GetIamPolicyRequest()
    request.resource = f"projects/{project_id}/serviceAccounts/{account}"

    policy = iam_client.get_iam_policy(request)
    return policy

Ändern Sie die Zulassungsrichtlinie

Passen Sie die lokale Kopie der Zulassungsrichtlinie Ihres Dienstkontos programmatisch oder mit einem Texteditor an die Rollen an, die Sie bestimmten Nutzern gewähren oder entziehen möchten.

Bearbeiten Sie das Feld etag der Zulassungsrichtlinie nicht und entfernen Sie es nicht, um sicherzustellen, dass Sie keine anderen Richtlinienänderungen überschreiben. Das Feld etag gibt den aktuellen Zustand der Zulassungsrichtlinie an. Wenn Sie die aktualisierte Zulassungsrichtlinie festlegen, vergleicht IAM den etag-Wert in der Anfrage mit dem vorhandenen etag und schreibt die Zulassungsrichtlinie nur, wenn die Werte übereinstimmen.

Wenn Sie die Rollen bearbeiten möchten, die durch eine Zulassungsrichtlinie gewährt werden, müssen Sie die Rollenbindungen in der Zulassungsrichtlinie bearbeiten. Rollenbindungen haben folgendes Format:

{
  "role": "ROLE_NAME",
  "members": [
    "PRINCIPAL_1",
    "PRINCIPAL_2",
    ...
    "PRINCIPAL_N"
  ],
  "conditions:" {
    CONDITIONS
  }
}

Die Platzhalter haben folgende Werte:

  • ROLE_NAME: Der Name der Rolle, die Sie zuweisen möchten. Verwenden Sie eines der folgenden Formate:

    • Vordefinierte Rollen: roles/SERVICE.IDENTIFIER
    • Benutzerdefinierte Rollen auf Projektebene: projects/PROJECT_ID/roles/IDENTIFIER
    • Benutzerdefinierte Rollen auf Organisationsebene: organizations/ORG_ID/roles/IDENTIFIER

    Eine Liste der vordefinierten Rollen finden Sie unter Informationen zu Rollen.

  • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: IDs für die Hauptkonten, denen Sie die Rolle zuweisen möchten.

    Hauptkonto-Kennzeichnungen haben normalerweise das folgende Format: PRINCIPAL-TYPE:ID. Beispiel: user:my-user@example.com. Eine vollständige Liste der für PRINCIPAL zulässigen Werte finden Sie unter Principal-IDs.

    Beim Hauptkontotyp user muss der Domainname in der Kennung eine Google Workspace- oder Cloud Identity-Domain sein. Informationen zum Einrichten einer Cloud Identity-Domain finden Sie unter Cloud Identity – Übersicht.

  • CONDITIONS: Optional. Bedingungen, die festlegen, wann der Zugriff gewährt wird.

Rolle zuweisen

Ändern Sie die Rollenbindungen in der Zulassungsrichtlinie, um Ihren Hauptkonten Rollen zuzuweisen. Informationen zu den Rollen, die Sie zuweisen können, finden Sie unter Informationen zu Rollen oder Zuweisbare Rollen anzeigen für das Dienstkonto. Hilfe bei der Ermittlung der am besten geeigneten vordefinierten Rollen finden Sie unter Vordefinierte Rollen auswählen.

Optional können Sie Bedingungen zum Zuweisen von Rollen verwenden, wenn bestimmte Anforderungen erfüllt sein müssen.

Um eine Rolle zuzuweisen, die bereits in der Zulassungsrichtlinie enthalten ist, fügen Sie das Hauptkonto einer vorhandenen Rollenbindung hinzu:

gcloud

Bearbeiten Sie die zurückgegebene Zulassungsrichtlinie, indem Sie das Hauptkonto einer vorhandenen Rollenbindung hinzufügen. Beachten Sie, dass diese Änderung erst wirksam wird, wenn Sie die aktualisierte Zulassungsrichtlinie festgelegt haben.

Angenommen, die Zulassungsrichtlinie enthält die folgende Rollenbindung, die Kai die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) zuweist:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com"
  ]
}

Fügen Sie Raha der vorhandenen Rollenbindung hinzu, um Raha dieselbe Rolle zuzuweisen:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

REST

Bearbeiten Sie die zurückgegebene Zulassungsrichtlinie, indem Sie das Hauptkonto einer vorhandenen Rollenbindung hinzufügen. Beachten Sie, dass diese Änderung erst wirksam wird, wenn Sie die aktualisierte Zulassungsrichtlinie festgelegt haben.

Angenommen, die Zulassungsrichtlinie enthält die folgende Rollenbindung, die Kai die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) zuweist:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com"
  ]
}

Fügen Sie Raha der vorhandenen Rollenbindung hinzu, um Raha dieselbe Rolle zuzuweisen:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Fügen Sie eine neue Rollenbindung hinzu, um eine Rolle zuzuweisen, die in der Zulassungsrichtlinie noch nicht enthalten ist.

gcloud

Bearbeiten Sie die Zulassungsrichtlinie, indem Sie eine neue Rollenbindung hinzufügen, die dem Hauptkonto die Rolle zuweist. Diese Änderung wird erst wirksam, wenn Sie die aktualisierte Zulassungsrichtlinie festgelegt haben.

Beispiel: Fügen Sie dem Array bindings für die Zulassungsrichtlinie die folgende Rollenbindung hinzu, um Raha die Rolle „Ersteller von Dienstkonto-Tokens“ (roles/iam.serviceAccountTokenCreator) zuzuweisen:

{
  "role": "roles/iam.serviceAccountTokenCreator",
  "members": [
    "user:raha@example.com"
  ]
}

REST

Bearbeiten Sie die Zulassungsrichtlinie, indem Sie eine neue Rollenbindung hinzufügen, die dem Hauptkonto die Rolle zuweist. Diese Änderung wird erst wirksam, wenn Sie die aktualisierte Zulassungsrichtlinie festgelegt haben.

Beispiel: Fügen Sie dem Array bindings für die Zulassungsrichtlinie die folgende Rollenbindung hinzu, um Raha die Rolle „Ersteller von Dienstkonto-Tokens“ (roles/iam.serviceAccountTokenCreator) zuzuweisen:

{
  "role": "roles/iam.serviceAccountTokenCreator",
  "members": [
    "user:raha@example.com"
  ]
}

Rolle entziehen

Um eine Rolle zu entziehen, entfernen Sie das Hauptkonto aus der Rollenbindung. Wenn die Rollenbindung keine anderen Hauptkonten enthält, entfernen Sie die gesamte Rollenbindung aus der Zulassungsrichtlinie.

gcloud

Bearbeiten Sie die Zulassungsrichtlinie, indem Sie das Hauptkonto oder die gesamte Rollenbindung entfernen. Diese Änderung wird erst wirksam, wenn Sie die aktualisierte Zulassungsrichtlinie festgelegt haben.

Angenommen, die Zulassungsrichtlinie enthält die folgende Rollenbindung, die Kai und Raha die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) zuweist:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Entfernen Sie die Hauptkonto-ID von Kai aus der Rollenbindung, um Kai die Rolle zu entziehen:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    user:raha@example.com
  ]
}

Wenn Sie die Rolle sowohl für Kai als auch für Raha widerrufen möchten, entfernen Sie die Rollenbindung aus der Zulassungsrichtlinie.

REST

Bearbeiten Sie die Zulassungsrichtlinie, indem Sie das Hauptkonto oder die gesamte Rollenbindung entfernen. Diese Änderung wird erst wirksam, wenn Sie die aktualisierte Zulassungsrichtlinie festgelegt haben.

Angenommen, die Zulassungsrichtlinie enthält die folgende Rollenbindung, die Kai und Raha die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) zuweist:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Entfernen Sie die Hauptkonto-ID von Kai aus der Rollenbindung, um Kai die Rolle zu entziehen:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    user:raha@example.com
  ]
}

Wenn Sie die Rolle sowohl für Kai als auch für Raha widerrufen möchten, entfernen Sie die Rollenbindung aus der Zulassungsrichtlinie.

Zulassungsrichtlinie festlegen

Nachdem Sie die Zulassungsrichtlinie geändert haben, um Rollen zuzuweisen und zu widerrufen, rufen Sie setIamPolicy() auf, um Aktualisierungen vorzunehmen.

gcloud

Führen Sie zum Festlegen der Richtlinie für die Ressource den Befehl set-iam-policy für das Dienstkonto aus:

gcloud iam service-accounts set-iam-policy SA_ID PATH

Geben Sie folgende Werte an:

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

  • PATH: Der Pfad zu einer Datei, die die neue Zulassungsrichtlinie enthält.

Die Antwort enthält die aktualisierte Zulassungsrichtlinie:

Mit dem folgenden Befehl wird beispielsweise die in policy.json gespeicherte Zulassungsrichtlinie als Zulassungsrichtlinie für das Dienstkonto my-service-account@my-project.iam.gserviceaccount.com festgelegt:

gcloud iam service-accounts set-iam-policy my-service-account@my-project.iam.gserviceaccount.com \
    ~/policy.json

REST

Die Methode serviceAccounts.setIamPolicy legt eine aktualisierte Zulassungsrichtlinie für das Dienstkonto fest.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • 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 Zulassungsrichtlinie ersetzen Sie beispielsweise policy durch Folgendes:

    {
      "version": 1,
      "etag": "BwUqLaVeua8=",
      "bindings": [
        {
          "role": "roles/iam.serviceAccountUser",
          "members": [
            "group:my-group@example.com"
          ]
        },
        {
          "role": "roles/serviceAccountAdmin",
          "members": [
            "user:my-user@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 Zulassungsrichtlinie:

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur Java API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import com.google.cloud.iam.admin.v1.IAMClient;
import com.google.iam.admin.v1.ServiceAccountName;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class SetServiceAccountPolicy {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your project ID.
    String projectId = "your-project-id";
    // TODO: Replace with your service account name.
    String serviceAccount = "your-service-account";
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();

    setServiceAccountPolicy(policy, projectId, serviceAccount);
  }

  // Sets a service account's policy.
  public static Policy setServiceAccountPolicy(Policy policy, String projectId,
                                               String serviceAccount) throws IOException {

    // Construct the service account email.
    // You can modify the ".iam.gserviceaccount.com" to match the name of the service account
    // whose allow policy you want to set.
    String accountEmail = String.format("%s@%s.iam.gserviceaccount.com", serviceAccount, projectId);

    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (IAMClient iamClient = IAMClient.create()) {
      List<String> paths = Arrays.asList("bindings", "etag");
      SetIamPolicyRequest request = SetIamPolicyRequest.newBuilder()
              .setResource(ServiceAccountName.of(projectId, accountEmail).toString())
              .setPolicy(policy)
              // A FieldMask specifying which fields of the policy to modify. Only
              // the fields in the mask will be modified. If no mask is provided, the
              // following default mask is used:
              // `paths: "bindings, etag"`
              .setUpdateMask(FieldMask.newBuilder().addAllPaths(paths).build())
              .build();

      return iamClient.setIamPolicy(request);
    }
  }
}

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur Python API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from google.cloud import iam_admin_v1
from google.iam.v1 import iam_policy_pb2, policy_pb2


def set_service_account_iam_policy(
    project_id: str, account: str, policy: policy_pb2.Policy
) -> policy_pb2.Policy:
    """
    Set policy for service account. Pay attention that previous state will be completely rewritten.
    If you want to update only part of the policy follow the approach read->modify->write.
    For more details about policies check out https://cloud.google.com/iam/docs/policies

    project_id: ID or number of the Google Cloud project you want to use.
    account: ID or email which is unique identifier of the service account.
    policy: Policy which has to be set.
    """

    # Same approach as for policies on project level, but client stub is different.
    iam_client = iam_admin_v1.IAMClient()
    request = iam_policy_pb2.SetIamPolicyRequest()
    request.resource = f"projects/{project_id}/serviceAccounts/{account}"

    # request.etag field also will be merged which means you are secured from collision,
    # but it means that request may fail and you need to leverage exponential reties approach
    # to be sure policy has been updated.
    request.policy.MergeFrom(policy)

    policy = iam_client.set_iam_policy(request)
    return policy

Nächste Schritte

Jetzt testen

Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.

Jetzt kostenlos starten