Visualizzazione dei ruoli assegnabili sulle risorse

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Prima di concedere un ruolo Identity and Access Management (IAM) a un utente per una risorsa, è utile sapere quali ruoli sono disponibili per una determinata risorsa.

Prima di iniziare

  • Attiva IAM API.

    Abilita l'API

Ruoli obbligatori

Per ottenere l'autorizzazione necessaria per elencare i ruoli assegnabili, chiedi all'amministratore di concederti il ruolo IAM Revisore sicurezza (roles/iam.securityReviewer) per la risorsa per cui vuoi elencare i ruoli assegnabili. Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestire l'accesso.

Questo ruolo predefinito contiene le autorizzazioni getIamPolicy per tutti i tipi di risorse. Per elencare i ruoli assegnabili, devi disporre dell'autorizzazione getIamPolicy per la risorsa per cui vuoi elencare i ruoli assegnabili, ad esempio per elencare i ruoli assegnabili per un progetto, devi disporre dell'autorizzazione resourcemanager.projects.getIamPolicy. Potresti anche ottenere questa autorizzazione con ruoli personalizzati o altri ruoli predefiniti.

Capire quali ruoli sono assegnabili

Un ruolo è assegnabile su una risorsa o sopra se contiene autorizzazioni per quel tipo di risorsa. Ad esempio, il ruolo storage.admin concede le autorizzazioni per le API storage.buckets.get e storage.objects.get, perciò è assegnabile ai tipi di risorse Bucket di archiviazione e Oggetti di archiviazione.

Puoi anche concedere i ruoli "sopra" ai tipi di risorse per cui sono definite le relative autorizzazioni. In altre parole, è possibile concedere ruoli per le risorse di livello inferiore su una risorsa di livello superiore nella gerarchia delle risorse di Google Cloud. Ad esempio, il ruolo storage.admin può essere concesso anche a livello di progetto o organizzazione, oltre ai bucket di archiviazione.

Le autorizzazioni concesse da un ruolo influiscono solo sulle risorse al livello specificato o a quelli riportati di seguito; non influiscono sulle risorse di livello superiore o peer. Inoltre, quando un ruolo viene concesso su una risorsa, vengono concesse solo le autorizzazioni applicabili alla risorsa specificata, indipendentemente dal nome, dalla descrizione o dalle altre autorizzazioni del ruolo. Ad esempio, l'assegnazione del ruolo resourcemanager.organizationAdmin (che concede l'autorizzazione resourcemanager.projects.list) a un utente a livello di progetto concede solo le autorizzazioni per il progetto specifico. Non consentirà di elencare o amministrare tutti i progetti nell'organizzazione. Allo stesso modo, l'assegnazione del ruolo compute.admin su un'istanza Compute Engine specifica concede solo le autorizzazioni per quell'istanza, non per altri nel progetto.

Elenco dei ruoli assegnabili

Prima di elencare i ruoli assegnabili, assicurati che il servizio sia stato abilitato nel progetto. Se un servizio non è stato attivato, i suoi ruoli non verranno restituiti.

Console

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai alla pagina IAM

  2. Fai clic sul menu a discesa "Seleziona un progetto" nella parte superiore della pagina.

  3. Seleziona il progetto o l'organizzazione di cui vuoi visualizzare i ruoli.

  4. Fai clic su Concedi l'accesso.

  5. Inserisci l'indirizzo email, il dominio o un altro identificatore dell'entità in Entità.

Il menu a discesa Seleziona un ruolo mostra tutti i ruoli (inclusi eventuali ruoli personalizzati) che puoi concedere all'entità in questa risorsa.

gcloud CLI

Utilizza il comando gcloud iam list-grantable-roles per restituire un elenco di tutti i ruoli che possono essere applicati a una determinata risorsa.

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

A seconda della risorsa desiderata, può essere restituito un numero elevato di ruoli. Per limitare i risultati, puoi specificare un'espressione di filtro.

L'output sarà simile a questo:

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

REST

Il metodo roles.queryGrantableRoles restituisce un elenco di tutti i ruoli assegnabili su una risorsa.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • full-resource-name: un URI composto dal nome del servizio e dal percorso della risorsa. Per esempi, consulta la pagina Nomi completi delle risorse.

Metodo e URL HTTP:

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

Testo JSON richiesta:

{
  "fullResourceName": "full-resource-name"
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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."
    }
  ]
}

C++

Per scoprire come installare e utilizzare la libreria client per IAM, consulta la pagina relativa alle librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM C++.

namespace iam = ::google::cloud::iam;
[](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#

Per scoprire come installare e utilizzare la libreria client per IAM, consulta la pagina relativa alle librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM C#.


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

Per scoprire come installare e utilizzare la libreria client per IAM, consulta la pagina relativa alle librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM Go.

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: %v", err)
	}

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

Java

Per scoprire come installare e utilizzare la libreria client per IAM, consulta la pagina relativa alle librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM Java.

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

Per scoprire come installare e utilizzare la libreria client per IAM, consulta la pagina relativa alle librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM Python.

def view_grantable_roles(full_resource_name):
    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(' ')

Negli esempi precedenti, il nome completo della risorsa è un URI senza schema, composto da un nome di servizio API compatibile con DNS e da un percorso di risorsa.

Ad esempio, per restituire tutti i ruoli assegnabili a un progetto, utilizza:

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

Le risorse di livello inferiore hanno un nome completo e dettagliato. Ad esempio, utilizza questo comando per restituire tutti i ruoli assegnabili su un'istanza di Compute Engine:

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

Passaggi successivi