Zuweisbare Rollen für Ressourcen aufrufen

Bevor Sie einem Nutzer eine IAM-Rolle (Identity and Access Management) für eine Ressource zuweisen, möchten Sie möglicherweise wissen, welche Rollen der jeweiligen Ressource zugewiesen werden können.

Hinweise

  • IAM API aktivieren.

    Aktivieren Sie die API

  • Richten Sie die Authentifizierung ein.

    Wählen Sie den Tab für die Verwendung der Beispiele auf dieser Seite aus:

    Console

    Wenn Sie über die Google Cloud Console auf Google Cloud-Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.

    gcloud

    Sie können die gcloud CLI-Beispiele auf dieser Seite über eine der folgenden Entwicklungsumgebungen verwenden:

    • Cloud Shell: Aktivieren Sie Cloud Shell, um ein Onlineterminal mit der bereits eingerichteten gcloud CLI zu verwenden.

      Unten auf dieser Seite wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Das Initialisieren der Sitzung kann einige Sekunden dauern.

    • Lokale Shell: Zur Verwendung der gcloud CLI in einer lokalen Entwicklungsumgebung müssen Sie die gcloud CLI installieren und initialisieren.

    C++

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

    1. Installieren Sie die Google Cloud CLI.
    2. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

      gcloud init
    3. Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:

      gcloud auth application-default login

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

    C#

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

    1. Installieren Sie die Google Cloud CLI.
    2. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

      gcloud init
    3. Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:

      gcloud auth application-default login

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

    Einfach loslegen (Go)

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

    1. Installieren Sie die Google Cloud CLI.
    2. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

      gcloud init
    3. Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:

      gcloud auth application-default login

    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 aus einer lokalen Entwicklungsumgebung heraus verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

    1. Installieren Sie die Google Cloud CLI.
    2. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

      gcloud init
    3. Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:

      gcloud auth application-default login

    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 aus einer lokalen Entwicklungsumgebung heraus verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

    1. Installieren Sie die Google Cloud CLI.
    2. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

      gcloud init
    3. Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:

      gcloud auth application-default login

    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.

      Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Security Reviewer (roles/iam.securityReviewer) für die Ressource zuzuweisen, für die Sie erteilbare Rollen auflisten möchten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält die getIamPolicy-Berechtigungen für alle Ressourcentypen. Zum Auflisten der erteilbaren Rollen benötigen Sie die Berechtigung getIamPolicy für die Ressource, für die Sie erteilbare Rollen auflisten möchten, z. B. die Berechtigung resourcemanager.projects.getIamPolicy zum Auflisten der erteilbaren Rollen für ein Projekt.

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

Informationen zu erteilbaren Rollen

Eine Rolle kann für oder oberhalb einer Ressource gewährt werden, wenn sie Berechtigungen für den entsprechenden Ressourcentyp enthält. Beispiel: Die Rolle storage.admin gewährt Berechtigungen für die APIs storage.buckets.get und storage.objects.get. Somit kann sie den Ressourcentypen Storage-Buckets und Speicherobjekte zugewiesen werden.

Rollen können auch "oberhalb" der Ressourcentypen gewährt werden, für die die Berechtigungen definiert wurden. Mit anderen Worten, Rollen für untergeordnete Ressourcen können für eine Ressource gewährt werden, die in der Google Cloud-Ressourcenhierarchie übergeordnet ist. Beispielsweise kann die Rolle storage.admin nicht nur Storage-Buckets , sondern zusätzlich auch auf Projekt- oder Organisationsebene zugewiesen werden.

Von einer Rolle gewährte Berechtigungen wirken sich nur auf der angegebenen Ebene oder darunter auf Ressourcen aus und nicht auf Ressourcen auf höherer Ebene oder auf Peer-Ressourcen. Wenn eine Rolle für eine Ressource gewährt wird, werden außerdem nur Berechtigungen gewährt, die für die angegebene Ressource gelten, und das unabhängig vom Namen, der Beschreibung oder anderen enthaltenen Berechtigungen der Rolle. So werden beispielsweise durch Zuweisen der Rolle resourcemanager.organizationAdmin (die die Berechtigung resourcemanager.projects.list enthält) an einen Nutzer auf Projektebene diesem nur Berechtigungen für das spezifische Projekt gewährt. Er kann nicht alle Projekte in der Organisation auflisten oder verwalten. Entsprechend werden durch das Zuweisen der Rolle compute.admin auf einer bestimmten Compute Engine-Instanz nur Berechtigungen für diese spezifische Instanz und keine anderen im Projekt gewährt.

Erteilbare Rollen auflisten

Sie können erteilbare Rollen über die Google Cloud Console, die Google Cloud CLI, die IAM API oder die IAM-Clientbibliotheken auflisten.

In der Google Cloud Console werden immer alle erteilbaren Rollen für die gerade angezeigte Ressource aufgelistet. In der Google Cloud CLI, der IAM API und den Clientbibliotheken werden ausschließlich erteilbare Rollen für aktivierte APIs aufgelistet.

Console

So rufen Sie erteilbare Rollen für ein Projekt, einen Ordner oder eine Organisation auf:

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

    Zur IAM-Seite

  2. Klicken Sie oben auf der Seite auf Projekt auswählen.

  3. Wählen Sie das Projekt, den Ordner oder die Organisation aus, für die Sie erteilbare Rollen aufrufen möchten.

  4. Klicken Sie auf Zugriff erlauben.

  5. Klicken Sie auf Rolle auswählen. In diesem Menü werden alle Rollen angezeigt, einschließlich benutzerdefinierter Rollen, die Sie für diese Ressource zuweisen können.

