Zugriff auf Projekte, Ordner und Organisationen verwalten

Auf dieser Seite wird beschrieben, wie Sie den Zugriff auf Projekte, Ordner und Organisationen erteilen, ändern und widerrufen. Informationen zum Verwalten des Zugriffs auf andere Ressourcen finden Sie in den folgenden Anleitungen:

In der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) wird der Zugriff über „allow”-Richtlinien (auch als IAM-Richtlinien bezeichnet) gewährt. 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.

Sie können den Zugriff auf Projekte, Ordner und Organisationen mit der Google Cloud Console, der Google Cloud CLI, der REST API oder den Resource Manager-Clientbibliotheken verwalten.

Hinweise

  • Enable the Resource Manager API.

    Enable the API

  • Richten Sie die Authentifizierung ein.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    C#

    Wenn Sie die .NET Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten in der Dokumentation zur Google Cloud-Authentifizierung.

    Java

    Wenn Sie die Java Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten in der Dokumentation zur Google Cloud-Authentifizierung.

    Python

    Wenn Sie die Python Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten in der Dokumentation zur Google Cloud-Authentifizierung.

    REST

    Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

    Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.

Erforderliche Rollen

Wenn Sie ein Projekt, einen Ordner oder eine Organisation erstellen, wird Ihnen automatisch eine Rolle zugewiesen, mit der Sie den Zugriff für diese Ressource verwalten können. Weitere Informationen finden Sie unter Standardrichtlinien.

Wenn Sie Ihr Projekt, Ihren Ordner oder Ihre Organisation nicht erstellt haben, prüfen Sie, ob Sie die Rollen haben, die Sie zum Verwalten des Zugriffs auf diese Ressource benötigen.

Um die Berechtigungen zu erhalten, die Sie für die Verwaltung des Zugriffs auf ein Projekt, einen Ordner oder eine Organisation benötigen, bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für die Ressource (Projekt, Ordner oder Organisation) zu gewähren, für die Sie den Zugriff verwalten möchten:

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Verwalten des Zugriffs auf ein Projekt, einen Ordner oder eine Organisation 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 Projekt, einen Ordner oder eine Organisation zu verwalten:

  • Zum Verwalten des Zugriffs auf Projekte:
    • resourcemanager.projects.getIamPolicy
    • resourcemanager.projects.setIamPolicy
  • Zum Verwalten des Zugriffs auf Ordner:
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
  • Zum Verwalten des Zugriffs auf Organisationen:
    • resourcemanager.organizations.getIamPolicy
    • resourcemanager.organizations.setIamPolicy

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

Aktuellen Zugriff ansehen

Mit der Google Cloud Console, der gcloud CLI, der REST API oder den Resource Manager-Clientbibliotheken können Sie sehen, wer Zugriff auf Ihr Projekt, Ihren Ordner oder Ihre Organisation hat.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite IAM.

    IAM aufrufen

  2. Wählen Sie ein Projekt, einen Ordner oder eine Organisation aus.

    In der Google Cloud Console werden alle Hauptkonten aufgelistet, denen Rollen für Ihr Projekt, Ihren Ordner oder Ihre Organisation zugewiesen wurden. Diese Liste enthält Hauptkonten, die von übergeordneten Ressourcen Rollen für die Ressource übernommen haben. Weitere Informationen zur Richtlinienübernahme finden Sie unter Richtlinienübernahme und die Ressourcenhierarchie.

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

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Rufen Sie die „allow”-Richtlinie für die Ressource ab, um zu sehen, wer Zugriff auf Ihr Projekt, Ihren Ordner oder Ihre Organisation hat. Informationen zum Interpretieren von „allow”-Richtlinien finden Sie unter Informationen zu „allow”-Richtlinien.

    Um die „allow”-Richtlinie für die Ressource abzurufen, führen Sie den Befehl get-iam-policy für die Ressource aus:

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Geben Sie folgende Werte an:

    • RESOURCE_TYPE: Der Ressourcentyp, für den Sie sich den Zugriff ansehen möchten. Verwenden Sie einen der folgenden Werte: projects, resource-manager folders oder organizations.

    • RESOURCE_ID: Ihr Google Cloud-Projekt, Ihr Ordner oder Ihre Organisations-ID. Projekt-IDs sind alphanumerisch, z. B. my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.

    • FORMAT: Das gewünschte Format für die 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 Projekt my-project abgerufen und im JSON-Format in Ihrem Basisverzeichnis gespeichert:

    gcloud projects get-iam-policy my-project --format=json > ~/policy.json

