Gestisci l'accesso a progetti, cartelle e organizzazioni

In questa pagina viene descritto come concedere, modificare e revocare l'accesso ai progetti. cartelle e organizzazioni. Per scoprire come gestire l'accesso ad altre risorse, consulta le seguenti guide:

In Identity and Access Management (IAM), l'accesso viene concesso tramite criteri di autorizzazione, inoltre noti come criteri IAM. Un criterio di autorizzazione è associato a una risorsa Google Cloud. Ogni criterio di autorizzazione contiene una raccolta di associazioni di ruoli che associano una o più entità, ad esempio utenti o account di servizio, a un ruolo IAM. Queste associazioni di ruoli concedono ruoli specificati alle entità, sia sulla risorsa cui il criterio di autorizzazione collegati e su tutti i discendenti di quella risorsa. Per ulteriori informazioni sui criteri di autorizzazione, consulta Informazioni sui criteri di autorizzazione.

Puoi gestire l'accesso a progetti, cartelle e organizzazioni con la console Google Cloud, Google Cloud CLI, l'API REST o le librerie client di Resource Manager.

Prima di iniziare

  • Enable the Resource Manager 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 una località dell'ambiente di sviluppo, installare e inizializzare gcloud CLI quindi configura 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 a riga di comando gcloud, 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 a riga di comando gcloud, 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, vedi 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 ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Ruoli obbligatori

Quando crei un progetto, una cartella o un'organizzazione, vieni automaticamente un ruolo che ti consente di gestire l'accesso a quella risorsa. Per maggiori informazioni informazioni, consulta Criteri predefiniti.

Se non hai creato tu il progetto, la cartella o l'organizzazione, assicurati di avere i ruoli necessari per gestire l'accesso a quella risorsa.

Per ottenere le autorizzazioni necessarie per gestire l'accesso a un progetto, a una cartella o a un'organizzazione, chiedi all'amministratore di concederti i seguenti ruoli IAM per la risorsa per cui vuoi gestire l'accesso (progetto, cartella o organizzazione):

Questi ruoli predefiniti le autorizzazioni necessarie per gestire l'accesso a un progetto, a una cartella o a un'organizzazione. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per gestire l'accesso a un progetto, a una cartella o a un'organizzazione sono necessarie le seguenti autorizzazioni:

  • Per gestire l'accesso ai progetti:
    • resourcemanager.projects.getIamPolicy
    • resourcemanager.projects.setIamPolicy
  • Per gestire l'accesso alle cartelle:
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
  • Per gestire l'accesso alle organizzazioni:
    • resourcemanager.organizations.getIamPolicy
    • resourcemanager.organizations.setIamPolicy

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

Visualizza l'accesso corrente

Puoi visualizzare chi ha accesso al tuo progetto, alla tua cartella o alla tua organizzazione utilizzando la console Google Cloud, gcloud CLI, l'API REST o Librerie client di Resource Manager.

Console

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

    Vai a IAM

  2. Seleziona un progetto, una cartella o un'organizzazione.

    La console Google Cloud elenca tutti i principali a cui sono stati assegnati ruoli nel progetto, nella cartella o nell'organizzazione. Questo elenco include i principali che hanno ereditato i ruoli nella risorsa dalle risorse principali. Per ulteriori informazioni sull'ereditarietà dei criteri, consulta Eredità dei criteri e gerarchia delle risorse.

  3. (Facoltativo) Per visualizzare le concessioni di ruoli per gli agenti di servizio, seleziona la casella di controllo Includi concessioni dei ruoli fornite da Google.

gcloud

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

  2. Per vedere chi ha accesso al tuo progetto, alla tua cartella o alla tua organizzazione, richiedi l'autorizzazione criterio per la risorsa. Per scoprire come interpretare i criteri di autorizzazione, consulta Informazioni sui criteri di autorizzazione.

    Per ottenere il criterio di autorizzazione per la risorsa, esegui il comando get-iam-policy per la risorsa:

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Specifica i seguenti valori:

    • RESOURCE_TYPE: il tipo di risorsa che vuoi accesso in visualizzazione. Utilizza uno di questi valori: projects, resource-manager folders o organizations.

    • RESOURCE_ID: il tuo progetto, la tua cartella e il tuo progetto Google Cloud o ID organizzazione. Gli ID progetto sono alfanumerici, my-project. Gli ID cartella e organizzazione sono numerici, ad esempio 123456789012.

    • FORMAT: il formato desiderato per il criterio. Utilizza json o yaml.

    • PATH: il percorso di un nuovo file di output per il criterio.

    Ad esempio, il seguente comando recupera il criterio per il progetto my-project e la salva nella tua home directory in formato JSON:

    gcloud projects get-iam-policy my-project --format=json > ~/policy.json

C#

Per eseguire l'autenticazione su Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta la sezione Librerie client di Resource Manager.

Per vedere chi ha accesso al tuo progetto, alla tua cartella o alla tua organizzazione, richiedi l'autorizzazione criterio per la risorsa. Per scoprire come interpretare i criteri di autorizzazione, consulta Informazioni sui criteri di autorizzazione.

L'esempio seguente mostra come ottenere il criterio di autorizzazione per un progetto. A scopri come ottenere il criterio di autorizzazione per una cartella o un'organizzazione, rivedi il Libreria client di Resource Manager documentazione per il tuo linguaggio di programmazione.


using Google.Apis.Auth.OAuth2;
using Google.Apis.CloudResourceManager.v1;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy GetPolicy(string projectId)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
        var service = new CloudResourceManagerService(
            new CloudResourceManagerService.Initializer
            {
                HttpClientInitializer = credential
            });

        var policy = service.Projects.GetIamPolicy(new GetIamPolicyRequest(),
            projectId).Execute();
        return policy;
    }
}

Java

Per eseguire l'autenticazione su Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta la sezione Librerie client di Resource Manager.

