Visualizzazione dei ruoli assegnabili sulle risorse

Prima di concedere un ruolo IAM (Identity and Access Management) a un utente per una risorsa, ti consigliamo di sapere quali ruoli sono disponibili per la concessione in una determinata risorsa.

Prima di iniziare

  • Enable the IAM API.

    Enable the API

  • Configurare l'autenticazione.

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

    Console

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

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

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

    C#

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

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

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

      gcloud auth application-default login

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

    Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    C++

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

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

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

      gcloud auth application-default login

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

    Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    Vai

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

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

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

      gcloud auth application-default login

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

    Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    Java

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

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

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

      gcloud auth application-default login

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

    Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    Python

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

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

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

      gcloud auth application-default login

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

    Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    REST

    Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

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

      gcloud init

    Per saperne di più, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per elencare i ruoli assegnabili, chiedi all'amministratore di concederti Ruolo IAM Revisore sicurezza (roles/iam.securityReviewer) nella risorsa per cui vuoi elencare i ruoli assegnabili. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo contiene le autorizzazioni getIamPolicy per tutti i tipi di risorse. A 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 ruoli per un progetto, è necessaria la resourcemanager.projects.getIamPolicy autorizzazione.

Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati e altri ruoli predefiniti.

Informazioni sui ruoli assegnabili

Un ruolo può essere concesso su o sopra una risorsa se contiene autorizzazioni per del tipo di risorsa. Ad esempio, il ruolo storage.admin concede le autorizzazioni a le API storage.buckets.get e storage.objects.get, quindi è possibile concederle i tipi di risorse Bucket di archiviazione e Oggetti di archiviazione.

I ruoli possono essere concessi anche "sopra" i tipi di risorse che le loro autorizzazioni per i quali vengono definiti i criteri. In altre parole, i ruoli per le risorse di livello inferiore possono essere concessi su una risorsa di livello superiore nella gerarchia delle risorse Google Cloud. Per Ad esempio, il ruolo storage.admin può essere concesso anche a livello di progetto a livello di organizzazione, oltre ai bucket di archiviazione.

Le autorizzazioni concesse da un ruolo interessano solo le risorse al livello specificato oppure sotto; non interessano risorse di livello superiore o pari. Inoltre, quando viene concesso un ruolo a una risorsa, vengono concesse solo le autorizzazioni applicabili alla risorsa in questione, indipendentemente dal nome, dalla descrizione o dalle altre autorizzazioni del ruolo. Ad esempio, assegnando il ruolo resourcemanager.organizationAdmin (che concede l'autorizzazione resourcemanager.projects.list) a un utente nella a livello di progetto concede solo le autorizzazioni per quel progetto specifico. Sarà non consentirgli di elencare o amministrare tutti i progetti dell'organizzazione. Allo stesso modo, l'assegnazione del ruolo compute.admin su uno specifico Compute Engine concede solo le autorizzazioni 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.

Nella console Google Cloud sono sempre elencati tutti i ruoli assegnabili per la risorsa visualizzazione. Google Cloud CLI, l'API IAM e le librerie client elencano solo i ruoli concedibili per le API abilitate.

Console

Per visualizzare i ruoli concedibili per un progetto, una cartella o un'organizzazione, svolgi i seguenti passaggi:

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

  4. Fai clic su Concedi l'accesso.

  5. Fai clic su Seleziona un ruolo. Questo menu mostra tutti i ruoli, inclusi eventuali ruoli 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 al Istanze VM.

    Vai a Istanze VM

  2. Seleziona la casella di controllo accanto alla risorsa che vuoi visualizzare. ruoli assegnabili.

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

  4. Fai clic su Aggiungi principal.

  5. Fai clic su Seleziona un ruolo. Questo menu mostra tutti i ruoli, inclusi eventuali 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 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...

C++

Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per ulteriori informazioni, consulta API IAM C++ documentazione di riferimento.

Per eseguire l'autenticazione su IAM, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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, consulta Librerie client IAM. Per ulteriori informazioni, consulta API IAM C# documentazione di riferimento.

Per eseguire l'autenticazione su IAM, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi 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, consulta Librerie client IAM. Per ulteriori informazioni, consulta API IAM Go documentazione di riferimento.

Per eseguire l'autenticazione su IAM, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi 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, consulta Librerie client IAM. Per ulteriori informazioni, consulta API IAM Java documentazione di riferimento.

Per eseguire l'autenticazione su IAM, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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, consulta Librerie client IAM. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API IAM Python.

Per eseguire l'autenticazione su IAM, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi 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

La 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 da il nome del servizio e il percorso della risorsa. Per esempi, consulta 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 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."
    }
  ]
}

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 in un progetto, usa:

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

Le risorse di livello inferiore hanno un nome completo più dettagliato. Per di esempio, usa il comando seguente per restituire tutti i ruoli assegnabili su un istanza:

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

Passaggi successivi