Benutzerdefinierte Rollen erstellen und verwalten

Auf dieser Seite wird beschrieben, wie Sie eine benutzerdefinierte IAM-Rolle (Identity and Access Management) erstellen und verwalten.

Hinweis

Verfügbare Berechtigungen für Projekte, Ordner und Organisationen aufrufen

Sie können benutzerdefinierte Rollen für eine gesamte Organisation oder für ein bestimmtes Projekt in dieser Organisation erstellen.

Sie können viele, aber nicht alle IAM-Berechtigungen in benutzerdefinierte Rollen einfügen. Jede Berechtigung hat eine der folgenden Unterstützungsstufen zur Verwendung in benutzerdefinierten Rollen:

Unterstützungsstufe Beschreibung
SUPPORTED Die Berechtigung wird in benutzerdefinierten Rollen vollständig unterstützt.
TESTING Google testet die Berechtigung, um ihre Kompatibilität mit benutzerdefinierten Rollen zu prüfen. Sie können die Berechtigung zwar in benutzerdefinierte Rollen einfügen, es kann aber zu unerwartetem Verhalten kommen. Nicht für die Produktion empfohlen.
NOT_SUPPORTED Die Berechtigung wird in benutzerdefinierten Rollen nicht unterstützt.

Eine benutzerdefinierte Rolle auf Organisationsebene kann alle IAM-Berechtigungen enthalten, die in benutzerdefinierten Rollen unterstützt werden. Eine benutzerdefinierte Rolle auf Projektebene kann alle unterstützten Berechtigungen enthalten, außer Berechtigungen, die nur auf Organisations- oder Ordnerebene relevant sind, z. B. resourcemanager.organizations.get.

Zum Prüfen, welche Berechtigungen für benutzerdefinierte Rollen auf Organisations- und Projektebene verfügbar sind, können Sie das gcloud-Tool oder der Identity and Access Management API verwenden, um die Berechtigungen aufzulisten, die in einer bestimmten Organisation oder einem bestimmten Projekt verfügbar sind. Beispielsweise können Sie alle Berechtigungen abrufen, die für benutzerdefinierte Rollen verfügbar sind, die in Ihrem Projekt erstellt werden.

Einige Berechtigungen sind für Sie möglicherweise nicht sichtbar oder in einer benutzerdefinierten Rolle nicht verwendbar, auch wenn sie in benutzerdefinierten Rollen unterstützt werden. Beispielsweise ist eine Berechtigung möglicherweise nicht für die Verwendung in benutzerdefinierten Rollen verfügbar, wenn Sie die API für den Dienst nicht aktiviert haben.

gcloud

Verwenden Sie den Befehl gcloud iam list-testable-permissions, um eine Liste von Berechtigungen abzurufen, die für benutzerdefinierte Rollen in einem bestimmten Projekt oder einer bestimmten Organisation verfügbar sind. In der Antwort sind die Berechtigungen aufgeführt, die Sie in benutzerdefinierten Rollen für dieses Projekt oder diese Organisation verwenden können.

Führen Sie den folgenden Befehl aus, um die Berechtigungen aufzulisten, die in benutzerdefinierten Rollen für ein Projekt oder eine Organisation verfügbar sind:

gcloud iam list-testable-permissions full-resource-name \
    --filter="customRolesSupportLevel!=NOT_SUPPORTED"

Ersetzen Sie full-resource-name durch einen der folgenden Werte:

  • Projekt: //cloudresourcemanager.googleapis.com/projects/project-id (z. B. //cloudresourcemanager.googleapis.com/projects/my-project-id)
  • Organisation: //cloudresourcemanager.googleapis.com/organizations/numeric-id (z. B. //cloudresourcemanager.googleapis.com/organizations/123456789012)

In den Ergebnissen wird angezeigt, ob jede Berechtigung in benutzerdefinierten Rollen unterstützt wird. Berechtigungen ohne das Feld customRolesSupportLevel werden vollständig unterstützt.

Der Befehl list-testable-permissions gibt möglicherweise Hunderte von Ergebnissen zurück. Dieses unvollständige Beispiel zeigt das Format jedes Ergebnisses:

---
name: appengine.applications.create
stage: GA
---
customRolesSupportLevel: TESTING
name: appengine.applications.disable
stage: GA
---
name: appengine.applications.get
stage: GA
---
name: appengine.applications.update
stage: GA
---
name: appengine.instances.delete
stage: GA
---
name: appengine.instances.get
stage: GA
---

REST

Mit der Methode permissions.queryTestablePermissions werden die in einer Organisation oder einem Projekt verfügbaren Berechtigungen aufgelistet.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • full-resource-name: URI, der aus dem Dienstnamen und dem Pfad zur Ressource besteht. Beispiele finden Sie unter Vollständige Ressourcennamen.
  • page-size: Optional. Die Anzahl der Berechtigungen, die in der Antwort enthalten sein sollen. Der Standardwert ist 100 und der Höchstwert 1.000. Wenn die Anzahl der Berechtigungen größer als die Seitengröße ist, enthält die Antwort ein Paginierungstoken, mit dem Sie die nächste Ergebnisseite abrufen können.
  • next-page-token: Optional. Das Paginierungstoken, das in einer früheren Antwort von dieser Methode zurückgegeben wurde. Wenn dieser Wert angegeben wird, beginnt die Liste der testbaren Berechtigungen dort, wo die vorherige Antwort endet.

HTTP-Methode und URL:

POST https://iam.googleapis.com/v1/permissions:queryTestablePermissions

JSON-Text anfordern:

{
  "fullResourceName": "full-resource-name"
  "pageSize": page-size,
  "pageToken": "next-page-token"
}

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

Die Antwort enthält die Liste der Berechtigungen.

{
  "permissions": [
    {
      "name": "iam.serviceAccountKeys.create",
      "stage": "GA"
    },
    {
      "name": "iam.serviceAccountKeys.delete",
      "stage": "GA"
    },
    {
      "name": "iam.serviceAccountKeys.get",
      "stage": "GA"
    }
  ],
  "nextPageToken": "CgoHBajEfjUDQyABEPaIv5vIiMDTVhgDIhtpYW0uc2VydmljZUFjY291bnRLZXlzLmxpc3Q"
}

C++

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

namespace iam = ::google::cloud::iam;
[](std::string const& resource) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::QueryTestablePermissionsRequest request;
  request.set_full_resource_name(resource);
  int count = 0;
  for (auto const& permission : client.QueryTestablePermissions(request)) {
    if (!permission) throw std::runtime_error(permission.status().message());
    std::cout << "Permission successfully retrieved: " << permission->name()
              << "\n";
    ++count;
  }
  if (count == 0) {
    std::cout << "No testable permissions 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 Referenzdokumentation zur IAM C# API.


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<Permission> QueryTestablePermissions(
        string fullResourceName)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var request = new QueryTestablePermissionsRequest
        {
            FullResourceName = fullResourceName
        };
        var response = service.Permissions.QueryTestablePermissions(request)
            .Execute();
        foreach (var p in response.Permissions)
        {
            Console.WriteLine(p.Name);
        }
        return response.Permissions;
    }
}

Go

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

import (
	"context"
	"fmt"
	"io"

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

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

	request := &iam.QueryTestablePermissionsRequest{
		FullResourceName: fullResourceName,
	}
	response, err := service.Permissions.QueryTestablePermissions(request).Do()
	if err != nil {
		return nil, fmt.Errorf("Permissions.QueryTestablePermissions: %v", err)
	}
	for _, p := range response.Permissions {
		fmt.Fprintf(w, "Found permissions: %v", p.Name)
	}
	return response.Permissions, nil
}

Python

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

def query_testable_permissions(resource):
    """Lists valid permissions for a resource."""

    # pylint: disable=no-member
    permissions = service.permissions().queryTestablePermissions(body={
        'fullResourceName': resource
    }).execute()['permissions']
    for p in permissions:
        print(p['name'])

Metadaten der Rollen abrufen

Bevor Sie eine benutzerdefinierte Rolle erstellen, können Sie die Metadaten für sowohl vordefinierte als auch benutzerdefinierte Rollen abrufen. Die Rollenmetadaten umfassen die Rollen-ID und die in der Rolle enthaltenen Berechtigungen. Sie können die Metadaten über die Cloud Console oder die IAM API anzeigen lassen.