C#

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

Rufen Sie die „allow”-Richtlinie für die Ressource ab, um zu sehen, wer Zugriff auf Ihr Projekt, Ihren Ordner oder Ihre Organisation hat. Informationen zum Interpretieren von „allow”-Richtlinien finden Sie unter Informationen zu „allow”-Richtlinien.

Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt abgerufen wird. Informationen zum Abrufen der „allow”-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.


using Google.Apis.Auth.OAuth2;
using Google.Apis.CloudResourceManager.v1;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy GetPolicy(string projectId)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
        var service = new CloudResourceManagerService(
            new CloudResourceManagerService.Initializer
            {
                HttpClientInitializer = credential
            });

        var policy = service.Projects.GetIamPolicy(new GetIamPolicyRequest(),
            projectId).Execute();
        return policy;
    }
}

Java

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

Rufen Sie die „allow”-Richtlinie für die Ressource ab, um zu sehen, wer Zugriff auf Ihr Projekt, Ihren Ordner oder Ihre Organisation hat. Informationen zum Interpretieren von „allow”-Richtlinien finden Sie unter Informationen zu „allow”-Richtlinien.

Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt abgerufen wird. Informationen zum Abrufen der „allow”-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

import com.google.cloud.resourcemanager.v3.ProjectsClient;
import com.google.iam.admin.v1.ProjectName;
import com.google.iam.v1.GetIamPolicyRequest;
import com.google.iam.v1.Policy;
import java.io.IOException;

public class GetProjectPolicy {
  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";

    getProjectPolicy(projectId);
  }

  // Gets a project's policy.
  public static Policy getProjectPolicy(String projectId) throws IOException {
    // 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 (ProjectsClient projectsClient = ProjectsClient.create()) {
      GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
              .setResource(ProjectName.of(projectId).toString())
              .build();
      return projectsClient.getIamPolicy(request);
    }
  }
}

Python

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

Rufen Sie die „allow”-Richtlinie für die Ressource ab, um zu sehen, wer Zugriff auf Ihr Projekt, Ihren Ordner oder Ihre Organisation hat. Informationen zum Interpretieren von „allow”-Richtlinien finden Sie unter Informationen zu „allow”-Richtlinien.

Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt abgerufen wird. Informationen zum Abrufen der „allow”-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

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


def get_project_policy(project_id: str) -> policy_pb2.Policy:
    """
    Get policy for project.

    project_id: ID or number of the Google Cloud project you want to use.
    """

    client = resourcemanager_v3.ProjectsClient()
    request = iam_policy_pb2.GetIamPolicyRequest()
    request.resource = f"projects/{project_id}"

    policy = client.get_iam_policy(request)
    print(f"Policy retrieved: {policy}")

    return policy

REST

Rufen Sie die „allow”-Richtlinie für die Ressource ab, um zu sehen, wer Zugriff auf Ihr Projekt, Ihren Ordner oder Ihre Organisation hat. Informationen zum Interpretieren von „allow”-Richtlinien finden Sie unter Informationen zu „allow”-Richtlinien.