Per vedere chi ha accesso al tuo progetto, alla tua cartella o alla tua organizzazione, richiedi l'autorizzazione criterio per la risorsa. Per scoprire come interpretare i criteri di autorizzazione, consulta Informazioni sui criteri di autorizzazione.

L'esempio seguente mostra come ottenere il criterio di autorizzazione per un progetto. A scopri come ottenere il criterio di autorizzazione per una cartella o un'organizzazione, rivedi il Libreria client di Resource Manager documentazione per il tuo linguaggio di programmazione.

import com.google.cloud.resourcemanager.v3.ProjectsClient;
import com.google.iam.admin.v1.ProjectName;
import com.google.iam.v1.GetIamPolicyRequest;
import com.google.iam.v1.Policy;
import java.io.IOException;

public class GetProjectPolicy {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your project ID.
    String projectId = "your-project-id";

    getProjectPolicy(projectId);
  }

  // Gets a project's policy.
  public static Policy getProjectPolicy(String projectId) throws IOException {
    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (ProjectsClient projectsClient = ProjectsClient.create()) {
      GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
              .setResource(ProjectName.of(projectId).toString())
              .build();
      return projectsClient.getIamPolicy(request);
    }
  }
}

Python

Per autenticarti in Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta la sezione Librerie client di Resource Manager.

Per vedere chi ha accesso al tuo progetto, alla tua cartella o alla tua organizzazione, ottieni il criterio di autorizzazione per la risorsa. Per scoprire come interpretare i criteri di autorizzazione, consulta Comprendere i criteri di autorizzazione.

L'esempio seguente mostra come ottenere il criterio di autorizzazione per un progetto. A scopri come ottenere il criterio di autorizzazione per una cartella o un'organizzazione, rivedi il Libreria client di Resource Manager documentazione per il tuo linguaggio di programmazione.

from google.cloud import resourcemanager_v3
from google.iam.v1 import iam_policy_pb2, policy_pb2


def get_project_policy(project_id: str) -> policy_pb2.Policy:
    """
    Get policy for project.

    project_id: ID or number of the Google Cloud project you want to use.
    """

    client = resourcemanager_v3.ProjectsClient()
    request = iam_policy_pb2.GetIamPolicyRequest()
    request.resource = f"projects/{project_id}"

    policy = client.get_iam_policy(request)
    print(f"Policy retrieved: {policy}")

    return policy

REST

Per vedere chi ha accesso al tuo progetto, alla tua cartella o alla tua organizzazione, ottieni il criterio di autorizzazione per la risorsa. Per scoprire come interpretare i criteri di autorizzazione, consulta Informazioni sui criteri di autorizzazione.

L'API Resource Manager getIamPolicy ottiene il criterio di autorizzazione di un progetto, una cartella o un'organizzazione.

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

  • API_VERSION: la versione dell'API da utilizzare. Per progetti e organizzazioni, usa v1. Per le cartelle, usa v2.
  • RESOURCE_TYPE: il tipo di risorsa la cui il criterio che vuoi gestire. Utilizza il valore projects, folders oppure organizations.
  • RESOURCE_ID: l'ID del tuo progetto, della tua organizzazione o della tua cartella Google Cloud. Gli ID progetto sono stringhe alfanumeriche, comemy-project. Gli ID cartella e organizzazione sono numerici, ad esempio 123456789012.
  • POLICY_VERSION: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione del criterio 3. Consulta la sezione Specificare una versione del criterio quando si riceve un criterio per maggiori dettagli.

Metodo HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy

Corpo JSON della richiesta:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta contiene il criterio di autorizzazione della risorsa. Ad esempio:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:owner@example.com"
      ]
    }
  ]
}

Concedere o revocare un singolo ruolo

Puoi utilizzare la console Google Cloud e gcloud CLI per concedi o revoca un singolo ruolo per una singola entità, senza modificare automaticamente il criterio di autorizzazione della risorsa. I tipi comuni di entità includono Account Google, account di servizio, gruppi Google e domini. Per un elenco di tutti i tipi principali, consulta Concetti correlati all'identità.

In genere, le modifiche alle norme vengono applicate entro 2 minuti. Tuttavia, in alcuni casi, la propagazione delle modifiche nel sistema può richiedere almeno 7 minuti.

Se hai bisogno di aiuto per identificare il ruolo predefinito più appropriato, consulta Scegliere i ruoli predefiniti.

Concedi un singolo ruolo

Per concedere un singolo ruolo a un'entità:

Console

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

    Vai a IAM

  2. Seleziona un progetto, una cartella o un'organizzazione.

  3. Seleziona un'entità a cui concedere un ruolo:

    • Per concedere un ruolo a un'entità che dispone già di altri ruoli nella risorsa, trova una riga contenente l'entità, fai clic Modifica entità nella riga corrispondente, e fai clic su Aggiungi un altro ruolo.

      Per concedere un ruolo a un agente di servizio, seleziona la casella di controllo Includi concessioni di ruoli fornite da Google per visualizzare il relativo indirizzo email.

    • Per concedere un ruolo a un'entità che non ha ruoli esistenti nella risorsa, fai clic su Concedi accesso, quindi inserisci l'indirizzo email o un altro identificatore dell'entità.

  4. Seleziona un ruolo da concedere dall'elenco a discesa. Per le best practice di sicurezza, scegli un ruolo che includa solo le autorizzazioni necessarie all'entità.

  5. (Facoltativo) Aggiungi una condizione al ruolo.

  6. Fai clic su Salva. All'entità viene concesso il ruolo nella risorsa.