Verwenden Sie eine der folgenden Methoden, um die Rollenmetadaten aufzurufen:

Console

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

    Zur Seite „Rollen“

  2. Wählen Sie oben auf der Seite aus der Drop-down-Liste Ihre Organisation oder Ihr Projekt aus.

  3. Klicken Sie das Kästchen für eine oder mehrere Rollen an, um die Rollenberechtigungen aufzurufen. In der rechten Seitenleiste werden die Berechtigungen aufgeführt, die gegebenenfalls in den Rollen enthalten sind.

Die Symbole in der Spalte Typ geben an, ob es sich um eine benutzerdefinierte Rolle oder um eine vordefinierte Rolle handelt.

Wenn Sie alle Rollen mit einer bestimmten Berechtigung auflisten möchten, geben Sie den Namen der Berechtigung in das Feld Filter oben in der Liste "Rollen" ein.

gcloud

Verwenden Sie den Befehl gcloud iam roles describe, um Metadaten für vordefinierte Rollen und benutzerdefinierte Rollen aufzurufen.

Führen Sie den folgenden -Befehl aus, um die Metadaten für eine vordefinierte Rolle aufzurufen:

gcloud iam roles describe role-id

role-id ist die ID der Rolle. Vordefinierte Rollen enthalten in ihren IDs das Präfix role, z. B. roles/iam.roleViewer.

Das folgende Beispiel zeigt die Ausgabe des Befehls describe, wenn er für die vordefinierte Rolle roles/iam.roleViewer ausgeführt wird:

gcloud iam roles describe roles/iam.roleViewer

description: Read access to all custom roles in the project.
etag: AA==
includedPermissions:
- iam.roles.get
- iam.roles.list
- resourcemanager.projects.get
- resourcemanager.projects.getIamPolicy
name: roles/iam.roleViewer
stage: GA
title: Role Viewer

Führen Sie einen der folgenden -Befehle aus, um die Metadaten für eine benutzerdefinierte Rolle aufzurufen:

  • Führen Sie den folgenden Befehl aus, um die Metadaten für eine benutzerdefinierte Rolle aufzurufen, die auf Organisationsebene erstellt wurde:

    gcloud iam roles describe --organization=organization-id role-id
    
  • Führen Sie den folgenden Befehl aus, um die Metadaten für eine benutzerdefinierte Rolle aufzurufen, die auf Projektebene erstellt wurde:

    gcloud iam roles describe --project=project-id role-id
    

Die Platzhalterwerte sind im Folgenden beschrieben:

  • organization-id ist die numerische ID der Organisation, z. B. 123456789012.
  • project-id ist der Name des Projekts, z. B. my-project-id.
  • role-id ist die ID der Rolle ohne Präfixe, z. B. projects/, organizations/ oder roles/. Beispiel: myCompanyAdmin.

Weitere Informationen finden Sie in der Referenzdokumentation zu gcloud iam roles describe.

REST

Mit der Methode roles.get wird die Definition einer Rolle abgerufen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • full-role-id: Die vollständige Rollen-ID, einschließlich der Präfixe organizations/, projects/ oder roles/. Beispiel: organizations/123456789012/roles/myCompanyAdmin.

HTTP-Methode und URL:

GET https://iam.googleapis.com/v1/full-role-id

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

Die Antwort enthält die Rollendefinition.

{
  "name": "projects/my-project/roles/customRole",
  "title": "My Custom Role",
  "description": "My custom role description.",
  "includedPermissions": [
    "storage.buckets.get",
    "storage.buckets.list"
  ],
  "etag": "BwWiPg2fmDE="
}

C++

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

namespace iam = ::google::cloud::iam;
[](std::string const& name) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::GetRoleRequest request;
  request.set_name(name);
  auto response = client.GetRole(request);
  if (!response) throw std::runtime_error(response.status().message());
  std::cout << "Role successfully retrieved: " << response->DebugString()
            << "\n";
}

C#

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


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

public partial class CustomRoles
{
    public static Role GetRole(string name)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var role = service.Roles.Get(name).Execute();
        Console.WriteLine(role.Name);
        Console.WriteLine(String.Join(", ", role.IncludedPermissions));
        return role;
    }
}

Go

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

import (
	"context"
	"fmt"
	"io"

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

// getRole gets role metadata.
func getRole(w io.Writer, name string) (*iam.Role, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %v", err)
	}

	role, err := service.Roles.Get(name).Do()
	if err != nil {
		return nil, fmt.Errorf("Roles.Get: %v", err)
	}
	fmt.Fprintf(w, "Got role: %v\n", role.Name)
	for _, permission := range role.IncludedPermissions {
		fmt.Fprintf(w, "Got permission: %v\n", permission)
	}
	return role, nil
}

Python

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

def get_role(name):
    """Gets a role."""

    # pylint: disable=no-member
    role = service.roles().get(name=name).execute()
    print(role['name'])
    for permission in role['includedPermissions']:
        print(permission)

Benutzerdefinierte Rolle erstellen

Sie können eine benutzerdefinierte Rolle auf Projekt- oder Organisationsebene erstellen.

Zum Erstellen einer benutzerdefinierten Rolle muss ein Aufrufer die Berechtigung iam.roles.create haben. Der Inhaber eines Projekts oder einer Organisation verfügt standardmäßig über diese Berechtigung und kann benutzerdefinierte Rollen erstellen und verwalten.

Nutzern, die keine Inhaber sind, wie z. B. Organisationsadministratoren, muss entweder die Rolle "Administrator für Organisationsrollen" oder die Rolle "Administrator für IAM-Rollen" zugewiesen werden.

Die Gesamtgröße des Titels, der Beschreibung und des Berechtigungsnamens für eine benutzerdefinierte Rolle ist auf 64 KB begrenzt. Wenn Sie eine umfangreichere benutzerdefinierte Rolle erstellen müssen, können Sie die Berechtigungen auf mehrere benutzerdefinierte Rollen aufteilen. Wählen Sie Rollentitel aus, die die Beziehung zwischen den benutzerdefinierten Rollen verdeutlichen, z. B. Custom Admin (1 of 2) und Custom Admin (2 of 2).

Jede benutzerdefinierte Rolle kann eine Einführungsphase haben. Die meisten Einführungsphasen sind informativ und helfen Ihnen dabei zu erfassen, ob jede Rolle für den Einsatz bereit ist. Außerdem können Sie in der Startphase DISABLED eine benutzerdefinierte Rolle deaktivieren. Weitere Informationen zu den Markteinführungsphasen finden Sie unter Tests und Bereitstellung.

Console

Einige vordefinierte Rollen enthalten verworfene Berechtigungen oder Berechtigungen, die aus anderen Gründen nicht in benutzerdefinierten Rollen zugelassen sind. Wenn Sie versuchen, eine benutzerdefinierte Rolle auf der Grundlage einer dieser vordefinierten Rollen zu erstellen, werden die verworfenen und eingeschränkten Berechtigungen in der benutzerdefinierten Rolle weggelassen.

So erstellen Sie eine neue benutzerdefinierte Rolle:

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

    Zur Seite „Rollen“

  2. Wählen Sie oben auf der Seite in der Drop-down-Liste die Organisation oder das Projekt aus, in dem Sie eine Rolle erstellen möchten.

  3. Klicken Sie auf Rolle erstellen.

  4. Geben Sie einen Namen, einen Titel, eine Beschreibung und eine Rolleneinführungsphase für die Rolle ein. Der Rollenname kann nach dem Erstellen der Rolle nicht mehr geändert werden.

  5. Klicken Sie auf Berechtigungen hinzufügen.

  6. Wählen Sie die Berechtigungen aus, die Sie der Rolle hinzufügen möchten, und klicken Sie auf Berechtigungen hinzufügen. Verwenden Sie die Drop-down-Listen Alle Dienste und Alle Typen, um Berechtigungen nach Diensten und Typen zu filtern und auszuwählen.