Die Methode getIamPolicy der Resource Manager API ruft die „allow”-Richtlinie eines Projekts, des Ordners oder der Organisation ab.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

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

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

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/owner",
      "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 der Ressource 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. Öffnen Sie in der Google Cloud Console die Seite IAM.

    IAM aufrufen

  2. Wählen Sie ein Projekt, einen Ordner oder eine Organisation aus.

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

    • Wenn Sie einem Hauptkonto eine Rolle zuweisen möchten, das bereits andere Rollen für die Ressource hat, suchen Sie die Zeile mit dem Hauptkonto und klicken Sie in dieser Zeile auf Hauptkonto bearbeiten. und 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 Person eine Rolle zuweisen möchten, die noch keine Rollen für die Ressource hat, klicken Sie auf Zugriff gewähren und geben Sie dann eine Kennung für die Person ein, z. B. my-user@example.com.

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

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

  6. Klicken Sie auf Speichern. Dem Hauptkonto wird die Rolle für die Ressource zugewiesen.

So weisen Sie einem Hauptkonto eine Rolle für mehr als ein Projekt, einen Ordner oder eine Organisation zu:

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie alle Ressourcen aus, für die Sie Berechtigungen erteilen möchten.

  3. Wenn das Infofeld nicht sichtbar ist, klicken Sie auf Infofeld ansehen. Klicken Sie dann auf Berechtigungen.

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

    • Wenn Sie einem Hauptkonto eine Rolle zuweisen möchten, das bereits andere Rollen hat, suchen Sie die Zeile mit dem Hauptkonto und klicken Sie in dieser Zeile auf Hauptkonto bearbeiten. und auf Weitere Rolle hinzufügen.

    • Wenn Sie einem Hauptkonto eine Rolle zuweisen möchten, das noch keine anderen Rollen hat, klicken Sie auf Hauptkonto hinzufügen und geben Sie dann eine Kennzeichnung für das Hauptkonto ein, z. B. my-user@example.com.

  5. Wählen Sie eine zu gewährende Rolle aus der Drop-down-Liste aus.

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

  7. Klicken Sie auf Speichern. Dem Hauptkonto wird die ausgewählte Rolle für alle ausgewählten Ressourcen zugewiesen.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Mit dem Befehl add-iam-policy-binding können Sie einem Hauptkonto schnell eine Rolle zuweisen.

    Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

    • RESOURCE_TYPE: Der Ressourcentyp, für den Sie den Zugriff verwalten möchten. Verwenden Sie projects, resource-manager folders oder organizations.

    • RESOURCE_ID: Ihr Google Cloud-Projekt, Ihr Ordner oder Ihre Organisations-ID. Projekt-IDs sind alphanumerisch, z. B. my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.

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

      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.

    • CONDITION: Die Bedingung, die der Rollenbindung hinzugefügt werden soll. Wenn Sie keine Bedingung hinzufügen möchten, verwenden Sie den Wert None. Weitere Informationen zu Bedingungen finden Sie in der Übersicht der Bedingungen.

    Führen Sie folgenden Befehl aus:

    Linux, macOS oder Cloud Shell

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID \
        --member=PRINCIPAL --role=ROLE_NAME \
        --condition=CONDITION

    Windows (PowerShell)

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID `
        --member=PRINCIPAL --role=ROLE_NAME `
        --condition=CONDITION

    Windows (cmd.exe)

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID ^
        --member=PRINCIPAL --role=ROLE_NAME ^
        --condition=CONDITION

    Die Antwort enthält die aktualisierte IAM-Richtlinie:

Einzelne Rolle widerrufen

So widerrufen Sie eine einzelne Rolle eines Hauptkontos:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite IAM.

    IAM aufrufen

  2. Wählen Sie ein Projekt, einen Ordner oder eine Organisation aus.

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

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

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

    gcloud RESOURCE_TYPE remove-iam-policy-binding RESOURCE_ID 
    --member=PRINCIPAL --role=ROLE_NAME

    Geben Sie folgende Werte an:

    • RESOURCE_TYPE: Der Ressourcentyp, für den Sie den Zugriff verwalten möchten. Verwenden Sie projects, resource-manager folders oder organizations.

    • RESOURCE_ID: Ihr Google Cloud-Projekt, Ihr Ordner oder Ihre Organisations-ID. Projekt-IDs sind alphanumerisch, z. B. my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.

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

      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 „Projektersteller“ des Dienstkontos example-service-account@example-project.iam.gserviceaccount.com für das Projekt example-project:

    gcloud projects remove-iam-policy-binding example-project 
    --member=serviceAccount:example-service-account@example-project.iam.gserviceaccount.com
    --role=roles/resourcemanager.projectCreator