Per concedere un ruolo a un'entità per più di un progetto, una cartella organizzazione, procedi nel seguente modo:

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestione delle risorse

  2. Seleziona tutte le risorse per cui vuoi concedere le autorizzazioni.

  3. Se il riquadro informativo non è visibile, fai clic su Mostra riquadro informazioni. Quindi, fai clic su Autorizzazioni.

  4. Seleziona un'entità a cui concedere un ruolo:

    • Per concedere un ruolo a un'entità che dispone già di altri ruoli, individua una riga contenente l'entità, fai clic Modifica entità nella riga corrispondente, e fai clic su Aggiungi un altro ruolo.

    • Per concedere un ruolo a un'entità che non dispone già di altri ruoli, fai clic su Aggiungi entità, quindi inserisci l'indirizzo email o un altro identificatore dell'entità.

  5. Seleziona un ruolo da concedere dall'elenco a discesa.

  6. (Facoltativo) Aggiungi una condizione al ruolo.

  7. Fai clic su Salva. All'entità viene concesso il ruolo selezionato in ciascuno risorse selezionate.

gcloud

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

  2. La add-iam-policy-binding consente di concedere rapidamente un ruolo a un'entità.

    Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

    • RESOURCE_TYPE: il tipo di risorsa che vuoi gestire l'accesso. Utilizza projects, resource-manager folders o organizations.

    • RESOURCE_ID: l'ID del tuo progetto, della tua cartella o della tua organizzazione Google Cloud. Gli ID progetto sono alfanumerici, ad esempio my-project. Gli ID cartella e organizzazione sono numerici, ad esempio 123456789012.

    • PRINCIPAL: un identificatore per il principale o il membro, solitamente nella forma seguente: PRINCIPAL_TYPE:ID. Ad esempio: user:my-user@example.com. Per un elenco completo dei valori che può assumere PRINCIPAL, consulta la documentazione di riferimento sull'associazione dei criteri.

      Per il tipo di principale user, il nome di dominio nell'identificatore deve essere un dominio Google Workspace o un dominio Cloud Identity. Per scoprire come impostare un dominio Cloud Identity, consulta panoramica di Cloud Identity.

    • ROLE_NAME: il nome del ruolo che vuoi da revocare. Utilizza uno dei seguenti formati:

      • Ruoli predefiniti: roles/SERVICE.IDENTIFIER
      • Ruoli personalizzati a livello di progetto: projects/PROJECT_ID/roles/IDENTIFIER
      • Ruoli personalizzati a livello di organizzazione: organizations/ORG_ID/roles/IDENTIFIER

      Per un elenco dei ruoli predefiniti, consulta la sezione Informazioni sui ruoli.

    • CONDITION: la condizione da aggiungere al ruolo associazione. Se non vuoi aggiungere una condizione, utilizza il valore None. Per Per ulteriori informazioni sulle condizioni, consulta la panoramica delle condizioni.

    Esegui il seguente comando:

    Linux, macOS o Cloud Shell

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID \
        --member=PRINCIPAL --role=ROLE_NAME \
        --condition=CONDITION

    Windows (PowerShell)

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID `
        --member=PRINCIPAL --role=ROLE_NAME `
        --condition=CONDITION

    Windows (cmd.exe)

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID ^
        --member=PRINCIPAL --role=ROLE_NAME ^
        --condition=CONDITION

    La risposta contiene il criterio IAM aggiornato.

Revocare un singolo ruolo

Per revocare un singolo ruolo da un'entità, procedi nel seguente modo:

Console

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

    Vai a IAM

  2. Seleziona un progetto, una cartella o un'organizzazione.

  3. Individua la riga contenente l'entità di cui vuoi revocare l'accesso. Quindi, fai clic su Modifica entità nella corrispondente riga.

  4. Fai clic sul pulsante Elimina per il ruolo che vuoi revocare, quindi fai clic su Salva.

gcloud

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

  2. Per revocare rapidamente un ruolo da un utente, esegui il comando remove-iam-policy-binding :

    gcloud RESOURCE_TYPE remove-iam-policy-binding RESOURCE_ID 
    --member=PRINCIPAL --role=ROLE_NAME

    Fornisci i seguenti valori:

    • RESOURCE_TYPE: il tipo di risorsa che vuoi gestire l'accesso. Utilizza projects, resource-manager folders o organizations.

    • RESOURCE_ID: il tuo progetto, la tua cartella e il tuo progetto Google Cloud o ID organizzazione. Gli ID progetto sono alfanumerici, ad esempio my-project. Gli ID cartella e organizzazione sono numerici, ad esempio 123456789012.

    • PRINCIPAL: un identificatore per il principale o il membro, che in genere ha la seguente forma: PRINCIPAL_TYPE:ID. Ad esempio, user:my-user@example.com. Per un elenco completo dei valori che può assumere PRINCIPAL, consulta la documentazione di riferimento sull'associazione dei criteri.

      Per il tipo di principale user, il nome di dominio nell'identificatore deve essere un dominio Google Workspace o un dominio Cloud Identity. Per scoprire come impostare un dominio Cloud Identity, consulta panoramica di Cloud Identity.

    • ROLE_NAME: il nome del ruolo che vuoi da revocare. Utilizza uno dei seguenti formati:

      • Ruoli predefiniti: roles/SERVICE.IDENTIFIER
      • Ruoli personalizzati a livello di progetto: projects/PROJECT_ID/roles/IDENTIFIER
      • Ruoli personalizzati a livello di organizzazione: organizations/ORG_ID/roles/IDENTIFIER

      Per un elenco dei ruoli predefiniti, consulta Informazioni sui ruoli.

    Ad esempio, per revocare all'utente il ruolo Autore progetto my-user@example.com per il progetto my-project:

    gcloud projects remove-iam-policy-binding my-project 
    --member=user:my-user@example.com --role=roles/resourcemanager.projectCreator

Per assicurarti di non revocare i ruoli necessari, puoi attivare i suggerimenti per i rischi legati alle modifiche. I consigli sui rischi relativi alle modifiche generano avvisi quando provi a revocare i ruoli a livello di progetto identificati da Google Cloud come importanti.

Concedi o revoca più ruoli utilizzando la console Google Cloud