So erstellen Sie eine benutzerdefinierte Rolle auf der Grundlage einer vorhandenen vordefinierten Rolle:

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

    Zur Seite „Rollen“

  2. Wählen Sie die Organisation oder das Projekt aus, in dem Sie eine Rolle erstellen möchten.
  3. Wählen Sie die Rollen aus, auf denen die neue benutzerdefinierte Rolle basieren soll.
  4. Klicken Sie auf Rolle aus Auswahl erstellen.
  5. Geben Sie einen Namen, einen Titel, eine Beschreibung und eine Rolleneinführungsphase für die Rolle ein. Der Rollenname kann nach dem Erstellen der Rolle nicht mehr geändert werden.
  6. Entfernen Sie die Häkchen aus den Kästchen neben den Berechtigungen, die von der Rolle ausgeschlossen werden sollen.
  7. Klicken Sie auf Berechtigungen hinzufügen, um Berechtigungen hinzuzufügen.
  8. Klicken Sie auf Erstellen.

gcloud

Verwenden Sie den Befehl gcloud iam roles create, um neue benutzerdefinierte Rollen zu erstellen. Dafür gibt es zwei Möglichkeiten:

  • Durch Bereitstellen einer YAML-Datei mit der Rollendefinition
  • Durch Verwenden von Flags zum Angeben der Rollendefinition

Beim Erstellen einer benutzerdefinierten Rolle müssen Sie mithilfe der Flags --organization=organization-id oder --project=project-id angeben, ob sie auf Organisationsebene oder Projektebene angewendet werden soll. Bei jedem der unten aufgeführten Beispiele wird eine benutzerdefinierte Rolle auf Projektebene erstellt.

Eine benutzerdefinierte Rolle kann nur Berechtigungen enthalten, die in benutzerdefinierten Rollen unterstützt werden. Wenn die benutzerdefinierte Rolle andere Berechtigungen enthält, schlägt der Befehl fehl.

So erstellen Sie eine benutzerdefinierte Rolle mithilfe einer YAML-Datei:

Erstellen Sie eine YAML-Datei, die die Definition für Ihre benutzerdefinierte Rolle enthält. Die Datei muss so strukturiert sein:

title: role-title
description: role-description
stage: launch-stage
includedPermissions:
- permission-1
- permission-2

Die Platzhalterwerte sind im Folgenden beschrieben:

  • role-title ist der angezeigte Titel der Rolle, z. B. "My Company Admin".
  • role-description ist eine kurze Beschreibung der Rolle, z. B. "My custom role description".
  • launch-stage gibt die Phase einer Rolle im Einführungszyklus an, z. B. ALPHA, BETA oder GA.
  • permission-1 und permission-2 sind Berechtigungen, die in die benutzerdefinierte Rolle aufgenommen werden sollen, z. B. iam.roles.get.

Speichern Sie die YAML-Datei und führen Sie dann einen der folgenden Befehle aus:

  • Führen Sie den folgenden Befehl aus, um eine benutzerdefinierte Rolle auf Organisationsebene zu erstellen:

    gcloud iam roles create role-id --organization=organization-id \
      --file=yaml-file-path
    
  • Führen Sie den folgenden Befehl aus, um eine benutzerdefinierte Rolle auf Projektebene zu erstellen:

    gcloud iam roles create role-id --project=project-id \
      --file=yaml-file-path
    

Die Platzhalterwerte sind im Folgenden beschrieben:

  • role-id ist der Name der Rolle, z. B. myCompanyAdmin.
  • organization-id ist die numerische ID der Organisation, z. B. 123456789012.
  • project-id ist der Name des Projekts, z. B. my-project-id.
  • yaml-file-path ist der Pfad zum Speicherort der YAML-Datei, die die Definition der benutzerdefinierten Rolle enthält.

Beispiele

Im folgenden Beispiel einer YAML-Datei ist zu sehen, wie eine Rollendefinition erstellt wird:

title: "My Company Admin"
description: "My custom role description."
stage: "ALPHA"
includedPermissions:
- iam.roles.get
- iam.roles.list

Das folgende Beispiel zeigt, wie Sie mithilfe der YAML-Datei eine Rolle auf Organisationsebene erstellen:

gcloud iam roles create myCompanyAdmin --organization=123456789012 \
  --file=my-role-definition.yaml

Wenn die Rolle erstellt wurde, sieht die Ausgabe des Befehls in etwa so aus:

Created role [myCompanyAdmin].
description: My custom role description.
etag: BwVkBX0sQD0=
includedPermissions:
- iam.roles.get
- iam.roles.list
name: organizations/123456789012/roles/myCompanyAdmin
stage: ALPHA
title: My Company Admin

Das folgende Beispiel zeigt, wie Sie mithilfe der YAML-Datei eine Rolle auf Projektebene erstellen:

gcloud iam roles create myCompanyAdmin --project=my-project-id \
  --file=my-role-definition.yaml

Wenn die Rolle erstellt wurde, sieht die Ausgabe des Befehls in etwa so aus:

Created role [myCompanyAdmin].
description: My custom role description.
etag: BwVkBX0sQD0=
includedPermissions:
- iam.roles.get
- iam.roles.list
name: projects/my-project-id/roles/myCompanyAdmin
stage: ALPHA
title: My Company Admin

So erstellen Sie eine benutzerdefinierte Rolle mithilfe von Flags:

Führen Sie einen der folgenden Befehle aus:

  • Führen Sie den folgenden Befehl aus, um eine benutzerdefinierte Rolle auf Organisationsebene zu erstellen:

    gcloud iam roles create role-id --organization=organization-id \
      --title=role-title --description=role-description \
      --permissions=permissions-list --stage=launch-stage
    
  • Führen Sie den folgenden Befehl aus, um eine benutzerdefinierte Rolle auf Projektebene zu erstellen:

    gcloud iam roles create role-id --project=project-id \
      --title=role-title --description=role-description \
      --permissions=permissions-list --stage=launch-stage
    

Die Platzhalterwerte sind im Folgenden beschrieben:

  • role-id ist der Name der Rolle, z. B. myCompanyAdmin.
  • organization-id ist die numerische ID der Organisation, z. B. 123456789012.
  • project-id ist der Name des Projekts, z. B. my-project-id.
  • role-title ist der angezeigte Titel der Rolle, z. B. "My Company Admin".
  • role-description ist eine kurze Beschreibung der Rolle, z. B. "My custom role description.".
  • permissions-list enthält eine durch Kommas getrennte Liste von Berechtigungen, die Sie in die benutzerdefinierte Rolle aufnehmen möchten. Beispiel: iam.roles.get,iam.roles.list.
  • launch-stage gibt die Phase einer Rolle im Einführungszyklus an, z. B. ALPHA, BETA oder GA.

Beispiele

Das folgende Beispiel zeigt, wie Sie mithilfe von Flags eine Rolle auf Organisationsebene erstellen:

gcloud iam roles create myCompanyAdmin --organization=123456789012\
  --title="My Company Admin" --description="My custom role description." \
  --permissions=iam.roles.get,iam.roles.list --stage=ALPHA

Wenn die Rolle erstellt wurde, sieht die Ausgabe des Befehls in etwa so aus:

Created role [myCompanyAdmin].
description: My custom role description.
etag: BwVkBX0sQD0=
includedPermissions:
- iam.roles.get
- iam.roles.list
name: organizations/123456789012/roles/myCompanyAdmin
stage: ALPHA
title: My Company Admin

Das folgende Beispiel zeigt, wie Sie mithilfe von Flags eine Rolle auf Projektebene erstellen:

gcloud iam roles create myCompanyAdmin --project=my-project-id \
  --title="My Company Admin" --description="My custom role description." \
  --permissions=iam.roles.get,iam.roles.list --stage=ALPHA

Wenn die Rolle erstellt wurde, sieht die Ausgabe des Befehls in etwa so aus:

Created role [myCompanyAdmin].
description: My custom role description.
etag: BwVkBX0sQD0=
includedPermissions:
- iam.roles.get
- iam.roles.list
name: projects/my-project-id/roles/myCompanyAdmin
stage: ALPHA
title: My Company Admin

REST

