In questa pagina viene descritto come applicare il principio del privilegio minimo concedendo l'accesso a risorse di Compute Engine specifiche anziché concedere l'accesso a una risorsa padre, ad esempio un progetto, una cartella o un'organizzazione.
Per concedere l'accesso a una risorsa, imposta un criterio IAM (Identity and Access Management) per la risorsa. Il criterio associa uno o più membri, ad esempio un utente o un account di servizio, a uno o più ruoli. Ogni ruolo contiene un elenco di autorizzazioni che consentono al membro di interagire con la risorsa.
Se concedi l'accesso a una risorsa padre, ad esempio a un progetto, concedi in modo implicito l'accesso a tutte le risorse figlio, ad esempio a tutte le VM nel progetto. Per limitare l'accesso alle risorse, imposta i criteri IAM sulle risorse di livello inferiore quando possibile, anziché a livello di progetto o superiore.
Per informazioni generali su come concedere, modificare e revocare l'accesso alle risorse non correlate a Compute Engine, ad esempio per concedere l'accesso a un progetto Google Cloud, consulta la documentazione IAM per concedere, modificare e revocare l'accesso alle risorse.
Prima di iniziare
- Esamina la panoramica IAM.
- Leggi la panoramica del controllo dell'accesso in Compute Engine.
- Acquisisci familiarità con i ruoli IAM per Compute Engine .
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.
Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi e alle API di Google Cloud, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
- Imposta una regione e una zona predefinite.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
-
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per gestire l'accesso alle risorse Compute Engine,
chiedi all'amministratore di concederti il
ruolo IAM Amministratore Compute (roles/compute.admin
) per la risorsa.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questo ruolo predefinito contiene le autorizzazioni necessarie per gestire l'accesso alle risorse Compute Engine. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per gestire l'accesso alle risorse Compute Engine sono necessarie le seguenti autorizzazioni:
-
Per concedere o revocare l'accesso alle risorse:
-
compute.projects.get
sul progetto -
compute.RESOURCE_TYPE.get
sulla risorsa -
compute.RESOURCE_TYPE.getIamPolicy
sulla risorsa -
compute.RESOURCE_TYPE.setIamPolicy
sulla risorsa
-
-
Per testare le autorizzazioni del chiamante:
compute.RESOURCE_TYPE.getIamPolicy
sulla risorsaSostituisci RESOURCE_TYPE con la risorsa di cui vuoi gestire l'accesso. Ad esempio
instances
,instanceTemplates
oimages
.
Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.
Risorse supportate
Per visualizzare un elenco delle risorse di Compute Engine che supportano controllo dell'accesso a livello di risorsa, consulta Tipi di risorse che accettano i criteri IAM e i filtri per Compute Engine.
Per le altre risorse Compute Engine che non supportano il controllo dell'accesso a livello di risorsa, devi gestire l'accesso a queste risorse a livello di progetto, cartella o organizzazione. Per informazioni su organizzazioni, cartelle o progetti, consulta Gerarchia delle risorse.
Concessione dell'accesso alle risorse Compute Engine
Un'entità, ad esempio un account utente o di servizio, può accedere alle risorse di Compute Engine. Un'identità è una proprietà di un'entità. L'identità di un'entità è in genere rappresentata da un indirizzo email associato all'account.
Prima di concedere un ruolo IAM a un'entità per una risorsa, verifica quali ruoli sono disponibili per una determinata risorsa. Per ulteriori informazioni, consulta Visualizzazione dei ruoli assegnabili sulle risorse.
Per concedere l'autorizzazione ad accedere a risorse Compute Engine specifiche, imposta un criterio IAM sulla risorsa.
Console
- Nella console Google Cloud, vai alla rispettiva pagina delle risorse per cui vuoi aggiungere le autorizzazioni.
- Per le istanze, vai alla pagina Istanze VM.
- Per i dischi a livello di zona e di regione, vai alla pagina Dischi.
- Per gli snapshot, vai alla pagina Snapshot.
- Per le immagini, vai alla pagina Immagini.
- Ad esempio, vai alla pagina Gruppi di istanze.
- Ad esempio, vai alla pagina Modelli di istanza.
- Per le immagini macchina, vai alla pagina Immagini macchina.
- Per le prenotazioni, vai alla pagina Prenotazioni.
- Per i nodi single-tenant, vai alla pagina Nodi single-tenant.
- Seleziona le caselle di controllo accanto alle risorse che vuoi aggiornare.
- Completa i seguenti passaggi in base alla pagina delle risorse.
- Per le istanze VM, fai clic su Autorizzazioni.
- Per tutte le altre risorse, completa i seguenti passaggi:
- Controlla se il riquadro delle informazioni è visibile. Se non è visibile, fai clic su Mostra riquadro informazioni.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi entità.
- Aggiungi l'identità per l'entità e seleziona il ruolo richiesto.
- Per salvare le modifiche, fai clic su Salva.
gcloud
Per concedere un ruolo a un'entità su una risorsa, utilizza il sottocomando add-iam-policy-binding
della risorsa con i flag --member
e --role
.
gcloud compute RESOURCE_TYPE add-iam-policy-binding RESOURCE_NAME \ --member='PRINCIPAL' \ --role='ROLE'
Sostituisci quanto segue:
RESOURCE_TYPE
: il tipo di risorsa. I valori validi includono:disks
images
instances
instance-templates
machine-images
reservations
sole-tenancy node-groups
sole-tenancy node-templates
snapshots
RESOURCE_NAME
: il nome della risorsa. Ad esempio,my_instance
.PRINCIPAL
: un'identità valida per l'entità a cui vuoi concedere il ruolo. Deve essere nel formatouser|group|serviceAccount:EMAIL_ADDRESS
odomain:DOMAIN_ADDRESS
. Ad esempio:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
ROLE
: il ruolo da assegnare a questa entità.
Se stai concedendo l'accesso a una risorsa in anteprima, utilizza invece un comando gcloud beta compute
.
REST
Per modificare un criterio IAM tramite l'API:
Leggi il criterio esistente con il rispettivo metodo
getIamPolicy
della risorsa. Ad esempio, la seguente richiesta HTTP legge il criterio IAM di una VM:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:getIamPolicy
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto a cui appartiene questa VM.ZONE
: la zona della VM. Per le risorse a livello di regione o globale, sostituiscizones/ZONE
conregions/REGION
oglobal
.VM_NAME
: il nome dell'istanza VM.
Compute Engine restituisce il criterio attuale nella risposta.
Modifica il criterio con un editor di testo per aggiungere o rimuovere le entità e i relativi ruoli associati. Ad esempio, per concedere il ruolo
compute.admin
a email@example.com, aggiungi la nuova associazione seguente al criterio:{ "members": [ "user:email@example.com" ], "role":"roles/compute.admin" }
Scrivi il criterio aggiornato con
setIamPolicy()
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto a cui appartiene questa VM.ZONE
: la zona della VM. Per le risorse a livello di regione o globale, sostituiscizones/ZONE
conregions/REGION
oglobal
.VM_NAME
: il nome dell'istanza VM.
Nel corpo della richiesta, fornisci il criterio IAM aggiornato del passaggio precedente.
Revoca dell'accesso alle risorse
Come best practice, quando le entità non hanno più bisogno di accedere alle tue risorse Compute Engine, revoca l'accesso.
Console
- Nella console Google Cloud, vai alla rispettiva pagina delle risorse per cui vuoi aggiungere le autorizzazioni.
- Per le istanze, vai alla pagina Istanze VM.
- Per i dischi a livello di zona e di regione, vai alla pagina Dischi.
- Per gli snapshot, vai alla pagina Snapshot.
- Per le immagini, vai alla pagina Immagini.
- Ad esempio, vai alla pagina Gruppi di istanze.
- Ad esempio, vai alla pagina Modelli di istanza.
- Per le immagini macchina, vai alla pagina Immagini macchina.
- Per le prenotazioni, vai alla pagina Prenotazioni.
- Per i nodi single-tenant, vai alla pagina Nodi single-tenant.
- Seleziona le caselle di controllo accanto alle risorse che vuoi aggiornare.
- Completa i seguenti passaggi in base alla pagina delle risorse.
- Per le istanze VM, fai clic su Autorizzazioni.
- Per tutte le altre risorse, completa i seguenti passaggi:
- Controlla se il riquadro delle informazioni è visibile. Se non è visibile, fai clic su Mostra riquadro informazioni.
- Seleziona la scheda Autorizzazioni.
- Fai clic sulla scheda del ruolo da cui vuoi rimuovere le entità. La scheda si espande e mostra gli utenti con quel ruolo per la risorsa.
- Per rimuovere un'entità da quel ruolo, fai clic su Elimina.
gcloud
Per rimuovere un ruolo da un'entità per una risorsa, utilizza il sottocomando remove-iam-policy-binding
della risorsa con i flag --member
e --role
.
gcloud compute RESOURCE_TYPE remove-iam-policy-binding RESOURCE_NAME \ --member='MEMBER' \ --role='ROLE'
Sostituisci quanto segue:
RESOURCE_TYPE
: tipo di risorsa. I valori validi includono:disks
images
instances
instance-templates
machine-images
reservations
sole-tenancy node-groups
sole-tenancy node-templates
snapshots
RESOURCE_NAME
: nome della risorsa. Ad esempio,my_instance
.PRINCIPAL
: un'identità valida per l'entità. Deve essere nel formatouser|group|serviceAccount:EMAIL_ADDRESS
odomain:DOMAIN_ADDRESS
. Ad esempio:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
ROLE
: ruolo da cui vuoi rimuovere l'entità.
Se stai revocando l'accesso a una risorsa in anteprima, utilizza invece un comando gcloud beta compute
.
REST
Per modificare un criterio IAM direttamente tramite l'API:
Leggi il criterio esistente con il rispettivo metodo
getIamPolicy
della risorsa. Ad esempio, la seguente richiesta HTTP legge il criterio IAM di una VM:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:getIamPolicy
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto a cui appartiene questa VM.ZONE
: la zona della VM. Per le risorse regionali o globali, sostituiscizones/ZONE
conregions/REGION
oglobal
.VM_NAME
: il nome dell'istanza VM.
Compute Engine restituisce il criterio attuale nella risposta.
Modifica il criterio con un editor di testo per rimuovere i membri dai ruoli associati. Ad esempio, rimuovi email@example.com dal ruolo
compute.admin
:{ "members": [ "user:owner@example.com" ], "role":"roles/compute.admin" }
Scrivi il criterio aggiornato con
setIamPolicy()
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto a cui appartiene questa VM.ZONE
: la zona della VM. Per le risorse a livello di regione o globale, sostituiscizones/ZONE
conregions/REGION
oglobal
.VM_NAME
: il nome dell'istanza VM.
Nel corpo della richiesta, fornisci il criterio IAM aggiornato del passaggio precedente.
Verificare se un chiamante dispone delle autorizzazioni
Se non sai quali autorizzazioni dispone di un'identità, utilizza il metodo API testIamPermissions
per verificare quali autorizzazioni sono disponibili per un'identità.
Il metodo prende un URL di risorsa e un insieme di autorizzazioni come parametri di input e restituisce l'insieme di autorizzazioni consentite dal chiamante. Puoi utilizzare questo metodo per una qualsiasi delle risorse supportate.
In genere, testIamPermissions
è progettato per l'integrazione con il software proprietario, ad esempio una Graphic User Interface personalizzata. In genere, non chiami testIamPermissions
se utilizzi direttamente Google Cloud per gestire le autorizzazioni.
Ad esempio, se stai creando una GUI sulla parte superiore dell'API Compute Engine e
la tua GUI ha un pulsante "Avvia" che avvia un'istanza, puoi chiamare
compute.instances.testIamPermissions()
per determinare se il pulsante deve
essere abilitato o disabilitato.
Per verificare se un chiamante dispone di autorizzazioni specifiche su una risorsa:
Invia una richiesta alla risorsa e includi nel corpo della richiesta un elenco delle autorizzazioni da verificare.
Ad esempio, su un'istanza potresti controllare
compute.instances.start
,compute.instances.stop
ecompute.instances.delete
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/testIamPermissions { "permissions": [ "compute.instances.start", "compute.instances.stop", "compute.instances.delete" ] }
La richiesta restituisce le autorizzazioni abilitate per il chiamante.
{ "permissions": [ "compute.instances.start", "compute.instances.stop" ] }
Modifica dell'accesso alle risorse per più membri
Se vuoi modificare l'accesso alle risorse Compute Engine per più membri contemporaneamente, rivedi i suggerimenti su come modificare un criterio IAM in modo programmatico.
Passaggi successivi
- Scopri come gestire l'accesso alle immagini personalizzate con IAM.
- Scopri di più sugli account di servizio.
- Scopri di più sui ruoli IAM di Compute Engine.
- Scopri di più sulle autorizzazioni incluse nei ruoli IAM predefiniti di Compute Engine.
- Scopri come creare e gestire i ruoli personalizzati.