Damit Sie keine erforderlichen Rollen widerrufen, können Sie Empfehlungen zu Änderungsrisiken aktivieren. Empfehlungen zu Änderungsrisiken geben Warnungen aus, wenn Sie versuchen, Rollen auf Projektebene zu widerrufen, die Google Cloud als wichtig identifiziert hat.

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. Öffnen Sie in der Google Cloud Console die Seite IAM.

    IAM aufrufen

  2. Wählen Sie ein Projekt, einen Ordner oder eine Organisation aus.

  3. 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 die Ressource hat, suchen Sie die Zeile mit dem Hauptkonto und klicken Sie in dieser Zeile auf Hauptkonto bearbeiten. Gehen 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 einem Hauptkonto Rollen zuweisen möchten, das noch keine Rollen für die Ressource hat, klicken Sie auf Zugriff gewähren und geben Sie dann eine Kennzeichnung für das Hauptkonto ein, z. B. my-user@example.com.

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

  5. 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 der Ressource 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 „allow”-Richtlinie durch Aufrufen von setIamPolicy().

Sie können die „allow”-Richtlinie mit der gcloud CLI, der REST API oder den Resource Manager-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

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Um die „allow”-Richtlinie für die Ressource abzurufen, führen Sie den Befehl get-iam-policy für die Ressource aus:

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Geben Sie folgende Werte an:

    • RESOURCE_TYPE: Der Ressourcentyp, für den Sie die „allow”-Richtlinie abrufen möchten. Verwenden Sie einen der folgenden Werte: projects, resource-manager folders oder organizations.

    • RESOURCE_ID: Ihr Google Cloud-Projekt, Ihr Ordner oder Ihre Organisations-ID. Projekt-IDs sind alphanumerisch, z. B. my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.

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

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

    Mit dem folgenden Befehl wird beispielsweise die „allow”-Richtlinie für das Projekt my-project abgerufen und im JSON-Format in Ihrem Basisverzeichnis gespeichert:

    gcloud projects get-iam-policy my-project --format json > ~/policy.json

C#

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt abgerufen wird. Informationen zum Abrufen der „allow“-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.


using Google.Apis.Auth.OAuth2;
using Google.Apis.CloudResourceManager.v1;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy GetPolicy(string projectId)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
        var service = new CloudResourceManagerService(
            new CloudResourceManagerService.Initializer
            {
                HttpClientInitializer = credential
            });

        var policy = service.Projects.GetIamPolicy(new GetIamPolicyRequest(),
            projectId).Execute();
        return policy;
    }
}

Java

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt abgerufen wird. Informationen zum Abrufen der „allow“-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

import com.google.cloud.resourcemanager.v3.ProjectsClient;
import com.google.iam.admin.v1.ProjectName;
import com.google.iam.v1.GetIamPolicyRequest;
import com.google.iam.v1.Policy;
import java.io.IOException;

public class GetProjectPolicy {
  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";

    getProjectPolicy(projectId);
  }

  // Gets a project's policy.
  public static Policy getProjectPolicy(String projectId) throws IOException {
    // 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 (ProjectsClient projectsClient = ProjectsClient.create()) {
      GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
              .setResource(ProjectName.of(projectId).toString())
              .build();
      return projectsClient.getIamPolicy(request);
    }
  }
}

Python

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt abgerufen wird. Informationen zum Abrufen der „allow“-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

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


def get_project_policy(project_id: str) -> policy_pb2.Policy:
    """
    Get policy for project.

    project_id: ID or number of the Google Cloud project you want to use.
    """

    client = resourcemanager_v3.ProjectsClient()
    request = iam_policy_pb2.GetIamPolicyRequest()
    request.resource = f"projects/{project_id}"

    policy = client.get_iam_policy(request)
    print(f"Policy retrieved: {policy}")

    return policy

REST

