Visualizzazione dei ruoli assegnabili sulle risorse

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

Prima di iniziare

  • Enable the IAM API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    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 esempi di .NET questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le credenziali predefinite dell'applicazione con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

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

    C++

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

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

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

    Vai

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

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

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

    Java

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

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

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

    Python

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

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

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

    REST

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

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Autenticarsi 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) sulla risorsa per cui vuoi elencare i ruoli concedibili. Per saperne di più sulla concessione dei ruoli, consulta Gestisci 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 è concedibile per i tipi di risorse Bucket Storage e Oggetti Storage.

I ruoli possono anche essere concessi "al di sopra" dei tipi di risorse per cui sono definite le autorizzazioni. In altre parole, i ruoli per le risorse di livello inferiore possono essere concessi a 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 Storage.

Le autorizzazioni concesse da un ruolo influiscono solo sulle risorse al livello specificato o inferiore; non influiscono sulle risorse di livello superiore o peer. Inoltre, quando viene concesso un ruolo su una risorsa, vengono concesse solo le autorizzazioni applicabili alla risorsa specificata, indipendentemente dal nome, dalla descrizione o dalle altre autorizzazioni contenute nel ruolo. Ad esempio, l'assegnazione del ruolo resourcemanager.organizationAdmin (che concede l'autorizzazione resourcemanager.projects.list) a un utente a livello di progetto gli concede autorizzazioni solo per quel progetto specifico. Non gli consentirà di elencare o amministrare tutti i progetti dell'organizzazione. Analogamente, l'assegnazione del ruolo compute.admin a una specifica istanza Compute Engine concede autorizzazioni solo per quell'istanza, non per le 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 concedibili per la risorsa che stai visualizzando. Google Cloud CLI, 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, segui questi 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 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 cui vuoi visualizzare i ruoli assegnabili.

  3. Assicurati che il riquadro 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 mostra tutti i ruoli, inclusi quelli 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, potrebbe 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...

C++

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

Per eseguire l'autenticazione in IAM, configura le 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, consulta la sezione Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM C#.

Per eseguire l'autenticazione in IAM, configura le 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, consulta la sezione Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM Go.

Per eseguire l'autenticazione in IAM, configura le 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, consulta la sezione Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM Java.

Per eseguire l'autenticazione in IAM, configura le 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, consulta la sezione Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM Python.

Per eseguire l'autenticazione in IAM, configura le 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 concedibili per 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 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 risorsa completo è un URI scheme-less 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 il seguente comando per restituire tutti i ruoli concedibili su un'istanza Compute Engine:

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

Passaggi successivi