Visualizzazione dei ruoli assegnabili sulle risorse

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

Prima di iniziare

  • Attiva IAM API.

    Abilita l'API

  • Configurare l'autenticazione.

    Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:

    Console

    Quando utilizzi la console Google Cloud per accedere ai servizi e alle API di Google Cloud, non devi configurare l'autenticazione.

    gcloud

    In questa pagina puoi utilizzare gli esempi di gcloud CLI da uno dei seguenti ambienti di sviluppo:

    • Cloud Shell: per utilizzare un terminale online con gcloud CLI già configurato, attiva Cloud Shell.

      In fondo a questa pagina viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. L'inizializzazione della sessione può richiedere alcuni secondi.

    • shell locale: per utilizzare gcloud CLI in un ambiente di sviluppo locale, installa e initialize gcloud CLI.

    C++

    Per utilizzare gli esempi C++ in questa pagina da un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.
    2. Per initialize gcloud CLI, esegui questo comando:

      gcloud init
    3. Crea credenziali di autenticazione locali per il tuo Account Google:

      gcloud auth application-default login

    Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    C#

    Per utilizzare gli esempi .NET in questa pagina da un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.
    2. Per initialize gcloud CLI, esegui questo comando:

      gcloud init
    3. Crea credenziali di autenticazione locali per il tuo Account Google:

      gcloud auth application-default login

    Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    Go

    Per utilizzare gli esempi Go in questa pagina da un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.
    2. Per initialize gcloud CLI, esegui questo comando:

      gcloud init
    3. Crea credenziali di autenticazione locali per il tuo Account Google:

      gcloud auth application-default login

    Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    Java

    Per utilizzare gli esempi Java in questa pagina da un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.
    2. Per initialize gcloud CLI, esegui questo comando:

      gcloud init
    3. Crea credenziali di autenticazione locali per il tuo Account Google:

      gcloud auth application-default login

    Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    Python

    Per utilizzare gli esempi Python in questa pagina da un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.
    2. Per initialize gcloud CLI, esegui questo comando:

      gcloud init
    3. Crea credenziali di autenticazione locali per il tuo Account Google:

      gcloud auth application-default login

    Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init

Ruoli obbligatori

Per ottenere l'autorizzazione necessaria per elencare i ruoli assegnabili, chiedi all'amministratore di concederti il ruolo IAM Revisore della sicurezza (roles/iam.securityReviewer) per la risorsa per cui vuoi elencare i ruoli assegnabili. Per saperne di più 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 avere l'autorizzazione getIamPolicy per la risorsa per cui vuoi elencare i ruoli assegnabili. Ad esempio, per elencare i ruoli assegnabili per un progetto, devi avere l'autorizzazione resourcemanager.projects.getIamPolicy.

Potresti anche essere in grado di ottenere questa autorizzazione con i ruoli personalizzati o altri ruoli predefiniti.

Comprendere quali ruoli sono assegnabili

È possibile concedere un ruolo a partire da una risorsa se questa contiene autorizzazioni per quel tipo di risorsa. Ad esempio, il ruolo storage.admin concede le autorizzazioni alle API storage.buckets.get e storage.objects.get, quindi è assegnabile sui tipi di risorse Bucket Storage e Oggetti Storage.

I ruoli possono anche essere concessi "sopra" i tipi di risorse per cui sono definite le relative autorizzazioni. In altre parole, i ruoli per le risorse di livello inferiore possono essere concessi a una risorsa più in alto nella gerarchia delle risorse Google Cloud. Ad esempio, il ruolo storage.admin può essere concesso anche a livello di progetto o di organizzazione, oltre ai bucket di archiviazione.

Le autorizzazioni concesse da un ruolo interessano solo le risorse al livello specificato o inferiore; non interessano le risorse di livello superiore o peer. Inoltre, quando viene concesso un ruolo per una risorsa, vengono concesse solo le autorizzazioni applicabili alla risorsa specificata, indipendentemente dal nome, dalla descrizione o da altre autorizzazioni del ruolo che contiene. Ad esempio, l'assegnazione del ruolo resourcemanager.organizationAdmin (che concede l'autorizzazione resourcemanager.projects.list) a un utente a livello di progetto le concede solo le autorizzazioni per quel progetto specifico. Non consente loro di elencare o amministrare tutti i progetti dell'organizzazione. Allo stesso modo, l'assegnazione del ruolo compute.admin a una specifica istanza di Compute Engine concede le autorizzazioni solo per quell'istanza, non per altre nel progetto.