Die Methode getIamPolicy der Resource Manager API ruft die „allow”-Richtlinie eines Projekts, des Ordners oder der Organisation ab.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

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

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

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

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

Ändern Sie die Zulassungsrichtlinie

Passen Sie die lokale Kopie der „allow”-Richtlinie Ihrer Ressource programmgesteuert oder mithilfe eines Texteditors so an, dass sie die Rollen widerspiegelt, die Sie gewähren oder widerrufen möchten.

Bearbeiten Sie das Feld etag der Zulassungsrichtlinie nicht und entfernen Sie es nicht, um zu verhindern, dass Sie andere Ä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 für die Ressource aufrufen. 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 „allow”-Richtlinie, indem Sie das Hauptkonto einer vorhandenen Rollenbindung hinzufügen. Diese Änderung wird erst wirksam, wenn Sie die aktualisierte Zulassungsrichtlinie festgelegt haben.

Angenommen, die zurückgegebene „allow“-Richtlinie enthält die folgende Rollenbindung, die Kai die Rolle „Sicherheitsprüfer“ (roles/iam.securityReviewer) zuweist:

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

Wenn Sie Raha dieselbe Rolle zuweisen möchten, fügen Sie der vorhandenen Rollenbindung die Hauptkonto-ID von Raha hinzu:

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

C#

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.


using System.Linq;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy AddMember(Policy policy, string role, string member)
    {
        var binding = policy.Bindings.First(x => x.Role == role);
        binding.Members.Add(member);
        return policy;
    }
}

Go

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

import (
	"fmt"
	"io"

	"google.golang.org/api/iam/v1"
)

// addMember adds a member to a role binding.
func addMember(w io.Writer, policy *iam.Policy, role, member string) {
	for _, binding := range policy.Bindings {
		if binding.Role != role {
			continue
		}
		for _, m := range binding.Members {
			if m != member {
				continue
			}
			fmt.Fprintf(w, "Role %q found. Member already exists.\n", role)
			return
		}
		binding.Members = append(binding.Members, member)
		fmt.Fprintf(w, "Role %q found. Member added.\n", role)
		return
	}
	fmt.Fprintf(w, "Role %q not found. Member not added.\n", role)
}

Java

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.util.ArrayList;
import java.util.List;

public class AddMember {
  public static void main(String[] args) {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/existing-role";
    // TODO: Replace with your member.
    String member = "user:member-to-add@example.com";

    addMember(policy, role, member);
  }