Puoi utilizzare la console Google Cloud per concedere e revocare più ruoli per un singolo entità:

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

    Vai a IAM

  2. Seleziona un progetto, una cartella o un'organizzazione.

  3. Seleziona l'entità di cui vuoi modificare i ruoli:

    • Per modificare i ruoli di un'entità che ne ha già nella risorsa, trova una riga contenente l'entità, fai clic su Modifica entità nella riga e poi su Aggiungi un altro ruolo.

      Per modificare i ruoli di un agente di servizio, seleziona la casella di controllo Includi concessioni di ruoli fornite da Google per visualizzarne l'indirizzo email.

    • Per concedere ruoli a un'entità che non ha ruoli nel risorsa, fai clic su Concedi l'accesso, poi inserisci l'indirizzo email o un altro nome dell'entità identificativo dell'utente.

  4. Modifica i ruoli dell'entità:

    • Per concedere un ruolo a un'entità che non ha ruoli esistenti nel risorsa, fai clic su Seleziona un ruolo, quindi seleziona un ruolo da concedere dall'elenco a discesa.
    • Per concedere un ruolo aggiuntivo al principale, fai clic su Aggiungi un altro ruolo, quindi seleziona un ruolo da concedere dall'elenco a discesa.
    • Per sostituire uno dei ruoli dell'entità con un altro ruolo, fai clic sull'icona ruolo esistente, quindi scegli un ruolo diverso da concedere dall'elenco a discesa dall'elenco di lettura.
    • Per revocare uno dei ruoli dell'entità, fai clic sul pulsante Elimina per ogni ruolo da eliminare revocarlo.

    Puoi anche aggiungere una condizione a un ruolo, modificare il relativo di un ruolo o di rimuovere la dell'oggetto in questione.

  5. Fai clic su Salva.

Concedi o revoca più ruoli in modo programmatico

Apportare modifiche all'accesso su larga scala che comportino la concessione e la revoca di più ruoli per più entità, usa il pattern read-modify-write per aggiornare criterio di autorizzazione della risorsa:

  1. Leggi il criterio di autorizzazione corrente chiamando getIamPolicy().
  2. Modifica il criterio di autorizzazione mediante un editor di testo o in modo programmatico per aggiungere o rimuovere eventuali associazioni di principi o ruoli.
  3. Scrivi il criterio di autorizzazione aggiornato chiamando setIamPolicy().

Puoi utilizzare l'interfaccia a riga di comando gcloud, l'API REST o le librerie client di Resource Manager per aggiornare il criterio di autorizzazione.

In genere, le modifiche ai criteri diventano effettive entro 2 minuti. Tuttavia, in alcuni casi, la propagazione delle modifiche nel sistema può richiedere almeno 7 minuti.

Ottenere il criterio di autorizzazione corrente

gcloud

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

  2. Per ottenere il criterio di autorizzazione per la risorsa, esegui il comando get-iam-policy per la risorsa:

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Specifica i seguenti valori:

    • RESOURCE_TYPE: il tipo di risorsa che vuoi per cui ottenere il criterio di autorizzazione. Utilizza uno dei seguenti valori: projects, resource-manager folders o organizations.

    • RESOURCE_ID: l'ID del tuo progetto, della tua cartella o della tua organizzazione Google Cloud. Gli ID progetto sono alfanumerici, my-project. Gli ID cartella e organizzazione sono numerici, ad esempio 123456789012.

    • FORMAT: il formato desiderato per il criterio di autorizzazione. Utilizza le funzionalità di json o yaml.

    • PATH: il percorso di un nuovo file di output per l'elemento allow .

    Ad esempio, il seguente comando recupera il criterio di autorizzazione per il progetto my-project e lo salva nella home directory in formato JSON:

    gcloud projects get-iam-policy my-project --format json > ~/policy.json

C#

Per autenticarti in Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, vedi Client Resource Manager librerie.

L'esempio seguente mostra come ottenere il criterio di autorizzazione per un progetto. A scopri come ottenere il criterio di autorizzazione di una cartella o un'organizzazione, rivedi il Libreria client di Resource Manager documentazione per il tuo linguaggio di programmazione.


using Google.Apis.Auth.OAuth2;
using Google.Apis.CloudResourceManager.v1;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy GetPolicy(string projectId)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
        var service = new CloudResourceManagerService(
            new CloudResourceManagerService.Initializer
            {
                HttpClientInitializer = credential
            });

        var policy = service.Projects.GetIamPolicy(new GetIamPolicyRequest(),
            projectId).Execute();
        return policy;
    }
}

Java

Per autenticarti in Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta la sezione Librerie client di Resource Manager.

L'esempio seguente mostra come ottenere il criterio di autorizzazione per un progetto. Per scoprire come ottenere il criterio di autorizzazione di una cartella o un'organizzazione, consulta la documentazione della libreria client Resource Manager per il tuo linguaggio di programmazione.

import com.google.cloud.resourcemanager.v3.ProjectsClient;
import com.google.iam.admin.v1.ProjectName;
import com.google.iam.v1.GetIamPolicyRequest;
import com.google.iam.v1.Policy;
import java.io.IOException;

public class GetProjectPolicy {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your project ID.
    String projectId = "your-project-id";

    getProjectPolicy(projectId);
  }

  // Gets a project's policy.
  public static Policy getProjectPolicy(String projectId) throws IOException {
    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (ProjectsClient projectsClient = ProjectsClient.create()) {
      GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
              .setResource(ProjectName.of(projectId).toString())
              .build();
      return projectsClient.getIamPolicy(request);
    }
  }
}

Python

Per eseguire l'autenticazione su Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, vedi Client Resource Manager librerie.

L'esempio seguente mostra come ottenere il criterio di autorizzazione per un progetto. A scopri come ottenere il criterio di autorizzazione di una cartella o un'organizzazione, rivedi il Libreria client di Resource Manager documentazione per il tuo linguaggio di programmazione.

from google.cloud import resourcemanager_v3
from google.iam.v1 import iam_policy_pb2, policy_pb2