Mit der Methode roles.create wird eine benutzerdefinierte Rolle in einem Projekt oder einer Organisation erstellt.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • resource-type: Der Ressourcentyp, dessen benutzerdefinierte Rollen Sie verwalten möchten. Verwenden Sie den Wert projects oder organizations.
  • resource-id: Die Projekt-ID oder Organisations-ID, deren benutzerdefinierte Rollen Sie verwalten möchten. Projekt-IDs sind alphanumerische Strings, wie my-project. Organisations-IDs sind numerisch, z. B. 123456789012.
  • role-id: Der Name der Rolle, z. B. myCompanyAdmin.
  • role-title: Der für Nutzer lesbare Titel der Rolle. Beispiel: My Company Admin
  • role-description: Eine Beschreibung der Rolle. Beispiel: "The company admin role allows company admins to access important resources"
  • permission-1 und permission-2: Die Berechtigungen, die Sie der Rolle zuweisen möchten. Beispiel: storage.objects.update.

    Eine benutzerdefinierte Rolle kann nur Berechtigungen enthalten, die in benutzerdefinierten Rollen unterstützt werden. Wenn die benutzerdefinierte Rolle andere Berechtigungen enthält, schlägt die Anfrage fehl.

  • launch-stage: Die aktuelle Startphase der Rolle. Dieses Feld kann einen der folgenden Werte enthalten: EAP, ALPHA, BETA, GA, DEPRECATED oder DISABLED.

HTTP-Methode und URL:

POST https://iam.googleapis.com/v1/resource-type/resource-id/roles

JSON-Text anfordern:

{
  "roleId": "role-id",
  "role": {
    "title": "role-title",
    "description": "role-description",
    "includedPermissions": [
      "permission-1",
      "permission-2"
    ],
    "stage": "launch-stage"
  }
}

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

Die Antwort enthält die von Ihnen erstellte Rolle.

{
  "name": "projects/myProject/roles/myCompanyAdmin",
  "title": "My Company Admin",
  "description": "My custom role description.",
  "includedPermissions": [
    "iam.roles.get",
    "iam.roles.list"
  ],
  "etag": "BwWox/JbaZw="
}

C++

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

namespace iam = ::google::cloud::iam;
[](std::string const& parent, std::string const& role_id,
   std::vector<std::string> const& included_permissions) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::CreateRoleRequest request;
  request.set_parent("projects/" + parent);
  request.set_role_id(role_id);
  google::iam::admin::v1::Role role;
  role.set_stage(google::iam::admin::v1::Role::GA);
  for (auto const& permission : included_permissions) {
    *role.add_included_permissions() = permission;
  }
  *request.mutable_role() = role;
  auto response = client.CreateRole(request);
  if (!response) throw std::runtime_error(response.status().message());
  std::cout << "Role successfully created: " << response->DebugString()
            << "\n";
}

C#

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


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 Role CreateRole(string name, string projectId, string title,
        string description, IList<string> permissions, string stage)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var role = new Role
        {
            Title = title,
            Description = description,
            IncludedPermissions = permissions,
            Stage = stage
        };
        var request = new CreateRoleRequest
        {
            Role = role,
            RoleId = name
        };
        role = service.Projects.Roles.Create(request,
            "projects/" + projectId).Execute();
        Console.WriteLine("Created role: " + role.Name);
        return role;
    }
}

Go

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

import (
	"context"
	"fmt"
	"io"

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

// createRole creates a custom role.
func createRole(w io.Writer, projectID, name, title, description, stage string, permissions []string) (*iam.Role, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %v", err)
	}

	request := &iam.CreateRoleRequest{
		Role: &iam.Role{
			Title:               title,
			Description:         description,
			IncludedPermissions: permissions,
			Stage:               stage,
		},
		RoleId: name,
	}
	role, err := service.Projects.Roles.Create("projects/"+projectID, request).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.Roles.Create: %v", err)
	}
	fmt.Fprintf(w, "Created role: %v", role.Name)
	return role, nil
}

Python

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

def create_role(name, project, title, description, permissions, stage):
    """Creates a role."""

    # pylint: disable=no-member
    role = service.projects().roles().create(
        parent='projects/' + project,
        body={
            'roleId': name,
            'role': {
                'title': title,
                'description': description,
                'includedPermissions': permissions,
                'stage': stage
            }
        }).execute()

    print('Created role: ' + role['name'])
    return role

Vorhandene benutzerdefinierte Rolle bearbeiten

Read-Modify-Write (Lesen-Ändern-Schreiben)

Die Metadaten einer Ressource, beispielsweise einer Rolle, werden häufig nach dem folgenden Muster aktualisiert: Der aktuelle Status wird gelesen, die Daten werden lokal aktualisiert und die geänderten Daten werden anschließend zum Schreiben gesendet. Dabei kann es jedoch zu Konflikten kommen, wenn zwei oder mehr voneinander unabhängige Prozesse gleichzeitig nach diesem Muster verfahren. Wenn beispielsweise zwei Inhaber eines Projekts gleichzeitig versuchen, gegensätzliche Änderungen an der Rolle vorzunehmen, könnte es passieren, dass einige Änderungen nicht übernommen werden. IAM löst dieses Problem mithilfe eines etag-Attributs in benutzerdefinierten Rollen. Mit diesem Attribut wird überprüft, ob sich die benutzerdefinierte Rolle seit der letzten Anfrage geändert hat. Wenn Sie eine Anfrage mit einem ETag-Wert an IAM senden, vergleicht IAM den ETag-Wert in der Anfrage mit dem vorhandenen ETag-Wert, der der benutzerdefinierten Rolle zugeordnet ist. Die Änderung wird nur geschrieben, wenn die ETag-Werte übereinstimmen.

Wenn Sie eine Rolle aktualisieren, rufen Sie zuerst die Rolle mit roles.get() auf, aktualisieren Sie die Rolle und schreiben dann mit roles.patch() die aktualisierte Rolle. Verwenden Sie beim Festlegen der Rolle den Etag-Wert nur, wenn die entsprechende Rolle in roles.get() einen Etag-Wert enthält.

Console

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

    Zur Seite „Rollen“

  2. Wählen Sie oben auf der Seite in der Drop-down-Liste das Projekt oder die Organisation aus, die die Rolle enthält, die Sie bearbeiten möchten.

  3. Klicken Sie auf eine benutzerdefinierte Rolle.

  4. Klicken Sie auf Rolle bearbeiten.

  5. Bearbeiten Sie den Titel, die Beschreibung oder die Phase der Rolleneinführung, um die Metadaten der Rolle zu aktualisieren.

  6. So aktualisieren Sie die Berechtigungen der Rolle:

    1. Klicken Sie auf Berechtigungen hinzufügen, um der Rolle neue Berechtigungen hinzuzufügen.
    2. Entfernen Sie die Häkchen aus den Kästchen neben den Berechtigungen, die von der Rolle ausgeschlossen werden sollen.
  7. Klicken Sie auf Aktualisieren, um die bearbeitete Rolle zu speichern.

gcloud

Verwenden Sie den Befehl gcloud iam roles update, um benutzerdefinierte Rollen zu aktualisieren. Dafür gibt es zwei Möglichkeiten:

  • Durch Bereitstellen einer YAML-Datei, die die Definition der aktualisierten Rolle enthält
  • Durch Verwenden von Flags zum Angeben der Definition der aktualisierten Rolle

Beim Aktualisieren einer benutzerdefinierten Rolle müssen Sie mit den Flags --organization=organization-id oder --project=project-id angeben, ob sie auf Organisationsebene oder Projektebene angewendet werden soll. Bei jedem der unten aufgeführten Beispiele wird eine benutzerdefinierte Rolle auf Projektebene erstellt.

So aktualisieren Sie eine benutzerdefinierte Rolle mithilfe einer YAML-Datei:

Rufen Sie die aktuelle Definition für die Rolle ab, indem Sie einen der folgenden Befehle ausführen:

  • Führen Sie den folgenden Befehl aus, um die Rollendefinition einer benutzerdefinierten Rolle auf Organisationsebene abzurufen:

    gcloud iam roles describe role-id --organization=organization-id
    
  • Führen Sie den folgenden Befehl aus, um die Rollendefinition einer benutzerdefinierten Rolle auf Projektebene abzurufen:

    gcloud iam roles describe role-id --project=project-id
    