So gehen Sie vor, um erteilbare Rollen für andere Ressourcentypen anzuzeigen:

  1. Rufen Sie in der Google Cloud Console die Seite auf, auf der die Ressource aufgeführt ist, für die Sie die erteilbaren Rollen anzeigen möchten.

    Wenn Sie beispielsweise den Zugriff auf eine Compute Engine-Instanz verwalten möchten, rufen Sie die Seite VM-Instanzen auf.

    Zur Seite „VM-Instanzen“

  2. Klicken Sie auf das Kästchen neben der Ressource, für die Sie die erteilbaren Rollen anzeigen möchten.

  3. Das Infofeld muss sichtbar sein. Falls es nicht sichtbar ist, klicken Sie auf Infofeld ansehen.

  4. Klicken Sie auf Hauptkonto hinzufügen.

  5. Klicken Sie auf Rolle auswählen. In diesem Menü werden alle Rollen angezeigt, einschließlich benutzerdefinierter Rollen, die Sie für diese Ressource zuweisen können.

gcloud

Verwenden Sie den Befehl gcloud iam list-grantable-roles, um eine Liste aller Rollen zurückgeben zu lassen, die auf eine bestimmte Ressource angewendet werden können.

gcloud iam list-grantable-roles full-resource-name

Abhängig von der gewünschten Ressource können sehr viele Rollen zurückgegeben werden. Sie können einen Filterausdruck angeben, um die Zahl der Ergebnisse zu begrenzen.

Die Ausgabe sieht etwa so aus:

description: Full control of all Compute Engine resources.
name: roles/compute.admin
title: Compute Admin
---
description: Full control of Compute Engine instance resources.
name: roles/compute.instanceAdmin
title: Compute Instance Admin

# Additional results here...

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.

namespace iam = ::google::cloud::iam_admin_v1;
[](std::string const& resource) {
  iam::IAMClient client(iam::MakeIAMConnection());
  int count = 0;
  for (auto& role : client.QueryGrantableRoles(resource)) {
    if (!role) throw std::move(role).status();
    std::cout << "Role successfully retrieved: " << role->name() << "\n";
    ++count;
  }
  if (count == 0) {
    std::cout << "No grantable roles found in resource: " << resource << "\n";
  }
}

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.


using System;
using System.Collections.Generic;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Iam.v1;
using Google.Apis.Iam.v1.Data;

public partial class CustomRoles
{
    public static IList<Role> ViewGrantableRoles(string fullResourceName)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var request = new QueryGrantableRolesRequest
        {
            FullResourceName = fullResourceName
        };
        var response = service.Roles.QueryGrantableRoles(request).Execute();
        foreach (var role in response.Roles)
        {
            Console.WriteLine("Title: " + role.Title);
            Console.WriteLine("Name: " + role.Name);
            Console.WriteLine("Description: " + role.Description);
            Console.WriteLine();
        }
        return response.Roles;
    }
}

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.

import (
	"context"
	"fmt"
	"io"

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

// viewGrantableRoles lists roles grantable on a resource.
func viewGrantableRoles(w io.Writer, fullResourceName string) ([]*iam.Role, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %w", err)
	}

	request := &iam.QueryGrantableRolesRequest{
		FullResourceName: fullResourceName,
	}
	response, err := service.Roles.QueryGrantableRoles(request).Do()
	if err != nil {
		return nil, fmt.Errorf("Roles.QueryGrantableRoles: %w", err)
	}
	for _, role := range response.Roles {
		fmt.Fprintf(w, "Found grantable role: %v\n", role.Name)
	}
	return response.Roles, err
}

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.

QueryGrantableRolesRequest request = new QueryGrantableRolesRequest();
request.setFullResourceName(fullResourceName);

QueryGrantableRolesResponse response = service.roles().queryGrantableRoles(request).execute();

for (Role role : response.getRoles()) {
  System.out.println("Title: " + role.getTitle());
  System.out.println("Name: " + role.getName());
  System.out.println("Description: " + role.getDescription());
  System.out.println();
}

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.

def view_grantable_roles(full_resource_name: str) -> None:
    roles = (
        service.roles()
        .queryGrantableRoles(body={"fullResourceName": full_resource_name})
        .execute()
    )

    for role in roles["roles"]:
        if "title" in role:
            print("Title: " + role["title"])
        print("Name: " + role["name"])
        if "description" in role:
            print("Description: " + role["description"])
        print(" ")

REST

Die Methode roles.queryGrantableRoles gibt eine Liste aller Rollen zurück, die für eine Ressource gewährt werden können.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

HTTP-Methode und URL:

POST https://iam.googleapis.com/v1/roles:queryGrantableRoles

JSON-Text anfordern:

{
  "fullResourceName": "FULL_RESOURCE_NAME"
}

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

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "roles": [
    {
      "name": "roles/compute.admin",
      "title": "Compute Admin",
      "description": "Full control of all Compute Engine resources."
    },
    {
      "name": "roles/compute.instanceAdmin",
      "title": "Compute Instance Admin (beta)",
      "description": "Full control of Compute Engine instance resources."
    }
  ]
}

In den Beispielen oben ist der vollständige Ressourcenname ein schemaloser URI bestehend aus einem DNS-kompatiblen API-Dienstnamen und einem Ressourcenpfad.

Sie verwenden etwa Folgendes, um alle erteilbaren Rollen für ein Projekt zurückzugeben:

//cloudresourcemanager.googleapis.com/projects/project-id

Ressourcen auf einer niedrigeren Ebene haben einen detaillierteren vollständig qualifizierten Namen. Sie verwenden etwa Folgendes, um alle erteilbaren Rollen für eine Compute Engine-Instanz zurückzugeben:

//compute.googleapis.com/projects/project-id/zones/zone-name/instances/instance-id

Nächste Schritte