def get_project_policy(project_id: str) -> policy_pb2.Policy:
    """
    Get policy for project.

    project_id: ID or number of the Google Cloud project you want to use.
    """

    client = resourcemanager_v3.ProjectsClient()
    request = iam_policy_pb2.GetIamPolicyRequest()
    request.resource = f"projects/{project_id}"

    policy = client.get_iam_policy(request)
    print(f"Policy retrieved: {policy}")

    return policy

REST

Il metodo getIamPolicy dell'API Resource Manager recupera il criterio di autorizzazione di un progetto, di una cartella o di un'organizzazione.

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

  • API_VERSION: la versione dell'API da utilizzare. Per progetti e organizzazioni, usa v1. Per le cartelle, usa v2.
  • RESOURCE_TYPE: il tipo di risorsa la cui il criterio che vuoi gestire. Utilizza il valore projects, folders oppure organizations.
  • RESOURCE_ID: l'ID del tuo progetto, della tua organizzazione o della tua cartella Google Cloud. Gli ID progetto sono stringhe alfanumeriche, comemy-project. Gli ID cartella e organizzazione sono numerici, ad esempio 123456789012.
  • POLICY_VERSION: la versione del criterio da utilizzare restituito. Le richieste devono specificare la versione più recente dei criteri, ovvero la versione 3. Per maggiori dettagli, consulta la sezione Specificare una versione delle norme al momento dell'ottenimento di una norma.

Metodo HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy

Corpo JSON della richiesta:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta contiene il criterio di autorizzazione della risorsa. Ad esempio:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:owner@example.com"
      ]
    }
  ]
}

Salva la risposta in un file del tipo appropriato (json o yaml).

Modifica il criterio di autorizzazione

Modifica la copia locale del criterio di autorizzazione della risorsa in modo programmatico o mediante un editor di testo in modo che rifletta i ruoli che vuoi concedere o revocare.

Per evitare di sovrascrivere altre modifiche, non modificare o rimuovere il campo etag del criterio di autorizzazione. Il campo etag identifica lo stato corrente del criterio di autorizzazione. Quando imposti il criterio di autorizzazione aggiornato, IAM confronta il valore etag nella richiesta con il etag esistente e scrive il criterio di autorizzazione solo se i valori corrispondono.

Per modificare i ruoli concessi da un criterio di autorizzazione, devi modificare il ruolo associazioni nel criterio di autorizzazione. Le associazioni di ruoli hanno il seguente formato:

{
  "role": "ROLE_NAME",
  "members": [
    "PRINCIPAL_1",
    "PRINCIPAL_2",
    ...
    "PRINCIPAL_N"
  ],
  "conditions:" {
    CONDITIONS
  }
}

I segnaposto hanno i seguenti valori:

  • ROLE_NAME: il nome del ruolo che vuoi assegnare concessione. Utilizza uno dei seguenti formati:

    • Ruoli predefiniti: roles/SERVICE.IDENTIFIER
    • Ruoli personalizzati a livello di progetto: projects/PROJECT_ID/roles/IDENTIFIER
    • Ruoli personalizzati a livello di organizzazione: organizations/ORG_ID/roles/IDENTIFIER

    Per un elenco dei ruoli predefiniti, consulta Informazioni sui ruoli.

  • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificatori per le entità che a cui vuoi concedere il ruolo.

    Di solito, gli identificatori entità hanno il seguente formato: PRINCIPAL-TYPE:ID. Ad esempio: user:my-user@example.com. Per un elenco completo dei valori che PRINCIPAL può avere, consulta Riferimento all'associazione dei criteri.

    Per il tipo di entità user, il nome di dominio nell'identificatore deve essere un dominio Google Workspace o Cloud Identity. Per scoprire come configurare un dominio Cloud Identity, consulta la panoramica di Cloud Identity.

  • CONDITIONS: facoltativo. Qualsiasi condizione che specificano quando verrà concesso l'accesso.

Concedi un ruolo

Per concedere ruoli alle entità, modifica le associazioni di ruoli nel criterio di autorizzazione. Per scoprire quali ruoli puoi concedere, vedi Informazioni sui ruoli o visualizza i ruoli assegnabili per la risorsa. Se hai bisogno di aiuto per identificare i ruoli predefiniti più appropriati, consulta la sezione Scegliere i ruoli predefiniti.

Se vuoi, puoi utilizzare le condizioni per concedere i ruoli solo quando vengono soddisfatti determinati requisiti.

Per concedere un ruolo già incluso nel criterio di autorizzazione, aggiungi l'entità a un'associazione di ruolo esistente:

gcloud

Modifica il criterio di autorizzazione restituito aggiungendo l'entità a un ruolo esistente associazione. Questa modifica avrà effetto solo dopo che avrai impostare il criterio di autorizzazione aggiornato.

Ad esempio, immagina che il criterio di autorizzazione contenga la seguente associazione di ruoli, che concede il ruolo Revisore sicurezza (roles/iam.securityReviewer) a kai@example.com:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "user:kai@example.com"
  ]
}

Per concedere lo stesso ruolo a raha@example.com, aggiungi raha@example.com al associazione di ruoli esistente:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

C#

Per autenticarti in Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, vedi Client Resource Manager librerie.


using System.Linq;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy AddMember(Policy policy, string role, string member)
    {
        var binding = policy.Bindings.First(x => x.Role == role);
        binding.Members.Add(member);
        return policy;
    }
}

Go

Per eseguire l'autenticazione su Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta la sezione Librerie client di Resource Manager.

import (
	"fmt"
	"io"

	"google.golang.org/api/iam/v1"
)

// addMember adds a member to a role binding.
func addMember(w io.Writer, policy *iam.Policy, role, member string) {
	for _, binding := range policy.Bindings {
		if binding.Role != role {
			continue
		}
		for _, m := range binding.Members {
			if m != member {
				continue
			}
			fmt.Fprintf(w, "Role %q found. Member already exists.\n", role)
			return
		}
		binding.Members = append(binding.Members, member)
		fmt.Fprintf(w, "Role %q found. Member added.\n", role)
		return
	}
	fmt.Fprintf(w, "Role %q not found. Member not added.\n", role)
}