Die Platzhalterwerte sind im Folgenden beschrieben:

  • role-id ist der Name der Rolle, die aktualisiert werden soll, z. B. myCompanyAdmin.
  • organization-id ist die numerische ID der Organisation, z. B. 123456789012.
  • project-id ist der Name des Projekts, z. B. my-project-id.

Der describe-Befehl gibt die Definition der Rolle zurück und enthält einen etag-Wert, der die aktuelle Version der Rolle eindeutig identifiziert. Der etag-Wert sollte in der aktualisierten Rollendefinition angegeben werden, um sicherzustellen, dass gleichzeitig ausgeführte Rollenänderungen nicht überschrieben werden.

Der Befehl describe gibt Folgendes zurück:

description: role-description
etag: etag-value
includedPermissions:
- permission-1
- permission-2
name: full-role-id
stage: launch-stage
title: role-title

Die Platzhalterwerte sind im Folgenden beschrieben:

  • role-description ist eine kurze Beschreibung der Rolle, z. B. "My custom role description".
  • etag-value ist die eindeutige Kennung für die aktuelle Version der Rolle, z. B. BwVkBkbfr70=.
  • permission-1 und permission-2 sind Berechtigungen, die in die benutzerdefinierte Rolle aufgenommen werden sollen, z. B. iam.roles.get.
  • full-role-id ist die vollständige Rollen-ID, einschließlich sämtlicher Präfixe organizations/, projects/ und roles/. Beispiel: organizations/123456789012/roles/myCompanyAdmin.
  • launch-stage gibt die Phase einer Rolle im Einführungszyklus an, z. B. ALPHA, BETA oder GA.
  • role-title ist der angezeigte Titel der Rolle, z. B. "My Company Admin".

Nehmen Sie entweder die ausgegebene Rollendefinition in eine YAML-Datei auf oder aktualisieren Sie die ursprüngliche YAML-Datei mit dem ausgegebenen etag-Wert, um die Rolle zu aktualisieren.

Betrachten Sie die folgende YAML-Beispieldatei, die die Ausgabe des Befehls describe für eine Rolle auf Projektebene enthält und mit der zwei Cloud Storage-Berechtigungen hinzugefügt werden:

description: My custom role description.
etag: BwVkBkbfr70=
includedPermissions:
- iam.roles.get
- iam.roles.list
- storage.buckets.get
- storage.buckets.list
name: projects/my-project-id/roles/myCompanyAdmin
stage: ALPHA
title: My Company Admin

Speichern Sie die YAML-Datei und führen Sie dann einen der folgenden Befehle aus:

  • Führen Sie den folgenden Befehl aus, um eine Rolle auf Organisationsebene zu aktualisieren:

    gcloud iam roles update role-id --organization=organization-id \
      --file=yaml-file-path
    
  • Führen Sie den folgenden Befehl aus, um eine Rolle auf Projektebene zu aktualisieren:

    gcloud iam roles update role-id --project=project-id \
      --file=yaml-file-path
    

Die Platzhalterwerte sind im Folgenden beschrieben:

  • role-id ist der Name der Rolle, die aktualisiert werden soll, z. B. myCompanyAdmin.
  • organization-id ist die numerische ID der Organisation, z. B. 123456789012.
  • project-id ist der Name des Projekts, z. B. my-project-id.
  • yaml-file-path ist der Pfad zum Speicherort der YAML-Datei, die die Definition der aktualisierten benutzerdefinierten Rolle enthält.

Beispiele

Das folgende Beispiel zeigt, wie Sie mithilfe einer YAML-Datei eine Rolle auf Organisationsebene aktualisieren:

gcloud iam roles update myCompanyAdmin --organization=123456789012 \
  --file=my-role-definition.yaml

Wenn die Rolle aktualisiert wurde, sieht die Ausgabe des Befehls in etwa so aus:

description: My custom role description.
etag: BwVkBwDN0lg=
includedPermissions:
- iam.roles.get
- iam.roles.list
- storage.buckets.get
- storage.buckets.list
name: organizations/123456789012/roles/myCompanyAdmin
stage: ALPHA
title: My Company Admin

Das folgende Beispiel zeigt, wie Sie mithilfe einer YAML-Datei eine Rolle auf Projektebene aktualisieren:

gcloud iam roles update myCompanyAdmin --project=my-project-id \
  --file=my-role-definition.yaml

Wenn die Rolle aktualisiert wurde, sieht die Ausgabe des Befehls in etwa so aus:

description: My custom role description.
etag: BwVkBwDN0lg=
includedPermissions:
- iam.roles.get
- iam.roles.list
- storage.buckets.get
- storage.buckets.list
name: projects/my-project-id/roles/myCompanyAdmin
stage: ALPHA
title: My Company Admin

So aktualisieren Sie eine benutzerdefinierte Rolle mithilfe von Flags:

Jeder Teil einer Rollendefinition kann mithilfe eines entsprechenden Flags aktualisiert werden. Eine Liste aller möglichen Flags finden Sie im Thema gcloud iam roles update.

Sie können die folgenden Flags verwenden, um Berechtigungen hinzuzufügen oder zu entfernen:

  • --add-permissions=permissions: fügt der Rolle eine oder mehrere durch Kommas getrennte Berechtigungen hinzu
  • --remove-permissions=permissions: entfernt eine oder mehrere durch Kommas getrennte Berechtigungen aus der Rolle

Alternativ können Sie die neuen Berechtigungen einfach mit dem Flag --permissions=permissions angeben und eine durch Kommas getrennte Liste von Berechtigungen bereitstellen, um die vorhandene Berechtigungsliste zu ersetzen.

Führen Sie einen der folgenden Befehle aus, um andere Teile der Rollendefinition zu aktualisieren:

  • Führen Sie den folgenden Befehl aus, um eine Rolle auf Organisationsebene zu aktualisieren:

    gcloud iam roles update role-id --organization=organization-id \
      --title=role-title --description=role-description \
      --stage=launch-stage
    
  • Führen Sie den folgenden Befehl aus, um eine Rolle auf Projektebene zu aktualisieren:

    gcloud iam roles update role-id --project=project-id \
      --title=role-title --description=role-description \
      --stage=launch-stage
    

Die Platzhalterwerte sind im Folgenden beschrieben:

  • role-id ist der Name der Rolle, z. B. myCompanyAdmin.
  • organization-id ist die numerische ID der Organisation, z. B. 123456789012.
  • project-id ist der Name des Projekts, z. B. my-project-id.
  • role-title ist der angezeigte Titel der Rolle, z. B. "My Company Admin".
  • role-description ist eine kurze Beschreibung der Rolle, z. B. "My custom role description.".
  • launch-stage gibt die Phase einer Rolle im Einführungszyklus an, z. B. ALPHA, BETA oder GA.

Beispiele

Das folgende Beispiel zeigt, wie Sie einer Rolle auf Organisationsebene mithilfe von Flags Berechtigungen hinzufügen:

gcloud iam roles update myCompanyAdmin --organization=123456789012 \
  --add-permissions=storage.buckets.get,storage.buckets.list

Wenn die Rolle aktualisiert wurde, sieht die Ausgabe des Befehls in etwa so aus:

description: My custom role description.
etag: BwVkBwDN0lg=
includedPermissions:
- iam.roles.get
- iam.roles.list
- storage.buckets.get
- storage.buckets.list
name: organization/123456789012/roles/myCompanyAdmin
stage: ALPHA
title: My Company Admin

Das folgende Beispiel zeigt, wie Sie einer Rolle auf Projektebene mithilfe von Flags Berechtigungen hinzufügen:

gcloud iam roles update myCompanyAdmin --project=my-project-id \
  --add-permissions=storage.buckets.get,storage.buckets.list

Wenn die Rolle aktualisiert wurde, sieht die Ausgabe des Befehls in etwa so aus:

description: My custom role description.
etag: BwVkBwDN0lg=
includedPermissions:
- iam.roles.get
- iam.roles.list
- storage.buckets.get
- storage.buckets.list
name: projects/my-project-id/roles/myCompanyAdmin
stage: ALPHA
title: My Company Admin

REST

Mit der Methode roles.patch wird eine benutzerdefinierte Rolle in einem Projekt oder einer Organisation aktualisiert.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

