Gestione dell'accesso alle risorse di Compute Engine

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

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

      gcloud init
    2. 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 risorsa

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

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

  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 delle informazioni è 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 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 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 in anteprima, utilizza invece un comando gcloud beta compute.

REST

Per modificare un criterio IAM tramite l'API:

  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 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"
    }
    
  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, quando le entità non hanno più bisogno di accedere alle tue risorse Compute Engine, revoca l'accesso.

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 delle informazioni è 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 la 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 in anteprima, utilizza invece un comando gcloud beta compute.

REST

Per modificare un criterio IAM direttamente tramite l'API:

  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 regionali o globali, 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 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:

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