Java

Per eseguire l'autenticazione su Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta la sezione Librerie client di Resource Manager.

import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.util.ArrayList;
import java.util.List;

public class AddMember {
  public static void main(String[] args) {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/existing-role";
    // TODO: Replace with your member.
    String member = "user:member-to-add@example.com";

    addMember(policy, role, member);
  }

  // Adds a member to a pre-existing role.
  public static Policy addMember(Policy policy, String role, String member) {
    List<Binding> newBindingsList = new ArrayList<>();

    for (Binding b : policy.getBindingsList()) {
      if (b.getRole().equals(role)) {
        newBindingsList.add(b.toBuilder().addMembers(member).build());
      } else {
        newBindingsList.add(b);
      }
    }

    // Update the policy to add the member.
    Policy updatedPolicy = policy.toBuilder()
            .clearBindings()
            .addAllBindings(newBindingsList)
            .build();

    System.out.println("Added member: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

Python

Per autenticarti in Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, vedi Client Resource Manager librerie.

from google.iam.v1 import policy_pb2
from snippets.get_policy import get_project_policy
from snippets.set_policy import set_project_policy


def modify_policy_add_member(
    project_id: str, role: str, member: str
) -> policy_pb2.Policy:
    """
    Add a member to certain role in project policy.

    project_id: ID or number of the Google Cloud project you want to use.
    role: role to which member need to be added.
    member: The principals requesting access.

    Possible format for member:
        * user:{emailid}
        * serviceAccount:{emailid}
        * group:{emailid}
        * deleted:user:{emailid}?uid={uniqueid}
        * deleted:serviceAccount:{emailid}?uid={uniqueid}
        * deleted:group:{emailid}?uid={uniqueid}
        * domain:{domain}
    """
    policy = get_project_policy(project_id)

    for bind in policy.bindings:
        if bind.role == role:
            bind.members.append(member)
            break

    return set_project_policy(project_id, policy)

REST

Modifica il criterio di autorizzazione restituito aggiungendo l'entità a un ruolo esistente associazione. Questa modifica non verrà applicata finché non imposti il criterio di autorizzazione aggiornato.

Ad esempio, immagina che il criterio di autorizzazione contenga la seguente associazione di ruoli, che concede il ruolo di revisore della sicurezza (roles/iam.securityReviewer) a kai@example.com:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "user:kai@example.com"
  ]
}

Per concedere lo stesso ruolo a raha@example.com, aggiungi raha@example.com all'associazione di ruolo esistente:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Per concedere un ruolo non ancora incluso nel criterio di autorizzazione, aggiungi un nuovo ruolo associazione:

gcloud

Modifica il criterio di autorizzazione aggiungendo una nuova associazione di ruoli che conceda il ruolo al componente principale. Questa modifica non verrà applicata finché non imposti il criterio di autorizzazione aggiornato.

Ad esempio, per concedere il ruolo Amministratore Compute Storage (roles/compute.storageAdmin) a raha@example.com, aggiungi il ruolo seguente associazione all'array bindings per il criterio di autorizzazione:

{
  "role": "roles/compute.storageAdmin",
  "members": [
    "user:raha@example.com"
  ]
}

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, vedi Prima di iniziare.

Per autenticarti in Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta la sezione Librerie client di Resource Manager.


using System.Collections.Generic;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy AddBinding(Policy policy, string role, string member)
    {
        var binding = new Binding
        {
            Role = role,
            Members = new List<string> { member }
        };
        policy.Bindings.Add(binding);
        return policy;
    }
}

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

Per eseguire l'autenticazione su Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta la sezione Librerie client di Resource Manager.


import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.util.Collections;
import java.util.List;

public class AddBinding {
  public static void main(String[] args) {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy: GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/role-to-add";
    // TODO: Replace with your members.
    List<String> members = Collections.singletonList("user:member-to-add@example.com");

    addBinding(policy, role, members);
  }