Erforderlich:

  • resource-type: Der Ressourcentyp, dessen benutzerdefinierte Rollen Sie verwalten möchten. Verwenden Sie den Wert projects oder organizations.
  • resource-id: Die Projekt-ID oder Organisations-ID, deren benutzerdefinierte Rollen Sie verwalten möchten. Projekt-IDs sind alphanumerische Strings, wie my-project. Organisations-IDs sind numerisch, z. B. 123456789012.
  • full-role-id: Die vollständige Rollen-ID, einschließlich der Präfixe organizations/, projects/ oder roles/. Beispiel: organizations/123456789012/roles/myCompanyAdmin.

Empfohlen:

  • etag: Eine Kennzeichnung für eine Version der Rolle. Fügen Sie dieses Feld ein, um Überschreiben von Änderungen an der Rolle zu verhindern.

Optional (definieren Sie einen oder mehrere der folgenden Werte):

  • role-title: Der für Nutzer lesbare Titel der Rolle. Beispiel: My Company Admin
  • role-description: Eine Beschreibung der Rolle. Beispiel: "The company admin role allows company admins to access important resources"
  • permission-1 und permission-2: Die Berechtigungen, die Sie der Rolle zuweisen möchten. Beispiel: storage.objects.update.
  • launch-stage: Die aktuelle Startphase der Rolle. Dieses Feld kann einen der folgenden Werte enthalten: EAP, ALPHA, BETA, GA, DEPRECATED oder DISABLED.

HTTP-Methode und URL:

PATCH https://iam.googleapis.com/v1/resource-type/resource-id/roles

JSON-Text anfordern:

{
  "roleId": "full-role-id",
  "title": "role-title",
  "description": "role-description",
  "includedPermissions": [
    "permission-1",
    "permission-2"
  ],
  "stage": "launch-stage",
  "etag": "etag"
}

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

Die Antwort enthält eine abgekürzte Rollendefinition, die den Namen der Rolle, die aktualisierten Felder und ein ETag beinhaltet, das die aktuelle Version der Rolle angibt.

{
  "name": "projects/test-project-1000092/roles/myCompanyAdmin",
  "title": "My Updated Company Admin",
  "includedPermissions": [
    "storage.buckets.get",
    "storage.buckets.list"
  ],
  "stage": "BETA",
  "etag": "BwWoyDpAxBc="
}

C++

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

namespace iam = ::google::cloud::iam;
[](std::string const& name, std::string const& title) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::UpdateRoleRequest request;
  request.set_name(name);
  google::iam::admin::v1::Role role;
  role.set_title(title);
  google::protobuf::FieldMask update_mask;
  *update_mask.add_paths() = "title";
  *request.mutable_role() = role;
  *request.mutable_update_mask() = update_mask;
  auto response = client.UpdateRole(request);
  if (!response) throw std::runtime_error(response.status().message());
  std::cout << "Role successfully updated: " << response->DebugString()
            << "\n";
}

C#

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


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 Role EditRole(string name, string projectId, string newTitle,
        string newDescription, IList<string> newPermissions, string newStage)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });
        // First, get a Role using List() or Get().
        string resource = $"projects/{projectId}/roles/{name}";
        var role = service.Projects.Roles.Get(resource).Execute();
        // Then you can update its fields.
        role.Title = newTitle;
        role.Description = newDescription;
        role.IncludedPermissions = newPermissions;
        role.Stage = newStage;
        role = service.Projects.Roles.Patch(role, resource).Execute();
        Console.WriteLine("Updated role: " + role.Name);
        return role;
    }
}

Go

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

import (
	"context"
	"fmt"
	"io"

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

// editRole modifies a custom role.
func editRole(w io.Writer, projectID, name, newTitle, newDescription, newStage string, newPermissions []string) (*iam.Role, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %v", err)
	}

	resource := "projects/" + projectID + "/roles/" + name
	role, err := service.Projects.Roles.Get(resource).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.Roles.Get: %v", err)
	}
	role.Title = newTitle
	role.Description = newDescription
	role.IncludedPermissions = newPermissions
	role.Stage = newStage
	role, err = service.Projects.Roles.Patch(resource, role).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.Roles.Patch: %v", err)
	}
	fmt.Fprintf(w, "Updated role: %v", role.Name)
	return role, nil
}

Python

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

def edit_role(name, project, title, description, permissions, stage):
    """Creates a role."""

    # pylint: disable=no-member
    role = service.projects().roles().patch(
        name='projects/' + project + '/roles/' + name,
        body={
            'title': title,
            'description': description,
            'includedPermissions': permissions,
            'stage': stage
        }).execute()

    print('Updated role: ' + role['name'])
    return role

Benutzerdefinierte Rolle deaktivieren

Sie können eine benutzerdefinierte Rolle deaktivieren, indem Sie ihre Startphase zu DISABLED ändern. Beim Deaktivieren einer Rolle werden alle Richtlinienbindungen, die mit der Rolle in Zusammenhang stehen, deaktiviert. Dies bedeutet, dass die Zuweisung der Rolle an einen Nutzer keine Auswirkungen hat.

Console

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

    Zur Seite „Rollen“

  2. Klicken Sie am Anfang der Seite auf die Drop-down-Liste "Projekt auswählen".

  3. Wählen Sie Ihre Organisation oder das Projekt aus.

  4. Wählen Sie eine benutzerdefinierte Rolle aus und klicken Sie auf Deaktivieren.

gcloud

Verwenden Sie den Befehl gcloud iam roles update, um eine benutzerdefinierte Rolle durch Festlegen der Einführungsphase auf DISABLED zu deaktivieren. Wie auf dem Tab gcloud im Abschnitt Vorhandene benutzerdefinierte Rolle bearbeiten beschrieben, können Sie eine vorhandene benutzerdefinierte Rolle auf zwei Arten aktualisieren:

  • Durch Bereitstellen einer YAML-Datei, die die Definition der aktualisierten Rolle enthält
  • Durch Verwenden von Flags zum Angeben der Definition der aktualisierten Rolle

Am einfachsten können Sie eine vorhandene benutzerdefinierte Rolle deaktivieren, indem Sie das Flag --stage verwenden und auf DISABLED festlegen. Führen Sie einen der folgenden Befehle aus:

  • Führen Sie den folgenden Befehl aus, um eine Rolle auf Organisationsebene zu deaktivieren:

    gcloud iam roles update role-id --organization=organization-id \
      --stage=DISABLED
    
  • Führen Sie den folgenden Befehl aus, um eine Rolle auf Projektebene zu deaktivieren:

    gcloud iam roles update role-id --project=project-id \
      --stage=DISABLED
    

Die Platzhalterwerte sind im Folgenden beschrieben:

  • role-id ist der Name der Rolle, z. B. myCompanyAdmin.
  • organization-id ist die numerische ID der Organisation, z. B. 123456789012.
  • project-id ist der Name des Projekts, z. B. my-project-id.

Beispiele

Das folgende Beispiel zeigt, wie Sie eine Rolle auf Organisationsebene deaktivieren:

gcloud iam roles update myCompanyAdmin --organization=123456789012 \
  --stage=DISABLED

Wenn die Rolle aktualisiert wurde, sieht die Ausgabe des Befehls in etwa so aus:

description: My custom role description.
etag: BwVkB5NLIQw=
includedPermissions:
- iam.roles.get
- iam.roles.list
name: organization/123456789012/roles/myCompanyAdmin
stage: DISABLED
title: My Company Admin

Das folgende Beispiel zeigt, wie Sie eine Rolle auf Projektebene deaktivieren:

gcloud iam roles update myCompanyAdmin --project=my-project-id \
  --stage=DISABLED

Wenn die Rolle aktualisiert wurde, sieht die Ausgabe des Befehls in etwa so aus:

description: My custom role description.
etag: BwVkB5NLIQw=
includedPermissions:
- iam.roles.get
- iam.roles.list
name: projects/my-project-id/roles/myCompanyAdmin
stage: DISABLED
title: My Company Admin

REST

