Gestione dell'accesso alle risorse di Compute Engine


Questa pagina descrive come applicare il principio del privilegio minimo concedendo l'accesso a risorse Compute Engine specifiche anziché concedere l'accesso a una risorsa principale come un progetto, una cartella o un'organizzazione.

Concedi l'accesso a una risorsa impostando un criterio Identity and Access Management (IAM) sulla risorsa. Il criterio vincola 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 implicitamente l'accesso a tutte le relative risorse figlio (ad esempio a tutte le VM del progetto). Per limitare l'accesso alle risorse, imposta i criteri IAM sulle risorse di livello inferiore, se possibile, 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 del controllo dell'accesso di 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 la tua identità viene verificata per l'accesso ai Google Cloud servizi e alle API. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    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. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      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.

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        Per saperne di più, consulta la sezione Autenticarsi 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 Compute Admin (roles/compute.admin) sulla risorsa. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per gestire l'accesso alle risorse Compute Engine. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per gestire l'accesso alle risorse di 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 per cui vuoi gestire l'accesso. Ad esempio, instances, instanceTemplates o images.

Potresti anche ottenere queste autorizzazioni con 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 la pagina 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 utente o un account di servizio, può accedere alle risorse Compute Engine. Un'identità è una proprietà di un principal. L'identità di un principal è in genere rappresentata da un indirizzo email associato all'account.

Prima di concedere un ruolo IAM a un'entità per una risorsa, controlla quali ruoli sono disponibili per una determinata risorsa. Per ulteriori informazioni, vedi Visualizzazione dei ruoli assegnabili sulle risorse.

Per concedere l'autorizzazione ad accedere a risorse Compute Engine specifiche, imposta una policy IAM sulla risorsa.

Console

  1. Nella console Google Cloud , vai alla pagina delle risorse per cui vuoi aggiungere le autorizzazioni.
  2. Seleziona le caselle di controllo accanto alle risorse da 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 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à dell'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 concedi l'accesso a una risorsa in anteprima, utilizza un comando gcloud beta compute.

REST

Per modificare una policy IAM tramite l'API, procedi nel seguente modo:

  1. Leggi la policy esistente con il metodo getIamPolicy rispettivo 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 progetto 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 corrente 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 seguente nuova associazione al criterio:

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Scrivi le norme aggiornate 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 progetto 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.

    Nel corpo della richiesta, fornisci il criterio IAM aggiornato del passaggio precedente.

Revoca dell'accesso alle risorse

Come best practice, dopo che i principal non hanno più bisogno di accedere alle tue risorse Compute Engine, revoca il loro accesso.

Console

  1. Nella console Google Cloud , vai alla pagina delle risorse per cui vuoi aggiungere le autorizzazioni.
  2. Seleziona le caselle di controllo accanto alle risorse da 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 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à. In questo modo la scheda viene espansa e vengono visualizzati gli utenti con quel ruolo per quella risorsa.
  5. Per rimuovere un'entità da questo ruolo, fai clic su Elimina.

gcloud

Per rimuovere un ruolo da un'entità per una risorsa, utilizza il comando secondario 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: il nome della risorsa. Ad esempio, my_instance.
  • PRINCIPAL: un'identità valida per il principal. 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 cui vuoi rimuovere l'entità.

Se stai revocando l'accesso a una risorsa in anteprima, utilizza un comando gcloud beta compute.

REST

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

  1. Leggi la policy esistente con il metodo getIamPolicy rispettivo 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 progetto 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 corrente 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 le norme aggiornate 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 progetto 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.

    Nel corpo della richiesta, fornisci il criterio IAM aggiornato del passaggio precedente.

Testare se un chiamante dispone delle autorizzazioni

Se non sai quali autorizzazioni ha un'identità, utilizza il metodo API testIamPermissions per verificare quali autorizzazioni sono disponibili per un'identità.

Il metodo accetta un URL risorsa e un insieme di autorizzazioni come parametri di input e restituisce l'insieme di autorizzazioni consentite al chiamante. Puoi utilizzare questo metodo su una qualsiasi delle risorse supportate.

In genere, testIamPermissions è destinato all'integrazione con il tuo software proprietario, ad esempio un'interfaccia utente grafica personalizzata. In genere non chiami testIamPermissions se utilizzi Google Clouddirettamente per gestire le autorizzazioni.

Ad esempio, se stai creando una GUI basata sull'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 per una risorsa:

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

    Ad esempio, in un'istanza puoi 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 attivate per il chiamante.

    {
      "permissions": [
        "compute.instances.start",
        "compute.instances.stop"
      ]
    }
    

Modificare l'accesso alle risorse per più membri

Se vuoi modificare l'accesso alle risorse Compute Engine per più membri contemporaneamente, consulta i suggerimenti su come modificare un criterio IAM in modo programmatico.

Passaggi successivi