  // Adds a member to a role.
  public static Policy addBinding(Policy policy, String role, List<String> members) {
    Binding binding = Binding.newBuilder()
            .setRole(role)
            .addAllMembers(members)
            .build();

    // Update bindings for the policy.
    Policy updatedPolicy = policy.toBuilder().addBindings(binding).build();

    System.out.println("Added binding: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

Python

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

Per eseguire l'autenticazione su IAM, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.

Per eseguire l'autenticazione su Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, vedi Client Resource Manager librerie.

def modify_policy_add_role(policy: dict, role: str, member: str) -> dict:
    """Adds a new role binding to a policy."""

    binding = {"role": role, "members": [member]}
    policy["bindings"].append(binding)
    print(policy)
    return policy

REST

Modifica il criterio di autorizzazione aggiungendo una nuova associazione di ruolo che conceda il ruolo all'entità. Questa modifica avrà effetto solo dopo che avrai impostare il criterio di autorizzazione aggiornato.

Ad esempio, per concedere il ruolo Amministratore Compute Storage (roles/compute.storageAdmin) a raha@example.com, aggiungi il ruolo seguente associazione all'array bindings per il criterio di autorizzazione:

{
  "role": "roles/compute.storageAdmin",
  "members": [
    "user:raha@example.com"
  ]
}

Puoi concedere solo i ruoli relativi ai servizi API attivati. Se un servizio, come Compute Engine, non è attivo, non puoi concedere ruoli esclusivamente correlati a Compute Engine. Per ulteriori informazioni, vedi Abilita e disabilita le API.

Esistono alcuni vincoli specifici per la concessione delle autorizzazioni ai progetti, soprattutto per il ruolo Proprietario (roles/owner). Consulta le projects.setIamPolicy()documentazione di riferimento per ulteriori informazioni.

Revocare un ruolo

Per revocare un ruolo, rimuovi l'entità dall'associazione di ruolo. Se non sono presenti ad altre entità nell'associazione dei ruoli, rimuovi l'intera associazione dei ruoli.

gcloud

Revoca un ruolo modificando il criterio di autorizzazione JSON o YAML restituito dal Comando get-iam-policy. Questa modifica avrà effetto solo dopo che avrai impostare il criterio di autorizzazione aggiornato.

Per revocare un ruolo da un'entità, elimina l'entità o l'associazione dall'array bindings per il criterio di autorizzazione.

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

Per eseguire l'autenticazione su Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, vedi Client Resource Manager librerie.


using System.Linq;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy RemoveMember(Policy policy, string role, string member)
    {
        try
        {
            var binding = policy.Bindings.First(x => x.Role == role);
            if (binding.Members.Count != 0 && binding.Members.Contains(member))
            {
                binding.Members.Remove(member);
            }
            if (binding.Members.Count == 0)
            {
                policy.Bindings.Remove(binding);
            }
            return policy;
        }
        catch (System.InvalidOperationException e)
        {
            System.Diagnostics.Debug.WriteLine("Role does not exist in policy: \n" + e.ToString());
            return policy;
        }
    }
}

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 autenticarti in IAM, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.

Per eseguire l'autenticazione su Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, vedi Client Resource Manager librerie.

import (
	"fmt"
	"io"

	"google.golang.org/api/iam/v1"
)

// removeMember removes a member from a role binding.
func removeMember(w io.Writer, policy *iam.Policy, role, member string) {
	bindings := policy.Bindings
	bindingIndex, memberIndex := -1, -1
	for bIdx := range bindings {
		if bindings[bIdx].Role != role {
			continue
		}
		bindingIndex = bIdx
		for mIdx := range bindings[bindingIndex].Members {
			if bindings[bindingIndex].Members[mIdx] != member {
				continue
			}
			memberIndex = mIdx
			break
		}
	}
	if bindingIndex == -1 {
		fmt.Fprintf(w, "Role %q not found. Member not removed.\n", role)
		return
	}
	if memberIndex == -1 {
		fmt.Fprintf(w, "Role %q found. Member not found.\n", role)
		return
	}

	members := removeIdx(bindings[bindingIndex].Members, memberIndex)
	bindings[bindingIndex].Members = members
	if len(members) == 0 {
		bindings = removeIdx(bindings, bindingIndex)
		policy.Bindings = bindings
	}
	fmt.Fprintf(w, "Role %q found. Member removed.\n", role)
}

// removeIdx removes arr[idx] from arr.
func removeIdx[T any](arr []T, idx int) []T {
	return append(arr[:idx], arr[idx+1:]...)
}

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.

Per eseguire l'autenticazione su Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta la sezione Librerie client di Resource Manager.

import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class RemoveMember {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/existing-role";
    // TODO: Replace with your member.
    String member = "user:member-to-add@example.com";

    removeMember(policy, role, member);
  }

  // Removes member from a role; removes binding if binding contains no members.
  public static Policy removeMember(Policy policy, String role, String member) {
    // Creating new builder with all values copied from origin policy
    Policy.Builder policyBuilder = policy.toBuilder();

    // Getting binding with suitable role.
    Binding binding = null;
    for (Binding b : policy.getBindingsList()) {
      if (b.getRole().equals(role)) {
        binding = b;
        break;
      }
    }

    if (binding != null && binding.getMembersList().contains(member)) {
      List<String> newMemberList = new ArrayList<>(binding.getMembersList());
      // Removing member from a role
      newMemberList.remove(member);

      System.out.println("Member " + member + " removed from " + role);

      // Adding all remaining members to create new binding
      Binding newBinding = binding.toBuilder()
              .clearMembers()
              .addAllMembers(newMemberList)
              .build();

      List<Binding> newBindingList = new ArrayList<>(policyBuilder.getBindingsList());

      // Removing old binding to replace with new one
      newBindingList.remove(binding);

      // If binding has no more members, binding will not be added
      if (!newBinding.getMembersList().isEmpty()) {
        newBindingList.add(newBinding);
      }

      // Update the policy to remove the member.
      policyBuilder.clearBindings()
              .addAllBindings(newBindingList);
    }

    Policy updatedPolicy = policyBuilder.build();

    System.out.println("Exising members: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

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.

Per eseguire l'autenticazione su Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta la sezione Librerie client di Resource Manager.

from google.iam.v1 import policy_pb2
from snippets.get_policy import get_project_policy
from snippets.set_policy import set_project_policy


def modify_policy_remove_member(
    project_id: str, role: str, member: str
) -> policy_pb2.Policy:
    """
    Remove a member from certain role in project policy.

    project_id: ID or number of the Google Cloud project you want to use.
    role: role to which member need to be added.
    member: The principals requesting access.

    Possible format for member:
        * user:{emailid}
        * serviceAccount:{emailid}
        * group:{emailid}
        * deleted:user:{emailid}?uid={uniqueid}
        * deleted:serviceAccount:{emailid}?uid={uniqueid}
        * deleted:group:{emailid}?uid={uniqueid}
        * domain:{domain}
    """
    policy = get_project_policy(project_id)

    for bind in policy.bindings:
        if bind.role == role:
            if member in bind.members:
                bind.members.remove(member)
            break

    return set_project_policy(project_id, policy, False)

REST

Revoca un ruolo modificando il criterio di autorizzazione JSON o YAML restituito dal comando get-iam-policy. Questa modifica avrà effetto solo dopo che avrai impostare il criterio di autorizzazione aggiornato.

Per revocare un ruolo da un'entità, elimina l'entità o l'associazione dall'array bindings per il criterio di autorizzazione.

Imposta il criterio di autorizzazione

Dopo aver modificato il criterio di autorizzazione per concedere e revocare i ruoli, chiama setIamPolicy() per aggiornarlo.

gcloud

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

  2. Per impostare il criterio di autorizzazione per la risorsa, esegui il comando set-iam-policy per la risorsa:

    gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH

    Specifica i seguenti valori:

    • RESOURCE_TYPE: il tipo di risorsa per la quale vuoi impostare il criterio di autorizzazione. Utilizza uno dei seguenti valori: projects, resource-manager folders o organizations.

    • RESOURCE_ID: l'ID del tuo progetto, della tua cartella o della tua organizzazione Google Cloud. Gli ID progetto sono alfanumerici, my-project. Gli ID cartella e organizzazione sono numerici, ad esempio 123456789012.

    • PATH: il percorso di un file che contiene la nuova di autorizzazione.

    La risposta contiene il criterio di autorizzazione aggiornato.

    Ad esempio, il comando seguente imposta il criterio di autorizzazione archiviato in policy.json come criterio di autorizzazione per il progetto my-project:

    gcloud projects set-iam-policy my-project ~/policy.json

C#


using Google.Apis.Auth.OAuth2;
using Google.Apis.CloudResourceManager.v1;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy SetPolicy(string projectId, Policy policy)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
        var service = new CloudResourceManagerService(
            new CloudResourceManagerService.Initializer
            {
                HttpClientInitializer = credential
            });

        return service.Projects.SetIamPolicy(new SetIamPolicyRequest
        {
            Policy = policy
        }, projectId).Execute();
    }
}

Java

Per autenticarti in Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, vedi Client Resource Manager librerie.

L'esempio seguente mostra come impostare il criterio di autorizzazione per un progetto. A scopri come impostare il criterio di autorizzazione di una cartella o un'organizzazione, rivedi il Libreria client di Resource Manager documentazione per il tuo linguaggio di programmazione.

import com.google.cloud.resourcemanager.v3.ProjectsClient;
import com.google.iam.admin.v1.ProjectName;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class SetProjectPolicy {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your project ID.
    String projectId = "your-project-id";
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();

    setProjectPolicy(policy, projectId);
  }

  // Sets a project's policy.
  public static Policy setProjectPolicy(Policy policy, String projectId)
          throws IOException {

    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (ProjectsClient projectsClient = ProjectsClient.create()) {
      List<String> paths = Arrays.asList("bindings", "etag");
      SetIamPolicyRequest request = SetIamPolicyRequest.newBuilder()
              .setResource(ProjectName.of(projectId).toString())
              .setPolicy(policy)
              // A FieldMask specifying which fields of the policy to modify. Only
              // the fields in the mask will be modified. If no mask is provided, the
              // following default mask is used:
              // `paths: "bindings, etag"`
              .setUpdateMask(FieldMask.newBuilder().addAllPaths(paths).build())
              .build();

      return projectsClient.setIamPolicy(request);
    }
  }
}

Python

Per eseguire l'autenticazione su Resource Manager, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Prima di iniziare.

Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta la sezione Librerie client di Resource Manager.

L'esempio seguente mostra come impostare il criterio di autorizzazione per un progetto. Per scoprire come impostare il criterio di autorizzazione di una cartella o un'organizzazione, consulta la documentazione della libreria client di Resource Manager per il tuo linguaggio di programmazione.

from google.cloud import resourcemanager_v3
from google.iam.v1 import iam_policy_pb2, policy_pb2


def set_project_policy(
    project_id: str, policy: policy_pb2.Policy, merge: bool = True
) -> policy_pb2.Policy:
    """
    Set policy for project. Pay attention that previous state will be completely rewritten.
    If you want to update only part of the policy follow the approach read->modify->write.
    For more details about policies check out https://cloud.google.com/iam/docs/policies

    project_id: ID or number of the Google Cloud project you want to use.
    policy: Policy which has to be set.
    merge: The strategy to be used forming the request. CopyFrom is clearing both mutable and immutable fields,
    when MergeFrom is replacing only immutable fields and extending mutable.
    https://googleapis.dev/python/protobuf/latest/google/protobuf/message.html#google.protobuf.message.Message.CopyFrom
    """
    client = resourcemanager_v3.ProjectsClient()