Mit der Methode roles.patch können Sie die Startphase einer benutzerdefinierten Rolle in DISABLED ändern, wodurch die Rolle deaktiviert wird.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • resource-type: Der Ressourcentyp, dessen benutzerdefinierte Rollen Sie verwalten möchten. Verwenden Sie den Wert projects oder organizations.
  • resource-id: Die Projekt-ID oder Organisations-ID, deren benutzerdefinierte Rollen Sie verwalten möchten. Projekt-IDs sind alphanumerische Strings, wie my-project. Organisations-IDs sind numerisch, z. B. 123456789012.
  • full-role-id: Die vollständige Rollen-ID, einschließlich der Präfixe organizations/, projects/ oder roles/. Beispiel: organizations/123456789012/roles/myCompanyAdmin.

  • etag: Eine Kennzeichnung für eine Version der Rolle. Fügen Sie dieses Feld ein, um Überschreiben von Änderungen an der Rolle zu verhindern.

HTTP-Methode und URL:

PATCH https://iam.googleapis.com/v1/resource/resource-id/roles

JSON-Text anfordern:

{
  "roleId": "full-role-id",
  "stage": DISABLED,
  "etag": "etag"
}

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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/test-project-1000092/roles/myCompanyAdmin",
  "stage": "DISABLED",
  "etag": "BwWoyDpAxBc="
}

C++

Aktualisieren Sie das Feld stage der Rolle auf DISABLED.

C#

Aktualisieren Sie das Feld stage der Rolle auf DISABLED.

Go

Aktualisieren Sie das Feld stage der Rolle auf DISABLED.

Python

Aktualisieren Sie das Feld stage der Rolle auf DISABLED.

Rollen auflisten

Sie können alle benutzerdefinierten Rollen auflisten, die in Ihrem Projekt oder in Ihrer Organisation erstellt wurden.

Console

Rufen Sie in der Cloud Console die Seite Rollen auf.

Zur Seite „Rollen“

Alle benutzerdefinierten Rollen für die ausgewählte Organisation oder das ausgewählte Projekt werden auf der Seite aufgeführt.

gcloud

Verwenden Sie den Befehl gcloud iam roles list, um benutzerdefinierte Rollen und vordefinierte Rollen für ein Projekt oder eine Organisation aufzulisten.

  • Führen Sie den folgenden Befehl aus, um benutzerdefinierte Rollen auf Organisationsebene aufzulisten:

    gcloud iam roles list --organization=organization-id
    
  • Führen Sie den folgenden Befehl aus, um benutzerdefinierte Rollen auf Projektebene aufzulisten:

    gcloud iam roles list --project=project-id
    

Die Platzhalterwerte sind im Folgenden beschrieben:

  • organization-id ist die numerische ID der Organisation, z. B. 123456789012.
  • project-id ist der Name des Projekts, z. B. my-project-id.

Zum Auflisten gelöschter Rollen können Sie auch das Flag --show-deleted angeben.

Führen Sie den folgenden -Befehl aus, um vordefinierte Rollen aufzulisten:

gcloud iam roles list

REST

Mit der Methode roles.list werden alle benutzerdefinierten Rollen in einem Projekt oder einer Organisation aufgelistet.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • resource-type: Der Ressourcentyp, dessen benutzerdefinierte Rollen Sie verwalten möchten. Verwenden Sie den Wert projects oder organizations.
  • resource-id: Die Projekt-ID oder Organisations-ID, deren benutzerdefinierte Rollen Sie verwalten möchten. Projekt-IDs sind alphanumerische Strings, wie my-project. Organisations-IDs sind numerisch, z. B. 123456789012.
  • role-view: Optional. Die Informationen, die in den zurückgegebenen Rollen enthalten sein sollen. Setzen Sie den Wert dieses Feldes auf FULL, um die Berechtigungen der Rollen einzuschließen. Wenn Sie die Berechtigungen der Rollen ausschließen möchten, legen Sie für dieses Feld BASIC fest. Der Standardwert ist BASIC.
  • page-size: Optional. Die Anzahl der Rollen, die in der Antwort enthalten sein sollen. Der Standardwert ist 300 und der Höchstwert ist 1.000. Wenn die Anzahl der Rollen größer als die Seitengröße ist, enthält die Antwort ein Paginierungstoken, mit dem Sie die nächste Ergebnisseite abrufen können.
  • next-page-token: Optional. Das Paginierungstoken, das in einer früheren Antwort von dieser Methode zurückgegeben wurde. Wenn dieser Wert angegeben wird, beginnt die Liste der Rollen dort, wo die vorherige Anfrage endet.

HTTP-Methode und URL:

GET https://iam.googleapis.com/v1/resource-type/resource-id/roles?view=role-view&pageSize=page-size&pageToken=next-page-token

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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "roles": [
    {
      "name": "projects/my-project/roles/customRole1",
      "title": "First Custom Role",
      "description": "Created on: 2020-06-01",
      "etag": "BwWiPg2fmDE="
    },
    {
      "name": "projects/my-project/roles/customRole2",
      "title": "Second Custom Role",
      "description": "Created on: 2020-06-07",
      "etag": "BwWiuX53Wi0="
    }
  ]
}

C++

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

namespace iam = ::google::cloud::iam;
[](std::string const& project) {
  iam::IAMClient client(iam::MakeIAMConnection());
  int count = 0;
  google::iam::admin::v1::ListRolesRequest request;
  request.set_parent(project);
  for (auto const& role : client.ListRoles(request)) {
    if (!role) throw std::runtime_error(role.status().message());
    std::cout << "Roles successfully retrieved: " << role->name() << "\n";
    ++count;
  }
  if (count == 0) {
    std::cout << "No roles found in project: " << project << "\n";
  }
}

C#

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


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> ListRoles(string projectId)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var response = service.Projects.Roles.List("projects/" + projectId)
            .Execute();
        foreach (var role in response.Roles)
        {
            Console.WriteLine(role.Name);
        }
        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 Referenzdokumentation zur IAM Go API.

import (
	"context"
	"fmt"
	"io"

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

// listRoles lists a project's roles.
func listRoles(w io.Writer, projectID string) ([]*iam.Role, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %v", err)
	}

	response, err := service.Projects.Roles.List("projects/" + projectID).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.Roles.List: %v", err)
	}
	for _, role := range response.Roles {
		fmt.Fprintf(w, "Listing role: %v\n", role.Name)
	}
	return response.Roles, nil
}

Python

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

def list_roles(project_id):
    """Lists roles."""

    # pylint: disable=no-member
    roles = service.roles().list(
        parent='projects/' + project_id).execute()['roles']
    for role in roles:
        print(role['name'])

Benutzerdefinierte Rolle löschen

Sie können jede benutzerdefinierte Rolle in Ihrem Projekt oder in Ihrer Organisation löschen.

Console

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

    Zur Seite „Rollen“

  2. Wählen Sie die Rolle aus, die Sie löschen möchten, und klicken Sie oben auf der Seite auf  Löschen.

gcloud

Verwenden Sie den Befehl gcloud iam roles delete, um eine benutzerdefinierte Rolle zu löschen.

  • Führen Sie den folgenden Befehl aus, um eine benutzerdefinierte Rolle auf Organisationsebene zu löschen:

    gcloud iam roles delete role-id --organization=organization-id
    
  • Führen Sie den folgenden Befehl aus, um eine benutzerdefinierte Rolle auf Projektebene zu löschen:

    gcloud iam roles delete role-id --project=project-id
    

Die Platzhalterwerte sind im Folgenden beschrieben:

  • role-id ist der Name der Rolle, z. B. myCompanyAdmin.
  • organization-id ist die numerische ID der Organisation, z. B. 123456789012.
  • project-id ist der Name des Projekts, z. B. my-project-id.

Die Rolle wird nur dann in gcloud iam roles list aufgenommen, wenn das Flag --show-deleted angegeben ist. Gelöschte Rollen sind durch den Block deleted: true in einer list-Antwort gekennzeichnet. Beispiel:

---
deleted: true
description: My custom role description.
etag: BwVkB5NLIQw=
name: projects/my-project-id/roles/myCompanyAdmin
title: My Company Admin
---

REST

Mit der Methode roles.delete wird eine benutzerdefinierte Rolle in einem Projekt oder einer Organisation gelöscht.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • full-role-id: Die vollständige Rollen-ID, einschließlich der Präfixe organizations/, projects/ oder roles/. Beispiel: organizations/123456789012/roles/myCompanyAdmin.