  // Adds a member to a pre-existing role.
  public static Policy addMember(Policy policy, String role, String member) {
    List<Binding> newBindingsList = new ArrayList<>();

    for (Binding b : policy.getBindingsList()) {
      if (b.getRole().equals(role)) {
        newBindingsList.add(b.toBuilder().addMembers(member).build());
      } else {
        newBindingsList.add(b);
      }
    }

    // Update the policy to add the member.
    Policy updatedPolicy = policy.toBuilder()
            .clearBindings()
            .addAllBindings(newBindingsList)
            .build();

    System.out.println("Added member: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

Python

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

from google.iam.v1 import policy_pb2
from snippets.get_policy import get_project_policy
from snippets.set_policy import set_project_policy


def modify_policy_add_member(
    project_id: str, role: str, member: str
) -> policy_pb2.Policy:
    """
    Add a member to certain role in project policy.

    project_id: ID or number of the Google Cloud project you want to use.
    role: role to which member need to be added.
    member: The principals requesting access.

    Possible format for member:
        * user:{emailid}
        * serviceAccount:{emailid}
        * group:{emailid}
        * deleted:user:{emailid}?uid={uniqueid}
        * deleted:serviceAccount:{emailid}?uid={uniqueid}
        * deleted:group:{emailid}?uid={uniqueid}
        * domain:{domain}
    """
    policy = get_project_policy(project_id)

    for bind in policy.bindings:
        if bind.role == role:
            bind.members.append(member)
            break

    return set_project_policy(project_id, policy)

REST

Bearbeiten Sie die zurückgegebene „allow”-Richtlinie, indem Sie das Hauptkonto einer vorhandenen Rollenbindung hinzufügen. Diese Änderung wird erst wirksam, wenn Sie die aktualisierte Zulassungsrichtlinie festgelegt haben.

Angenommen, die zurückgegebene „allow“-Richtlinie enthält die folgende Rollenbindung, die Kai die Rolle „Sicherheitsprüfer“ (roles/iam.securityReviewer) zuweist:

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

Wenn Sie Raha dieselbe Rolle zuweisen möchten, fügen Sie der vorhandenen Rollenbindung die Hauptkonto-ID von Raha hinzu:

{
  "role": "roles/iam.securityReviewer",
  "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 „Compute Storage-Administrator“ (roles/compute.storageAdmin) zuzuweisen:

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

C#

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

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.


using System.Collections.Generic;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy AddBinding(Policy policy, string role, string member)
    {
        var binding = new Binding
        {
            Role = role,
            Members = new List<string> { member }
        };
        policy.Bindings.Add(binding);
        return policy;
    }
}

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

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.


import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.util.Collections;
import java.util.List;

public class AddBinding {
  public static void main(String[] args) {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy: GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/role-to-add";
    // TODO: Replace with your members.
    List<String> members = Collections.singletonList("user:member-to-add@example.com");

    addBinding(policy, role, members);
  }

  // Adds a member to a role.
  public static Policy addBinding(Policy policy, String role, List<String> members) {
    Binding binding = Binding.newBuilder()
            .setRole(role)
            .addAllMembers(members)
            .build();

    // Update bindings for the policy.
    Policy updatedPolicy = policy.toBuilder().addBindings(binding).build();

    System.out.println("Added binding: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

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

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

def modify_policy_add_role(policy: dict, role: str, member: str) -> dict:
    """Adds a new role binding to a policy."""

    binding = {"role": role, "members": [member]}
    policy["bindings"].append(binding)
    print(policy)
    return policy

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 „Compute Storage-Administrator“ (roles/compute.storageAdmin) zuzuweisen:

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

Sie können nur Rollen zuweisen, die sich auf aktivierte API-Dienste beziehen. Wenn zum Beispiel Compute Engine nicht aktiv ist, können Sie keine Rollen zuweisen, die sich ausschließlich auf Compute Engine beziehen. Weitere Informationen finden Sie unter APIs aktivieren und deaktivieren.

Für die Gewährung von Berechtigungen für Projekte gelten einige spezielle Beschränkungen, insbesondere wenn es um die Rolle "Inhaber" (roles/owner) geht. Weitere Informationen finden Sie in der Referenzdokumentation zu projects.setIamPolicy().

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.

gcloud

Zum Widerrufen einer Rolle bearbeiten Sie die vom Befehl get-iam-policy zurückgegebene JSON- oder YAML-Zulassungsrichtlinie entsprechend. Diese Änderung wird erst wirksam, wenn Sie die aktualisierte Zulassungsrichtlinie festgelegt haben.

Wenn Sie eine Rolle für ein Hauptkonto widerrufen möchten, löschen Sie das Hauptkonto oder die Bindung aus dem bindings-Array für die Zulassungsrichtlinie.

C#

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

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.


using System.Linq;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy RemoveMember(Policy policy, string role, string member)
    {
        try
        {
            var binding = policy.Bindings.First(x => x.Role == role);
            if (binding.Members.Count != 0 && binding.Members.Contains(member))
            {
                binding.Members.Remove(member);
            }
            if (binding.Members.Count == 0)
            {
                policy.Bindings.Remove(binding);
            }
            return policy;
        }
        catch (System.InvalidOperationException e)
        {
            System.Diagnostics.Debug.WriteLine("Role does not exist in policy: \n" + e.ToString());
            return policy;
        }
    }
}

Go

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

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

import (
	"fmt"
	"io"

	"google.golang.org/api/iam/v1"
)

// removeMember removes a member from a role binding.
func removeMember(w io.Writer, policy *iam.Policy, role, member string) {
	bindings := policy.Bindings
	bindingIndex, memberIndex := -1, -1
	for bIdx := range bindings {
		if bindings[bIdx].Role != role {
			continue
		}
		bindingIndex = bIdx
		for mIdx := range bindings[bindingIndex].Members {
			if bindings[bindingIndex].Members[mIdx] != member {
				continue
			}
			memberIndex = mIdx
			break
		}
	}
	if bindingIndex == -1 {
		fmt.Fprintf(w, "Role %q not found. Member not removed.\n", role)
		return
	}
	if memberIndex == -1 {
		fmt.Fprintf(w, "Role %q found. Member not found.\n", role)
		return
	}

	members := removeIdx(bindings[bindingIndex].Members, memberIndex)
	bindings[bindingIndex].Members = members
	if len(members) == 0 {
		bindings = removeIdx(bindings, bindingIndex)
		policy.Bindings = bindings
	}
	fmt.Fprintf(w, "Role %q found. Member removed.\n", role)
}

// removeIdx removes arr[idx] from arr.
func removeIdx[T any](arr []T, idx int) []T {
	return append(arr[:idx], arr[idx+1:]...)
}

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

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class RemoveMember {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/existing-role";
    // TODO: Replace with your member.
    String member = "user:member-to-add@example.com";

    removeMember(policy, role, member);
  }

  // Removes member from a role; removes binding if binding contains no members.
  public static Policy removeMember(Policy policy, String role, String member) {
    // Creating new builder with all values copied from origin policy
    Policy.Builder policyBuilder = policy.toBuilder();

    // Getting binding with suitable role.
    Binding binding = null;
    for (Binding b : policy.getBindingsList()) {
      if (b.getRole().equals(role)) {
        binding = b;
        break;
      }
    }

    if (binding != null && binding.getMembersList().contains(member)) {
      List<String> newMemberList = new ArrayList<>(binding.getMembersList());
      // Removing member from a role
      newMemberList.remove(member);

      System.out.println("Member " + member + " removed from " + role);

      // Adding all remaining members to create new binding
      Binding newBinding = binding.toBuilder()
              .clearMembers()
              .addAllMembers(newMemberList)
              .build();

      List<Binding> newBindingList = new ArrayList<>(policyBuilder.getBindingsList());

      // Removing old binding to replace with new one
      newBindingList.remove(binding);

      // If binding has no more members, binding will not be added
      if (!newBinding.getMembersList().isEmpty()) {
        newBindingList.add(newBinding);
      }

      // Update the policy to remove the member.
      policyBuilder.clearBindings()
              .addAllBindings(newBindingList);
    }

    Policy updatedPolicy = policyBuilder.build();

    System.out.println("Exising members: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

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

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

from google.iam.v1 import policy_pb2
from snippets.get_policy import get_project_policy
from snippets.set_policy import set_project_policy


def modify_policy_remove_member(
    project_id: str, role: str, member: str
) -> policy_pb2.Policy:
    """
    Remove a member from certain role in project policy.

    project_id: ID or number of the Google Cloud project you want to use.
    role: role to which member need to be added.
    member: The principals requesting access.

    Possible format for member:
        * user:{emailid}
        * serviceAccount:{emailid}
        * group:{emailid}
        * deleted:user:{emailid}?uid={uniqueid}
        * deleted:serviceAccount:{emailid}?uid={uniqueid}
        * deleted:group:{emailid}?uid={uniqueid}
        * domain:{domain}
    """
    policy = get_project_policy(project_id)

    for bind in policy.bindings:
        if bind.role == role:
            if member in bind.members:
                bind.members.remove(member)
            break

    return set_project_policy(project_id, policy, False)

REST

Zum Widerrufen einer Rolle bearbeiten Sie die vom Befehl get-iam-policy zurückgegebene JSON- oder YAML-Zulassungsrichtlinie entsprechend. Diese Änderung wird erst wirksam, wenn Sie die aktualisierte Zulassungsrichtlinie festgelegt haben.

Wenn Sie eine Rolle für ein Hauptkonto widerrufen möchten, löschen Sie das Hauptkonto oder die Bindung aus dem bindings-Array für die Zulassungsrichtlinie.

Zulassungsrichtlinie festlegen

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

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Führen Sie zum Festlegen der „allow”-Richtlinie für die Ressource den Befehl set-iam-policy für die Ressource aus:

    gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH

    Geben Sie folgende Werte an:

    • RESOURCE_TYPE: Der Ressourcentyp, für den Sie die „allow”-Richtlinie festlegen möchten. Verwenden Sie einen der folgenden Werte: projects, resource-manager folders oder organizations.

    • RESOURCE_ID: Ihr Google Cloud-Projekt, Ihr Ordner oder Ihre Organisations-ID. Projekt-IDs sind alphanumerisch, z. B. my-project. Ordner- und Organisations-IDs sind numerisch, z. B. 123456789012.

    • 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 „allow”-Richtlinie als Richtlinie für das Projekt my-project festgelegt:

    gcloud projects set-iam-policy my-project ~/policy.json

C#


using Google.Apis.Auth.OAuth2;
using Google.Apis.CloudResourceManager.v1;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy SetPolicy(string projectId, Policy policy)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
        var service = new CloudResourceManagerService(
            new CloudResourceManagerService.Initializer
            {
                HttpClientInitializer = credential
            });

        return service.Projects.SetIamPolicy(new SetIamPolicyRequest
        {
            Policy = policy
        }, projectId).Execute();
    }
}

Java

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt festgelegt wird. Informationen zum Einrichten der „allow”-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

import com.google.cloud.resourcemanager.v3.ProjectsClient;
import com.google.iam.admin.v1.ProjectName;
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 SetProjectPolicy {
  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 policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();

    setProjectPolicy(policy, projectId);
  }

  // Sets a project's policy.
  public static Policy setProjectPolicy(Policy policy, String projectId)
          throws IOException {

    // 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 (ProjectsClient projectsClient = ProjectsClient.create()) {
      List<String> paths = Arrays.asList("bindings", "etag");
      SetIamPolicyRequest request = SetIamPolicyRequest.newBuilder()
              .setResource(ProjectName.of(projectId).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 projectsClient.setIamPolicy(request);
    }
  }
}

Python

Richten Sie zur Authentifizierung bei Resource Manager Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

Informationen zum Installieren und Verwenden der Clientbibliothek für Resource Manager finden Sie unter Resource Manager-Clientbibliotheken.

Im folgenden Beispiel wird gezeigt, wie die Zulassungsrichtlinie für ein Projekt festgelegt wird. Informationen zum Einrichten der „allow”-Richtlinie für einen Ordner oder eine Organisation finden Sie in der Dokumentation zur Resource Manager-Clientbibliothek für Ihre Programmiersprache.

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


def set_project_policy(
    project_id: str, policy: policy_pb2.Policy, merge: bool = True
) -> policy_pb2.Policy:
    """
    Set policy for project. 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.
    policy: Policy which has to be set.
    merge: The strategy to be used forming the request. CopyFrom is clearing both mutable and immutable fields,
    when MergeFrom is replacing only immutable fields and extending mutable.
    https://googleapis.dev/python/protobuf/latest/google/protobuf/message.html#google.protobuf.message.Message.CopyFrom
    """
    client = resourcemanager_v3.ProjectsClient()

    request = iam_policy_pb2.GetIamPolicyRequest()
    request.resource = f"projects/{project_id}"
    current_policy = client.get_iam_policy(request)

    # Etag should as fresh as possible to lower chance of collisions
    policy.ClearField("etag")
    if merge:
        current_policy.MergeFrom(policy)
    else:
        current_policy.CopyFrom(policy)

    request = iam_policy_pb2.SetIamPolicyRequest()
    request.resource = f"projects/{project_id}"

    # 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 retries approach
    # to be sure policy has been updated.
    request.policy.CopyFrom(current_policy)

    policy = client.set_iam_policy(request)
    return policy

REST

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

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

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

HTTP-Methode und URL:

POST https://cloudresourcemanager.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 Zulassungsrichtlinie:

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