    request = iam_policy_pb2.GetIamPolicyRequest()
    request.resource = f"projects/{project_id}"
    current_policy = client.get_iam_policy(request)

    # Etag should as fresh as possible to lower chance of collisions
    policy.ClearField("etag")
    if merge:
        current_policy.MergeFrom(policy)
    else:
        current_policy.CopyFrom(policy)

    request = iam_policy_pb2.SetIamPolicyRequest()
    request.resource = f"projects/{project_id}"

    # request.etag field also will be merged which means you are secured from collision,
    # but it means that request may fail and you need to leverage exponential retries approach
    # to be sure policy has been updated.
    request.policy.CopyFrom(current_policy)

    policy = client.set_iam_policy(request)
    return policy

REST

Il metodo setIamPolicy dell'API Resource Manager imposta il criterio nella richiesta come nuovo criterio di autorizzazione per il progetto, la cartella o l'organizzazione.

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

  • API_VERSION: la versione dell'API da utilizzare. Per progetti e organizzazioni, usa v1. Per le cartelle, usa v2.
  • RESOURCE_TYPE: il tipo di risorsa la cui il criterio che vuoi gestire. Utilizza il valore projects, folders oppure organizations.
  • RESOURCE_ID: l'ID del tuo progetto, della tua organizzazione o della tua cartella Google Cloud. Gli ID progetto sono stringhe alfanumeriche, my-project. Gli ID cartella e organizzazione sono numerici, ad esempio 123456789012.
  • POLICY: una rappresentazione JSON del criterio che che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta Riferimento alle norme.

Metodo HTTP e URL:

POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:setIamPolicy

Corpo JSON della richiesta:

{
  "policy": POLICY
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta contiene il criterio di autorizzazione aggiornato.

Passaggi successivi

Provalo

Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.

Inizia gratuitamente