HTTP-Methode und URL:

DELETE https://iam.googleapis.com/v1/full-role-id

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

Die Antwort enthält die Definition der gelöschten Rolle.

{
  "name": "projects/my-project/roles/myCompanyAdmin",
  "title": "My Company Admin",
  "description": "My custom role description.",
  "includedPermissions": [
    "iam.roles.get",
    "iam.roles.list"
  ],
  "etag": "BwWiPg2fmDE=",
  "deleted": true
}

C++

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

namespace iam = ::google::cloud::iam;
[](std::string const& name) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::DeleteRoleRequest request;
  request.set_name(name);
  auto response = client.DeleteRole(request);
  if (!response) throw std::runtime_error(response.status().message());
  std::cout << "Role successfully deleted: " << response->DebugString()
            << "\n";
}

C#

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


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

public partial class CustomRoles
{
    public static void DeleteRole(string name, string projectId)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        service.Projects.Roles.Delete(
            $"projects/{projectId}/roles/{name}").Execute();
        Console.WriteLine("Deleted role: " + name);
    }
}

Go

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

import (
	"context"
	"fmt"
	"io"

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

// deleteRole deletes a custom role.
func deleteRole(w io.Writer, projectID, name string) error {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return fmt.Errorf("iam.NewService: %v", err)
	}

	_, err = service.Projects.Roles.Delete("projects/" + projectID + "/roles/" + name).Do()
	if err != nil {
		return fmt.Errorf("Projects.Roles.Delete: %v", err)
	}
	fmt.Fprintf(w, "Deleted role: %v", name)
	return nil
}

Python

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

def delete_role(name, project):
    """Deletes a role."""

    # pylint: disable=no-member
    role = service.projects().roles().delete(
        name='projects/' + project + '/roles/' + name).execute()

    print('Deleted role: ' + name)
    return role

Wenn eine Rolle gelöscht wird, verbleiben alle Rollenbindungen, die sich auf die Rolle beziehen, in Ihren IAM-Richtlinien, haben aber keine Auswirkungen. Sie können eine Rolle innerhalb von 7 Tagen wiederherstellen. Während dieses Zeitraums zeigt die Cloud Console, dass die Rolle gelöscht wurde. Sie können gelöschte Rollen auch programmatisch auflisten. Diese werden jedoch standardmäßig weggelassen.

Nach 7 bis 14 Tagen wird die Rolle dauerhaft gelöscht. Zu diesem Zeitpunkt wird die Rolle nicht mehr auf das Limit von 300 benutzerdefinierten Rollen pro Organisation bzw. 300 benutzerdefinierten Rollen pro Projekt angerechnet.

Das endgültige Löschen dauert 30 Tage. Während dieses Zeitfensters werden die Rolle und alle zugehörigen Bindungen dauerhaft entfernt. Sie können keine neue Rolle mit derselben Rollen-ID erstellen.

Nachdem die Rolle endgültig gelöscht wurde, können Sie bis zu 44 Tage nach der ursprünglichen Löschanfrage eine neue Rolle mit derselben Rollen-ID erstellen.

Benutzerdefinierte Rolle wiederherstellen

Wenn Sie eine Rolle wiederherstellen, wird sie in den vorherigen Zustand zurückversetzt.

Rollen können nur innerhalb von sieben Tagen wiederhergestellt werden. Nach 7 Tagen kann die Rolle jederzeit endgültig gelöscht werden und alle Rollenbindungen, die sich auf die Rolle beziehen, werden entfernt.

Console

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

    Zur Seite „Rollen“

  2. Suchen Sie die Rolle, die Sie wiederherstellen möchten. Klicken Sie dann zuerst auf das Dreipunkt-Menü am Ende der Zeile und anschließend auf Wiederherstellen.

gcloud

Verwenden Sie den Befehl gcloud iam roles undelete, um eine benutzerdefinierte Rolle wiederherzustellen.

  • Führen Sie den folgenden Befehl aus, um eine benutzerdefinierte Rolle auf Organisationsebene wiederherzustellen:

    gcloud iam roles undelete role-id --organization=organization-id
    
  • Führen Sie den folgenden Befehl aus, um eine benutzerdefinierte Rolle auf Projektebene wiederherzustellen:

    gcloud iam roles undelete role-id --project=project-id
    

Die Platzhalterwerte sind im Folgenden beschrieben:

  • role-id ist der Name der Rolle, z. B. myCompanyAdmin.
  • organization-id ist die numerische ID der Organisation, z. B. 123456789012.
  • project-id ist der Name des Projekts, z. B. my-project-id.

Beispiele

Das folgende Beispiel zeigt, wie Sie eine benutzerdefinierte Rolle auf Organisationsebene wiederherstellen:

gcloud iam roles undelete myCompanyAdmin --organization=123456789012

Wenn die Rolle wiederhergestellt wurde, sieht die Ausgabe des Befehls in etwa so aus:

description: My custom role description.
etag: BwVkCAx9W6w=
includedPermissions:
- iam.roles.get
- iam.roles.list
name: organization/123456789012/roles/myCompanyAdmin
stage: ALPHA
title: My Company Admin

Das folgende Beispiel zeigt, wie Sie eine benutzerdefinierte Rolle auf Projektebene wiederherstellen:

gcloud iam roles undelete myCompanyAdmin --project=my-project-id

Wenn die Rolle wiederhergestellt wurde, sieht die Ausgabe des Befehls in etwa so aus:

description: My custom role description.
etag: BwVkCAx9W6w=
includedPermissions:
- iam.roles.get
- iam.roles.list
name: projects/my-project-id/roles/myCompanyAdmin
stage: ALPHA
title: My Company Admin

REST

Mit der Methode roles.undelete wird eine benutzerdefinierte Rolle in einem Projekt oder einer Organisation wiederhergestellt.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • full-role-id: Die vollständige Rollen-ID, einschließlich der Präfixe organizations/, projects/ oder roles/. Beispiel: organizations/123456789012/roles/myCompanyAdmin.

  • etag: Eine Kennzeichnung für eine Version der Rolle. Fügen Sie dieses Feld ein, um Überschreiben von Änderungen an der Rolle zu verhindern.

HTTP-Methode und URL:

POST https://iam.googleapis.com/v1/full-role-id:undelete

JSON-Text anfordern:

{
  "etag": "etag"
}

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

Die Antwort enthält die Definition der wiederhergestellten Rolle.

{
  "name": "projects/my-project/roles/myCompanyAdmin",
  "title": "My Company Admin",
  "description": "My custom role description.",
  "includedPermissions": [
    "iam.roles.get",
    "iam.roles.list"
  ],
  "etag": "BwWiPg2fmDE="
}

C++

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

namespace iam = ::google::cloud::iam;
[](std::string const& name) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::UndeleteRoleRequest request;
  request.set_name(name);
  auto response = client.UndeleteRole(request);
  if (!response) throw std::runtime_error(response.status().message());
  std::cout << "Role successfully undeleted: " << response->DebugString()
            << "\n";
}

C#

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


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

public partial class CustomRoles
{
    public static Role UndeleteRole(string name, string projectId)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        string resource = $"projects/{projectId}/roles/{name}";
        var role = service.Projects.Roles.Undelete(
            new UndeleteRoleRequest(), resource).Execute();
        Console.WriteLine("Undeleted role: " + role.Name);
        return role;
    }
}

Go

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

import (
	"context"
	"fmt"
	"io"

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

// undeleteRole restores a deleted custom role.
func undeleteRole(w io.Writer, projectID, name string) (*iam.Role, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %v", err)
	}

	resource := "projects/" + projectID + "/roles/" + name
	request := &iam.UndeleteRoleRequest{}
	role, err := service.Projects.Roles.Undelete(resource, request).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.Roles.Undelete: %v", err)
	}
	fmt.Fprintf(w, "Undeleted role: %v", role.Name)
	return role, nil
}

Python

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

def undelete_role(name, project):
    """Undeletes a role."""

    # pylint: disable=no-member
    role = service.projects().roles().patch(
        name='projects/' + project + '/roles/' + name,
        body={
            'stage': 'DISABLED'
        }).execute()

    print('Disabled role: ' + role['name'])
    return role

Nächste Schritte