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

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Informazioni sui ruoli assegnabili

Un ruolo è assegnabile a una risorsa o a un livello superiore se contiene autorizzazioni per quel tipo di risorsa. Ad esempio, il ruolo storage.admin concede autorizzazioni alle API storage.buckets.get e storage.objects.get, pertanto può essere concesso per i tipi di risorse Bucket di archiviazione e Oggetti di archiviazione.

I ruoli possono essere concessi anche "sopra" i tipi di risorse per i quali sono definite le relative autorizzazioni. 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. Ad esempio, il ruolo storage.admin può essere concesso anche a livello di progetto o organizzazione, oltre che per i bucket di archiviazione.

Le autorizzazioni concesse da un ruolo influiscono solo sulle risorse a livello specificato o inferiore e non influiscono sulle 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, l'assegnazione del ruolo resourcemanager.organizationAdmin (che concede l'autorizzazione resourcemanager.projects.list) a un utente a livello di progetto concede le autorizzazioni solo per quel progetto specifico. Non potrà elencare o amministrare tutti i progetti dell'organizzazione. Analogamente, l'assegnazione del ruolo compute.admin a un'istanza Compute Engine specifica concede le autorizzazioni solo per quell'istanza, non per le altre nel progetto.

Elenco dei ruoli assegnabili

Puoi elencare i ruoli concedibili 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 concedibili per la risorsa visualizzata. 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 accesso.

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

Per visualizzare i ruoli assegnabili per altri tipi di risorse, procedi nel seguente modo:

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

    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 cui vuoi visualizzare i ruoli concedibili.

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

  4. Fai clic su Aggiungi principale.

  5. Fai clic su Seleziona un ruolo. Questo menu mostra tutti i ruoli, inclusi eventuali ruoli personalizzati, che puoi concedere in 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, potrebbe essere 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, consulta Librerie client IAM. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API IAM C++.

Per autenticarti in 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 la documentazione di riferimento dell'API IAM C#.

Per autenticarti in IAM, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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, consulta Librerie client IAM. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API IAM Go.

Per autenticarti in IAM, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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, consulta Librerie client IAM. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API IAM Java.

Per autenticarti in 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 autenticarti in IAM, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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 concedibili in una risorsa.

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

  • FULL_RESOURCE_NAME: un URI costituito dal nome del servizio e dal 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 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 del servizio API compatibile con DNS e da un percorso della risorsa.

Ad esempio, per restituire tutti i ruoli concedibili in un progetto, utilizza:

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

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

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

Passaggi successivi