Gestione dell'accesso alle risorse di Compute Engine

Questa pagina descrive come applicare il principio del privilegio minimo concedendo l'accesso a risorse specifiche di Compute Engine anziché concedere l'accesso a una risorsa padre come 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 vincola uno o più membri, ad esempio un account utente o 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 implicitamente l'accesso a tutte le relative risorse figlio (ad esempio, a tutte le VM nel progetto). Per limitare l'accesso alle risorse, se possibile, imposta i criteri IAM sulle risorse di livello inferiore anziché a livello di progetto o superiore.

Per informazioni generali su come concedere, modificare e revocare l'accesso a 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

  • Consulta la panoramica di IAM.
  • Leggi la panoramica sul controllo dell'accesso di Compute Engine.
  • Acquisisci familiarità con i ruoli IAM per Compute Engine .
  • Se non l'hai già fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità dell'utente per ottenere l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione in Compute Engine come segue.

    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

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

        gcloud init

      Per maggiori informazioni, consulta Autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

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 esattamente le autorizzazioni necessarie, espandi la sezione Autorizzazioni obbligatorie:

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 nel 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 nella risorsa

    Sostituisci RESOURCE_TYPE con la risorsa di cui vuoi gestire l'accesso. Ad esempio instances, instanceTemplates o images.

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

Risorse supportate

Per visualizzare un elenco delle risorse Compute Engine che supportano il controllo dell'accesso a livello di risorsa, vedi Tipi di risorse che accettano i criteri IAM e filtra 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 nelle risorse.

Per concedere l'autorizzazione ad accedere a risorse Compute Engine specifiche, imposta un criterio IAM per la risorsa.

Console

  1. Nella console Google Cloud, vai alla rispettiva pagina delle risorse per cui vuoi aggiungere le autorizzazioni.
  2. Seleziona le caselle di controllo accanto alle risorse che vuoi aggiornare.
  3. 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:
      1. Controlla se il riquadro informativo è visibile. Se non è visibile, fai clic su Mostra riquadro informazioni.
      2. Seleziona la scheda Autorizzazioni.
  4. Fai clic su Aggiungi entità.
  5. Aggiungi l'identità per l'entità e seleziona il ruolo richiesto.
  6. 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 di questa 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: 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 formato user|group|serviceAccount:EMAIL_ADDRESS o domain: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 che è in anteprima, utilizza invece un comando gcloud beta compute.

REST

Per modificare un criterio IAM tramite l'API, segui questi passaggi:

  1. 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, sostituisci zones/ZONE con regions/REGION o global.
    • VM_NAME: il nome dell'istanza VM.

    Compute Engine restituisce il criterio attuale nella risposta.

  2. Modifica il criterio con un editor di testo per aggiungere o rimuovere 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"
    }
    
  3. 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, sostituisci zones/ZONE con regions/REGION o global.
    • 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, revoca l'accesso quando le entità non hanno più bisogno di accedere alle tue risorse Compute Engine.

Console

  1. Nella console Google Cloud, vai alla rispettiva pagina delle risorse per cui vuoi aggiungere le autorizzazioni.
  2. Seleziona le caselle di controllo accanto alle risorse che vuoi aggiornare.
  3. 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:
      1. Controlla se il riquadro informativo è visibile. Se non è visibile, fai clic su Mostra riquadro informazioni.
      2. Seleziona la scheda Autorizzazioni.
  4. Fai clic sulla scheda del ruolo da cui vuoi rimuovere le entità. La scheda si espande e mostra gli utenti con quel ruolo per quella risorsa.
  5. 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 formato user|group|serviceAccount:EMAIL_ADDRESS o domain: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 che è in anteprima, utilizza invece un comando gcloud beta compute.

REST

Per modificare un criterio IAM direttamente tramite l'API, segui questi passaggi:

  1. 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, sostituisci zones/ZONE con regions/REGION o global.
    • VM_NAME: il nome dell'istanza VM.

    Compute Engine restituisce il criterio attuale nella risposta.

  2. 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"
    }
    
  3. 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, sostituisci zones/ZONE con regions/REGION o global.
    • 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 di quali autorizzazioni dispone un'identità, utilizza il metodo API testIamPermissions per verificare quali autorizzazioni sono disponibili per un'identità.

Il metodo prende un URL della risorsa e un set di autorizzazioni come parametri di input e restituisce l'insieme di autorizzazioni consentite al chiamante. Puoi utilizzare questo metodo per qualsiasi risorsa supportata.

In genere, testIamPermissions è destinato all'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 sull'API Compute Engine e la GUI ha un pulsante di avvio che avvia un'istanza, puoi chiamare compute.instances.testIamPermissions() per determinare se il pulsante deve essere abilitato o disabilitato.

Per verificare se un chiamante ha autorizzazioni specifiche per una risorsa:

  1. Invia una richiesta alla risorsa e includi nel corpo della richiesta un elenco delle autorizzazioni da controllare.

    Ad esempio, in un'istanza, potresti controllare compute.instances.start, compute.instances.stop e compute.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"
           ]
        }
  2. 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