Elenco dei ruoli assegnabili

Puoi elencare i ruoli assegnabili utilizzando la console Google Cloud, Google Cloud CLI, l'API IAM o le librerie client IAM.

La console Google Cloud elenca sempre tutti i ruoli assegnabili per la risorsa che stai visualizzando. L'interfaccia a riga di comando di Google Cloud, l'API IAM e le librerie client elencano solo i ruoli assegnabili per le API abilitate.

Console

Per visualizzare i ruoli assegnabili per un progetto, una cartella o un'organizzazione:

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

    Vai alla pagina IAM

  2. Fai clic su Seleziona un progetto nella parte superiore della pagina.

  3. Seleziona il progetto, la cartella o l'organizzazione per cui vuoi visualizzare i ruoli assegnabili.

  4. Fai clic su Concedi l'accesso.

  5. Fai clic su Seleziona un ruolo. Questo menu visualizza tutti i ruoli, inclusi quelli personalizzati, che puoi concedere per questa risorsa.

Per visualizzare i ruoli assegnabili per altri tipi di risorse:

  1. Nella console Google Cloud, vai alla pagina che elenca la risorsa per cui vuoi visualizzare i ruoli assegnabili.

    Ad esempio, per gestire l'accesso a un'istanza Compute Engine, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Seleziona la casella di controllo accanto alla risorsa per la quale vuoi visualizzare i ruoli assegnabili.

  3. Assicurati che il riquadro delle informazioni sia visibile. Se non è visibile, fai clic su Mostra riquadro informazioni.

  4. Fai clic su Aggiungi entità.

  5. Fai clic su Seleziona un ruolo. Questo menu visualizza tutti i ruoli, inclusi gli eventuali ruoli personalizzati, che puoi concedere per questa risorsa.

gcloud

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, è possibile che venga restituito un numero elevato di ruoli. Per limitare i risultati, puoi specificare un'espressione di filtro.

L'output sarà simile al seguente:

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

Per scoprire come installare e utilizzare la libreria client per IAM, vedi librerie client IAM. Per maggiori informazioni, consulta la documentazione di riferimento dell'API IAM C++.

Per eseguire l'autenticazione in IAM, configura Credenziali predefinite dell'applicazione. Per saperne di più, consulta Prima di iniziare.

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#

Per scoprire come installare e utilizzare la libreria client per IAM, vedi librerie client IAM. Per maggiori informazioni, consulta la documentazione di riferimento dell'API IAM C#.

Per eseguire l'autenticazione in IAM, configura Credenziali predefinite dell'applicazione. Per saperne di più, consulta Prima di iniziare.


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, vedi librerie client IAM. Per maggiori informazioni, consulta la documentazione di riferimento dell'API IAM Go.

Per eseguire l'autenticazione in IAM, configura Credenziali predefinite dell'applicazione. Per saperne di più, consulta Prima di iniziare.

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

Per scoprire come installare e utilizzare la libreria client per IAM, vedi librerie client IAM. Per maggiori informazioni, consulta la documentazione di riferimento dell'API IAM Java.

Per eseguire l'autenticazione in IAM, configura Credenziali predefinite dell'applicazione. Per saperne di più, consulta Prima di iniziare.

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, vedi librerie client IAM. Per maggiori informazioni, consulta la documentazione di riferimento dell'API IAM Python.

Per eseguire l'autenticazione in IAM, configura Credenziali predefinite dell'applicazione. Per saperne di più, consulta Prima di iniziare.

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

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

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

  • FULL_RESOURCE_NAME: un URI composto dal nome del servizio e dal percorso della risorsa. Ad esempio, consulta la sezione Nomi completi delle risorse.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
  "fullResourceName": "FULL_RESOURCE_NAME"
}

Per inviare la richiesta, espandi una di queste 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."
    }
  ]
}

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

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

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

Le risorse di livello inferiore hanno un nome completo più dettagliato. Ad esempio, utilizza la query seguente per restituire tutti i ruoli assegnabili in un'istanza di Compute Engine:

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

Passaggi successivi