Gestisci l'accesso alle immagini personalizzate

Per consentire agli utenti di creare, eliminare, utilizzare o condividere le tue immagini personalizzate, devi concedere loro i ruoli di Identity and Access Management (IAM) appropriati. Questo documento descrive le autorizzazioni IAM necessarie per creare e gestire le immagini personalizzate e come concederle agli utenti.

Per informazioni generali sulla concessione dell'accesso alle risorse Compute Engine, consulta Gestione dell'accesso alle risorse Compute Engine. Per informazioni su IAM, consulta la documentazione di IAM.

Prima di iniziare

Limitazioni

Sulle immagini, non puoi concedere ruoli al tipo di membro speciale allUsers.

Concedi l'autorizzazione per creare immagini personalizzate

Puoi offrire agli utenti la possibilità di creare immagini personalizzate nella tua organizzazione o nel tuo progetto.

Compute Engine offre il ruolo Amministratore di Compute Storage predefinito (roles/compute.storageAdmin) che puoi assegnare agli utenti in modo che possano creare, eliminare e gestire le risorse relative allo spazio di archiviazione, tra cui immagini, dischi e snapshot. Se hai bisogno di un ruolo che consente solo la creazione di immagini, devi creare un ruolo personalizzato. Nel ruolo personalizzato, includi le seguenti autorizzazioni:

  • compute.images.create per creare nuove immagini
  • compute.images.list per elencare le immagini nel progetto
  • compute.disks.use se l'immagine è stata creata da un disco
  • compute.disks.list se gli utenti devono elencare tutti i dischi in un progetto

Se offri a un utente la possibilità di creare immagini personalizzate a livello di organizzazione, può creare immagini personalizzate per qualsiasi progetto all'interno dell'organizzazione.

Console

  1. In Google Cloud Console, vai alla pagina IAM del progetto o dell'organizzazione.

    Vai a IAM

  2. Per aggiungere un nuovo membro, fai clic su Concedi l'accesso.

  3. Nel campo Nuove entità, inserisci l'indirizzo email dell'identità a cui vuoi concedere l'accesso.

    Ad esempio:

    • Email dell'Account Google: test-user@gmail.com
    • Gruppo Google: admins@googlegroups.com
    • Account di servizio: server@example.gserviceaccount.com
    • Dominio Google Workspace: example.com
  4. Nell'elenco Seleziona un ruolo, seleziona Compute Engine > Amministratore Storage Storage oppure seleziona un ruolo personalizzato se ne hai creato uno.

  5. (Facoltativo) Per controllare ulteriormente l'accesso degli utenti alle risorse Google Cloud, aggiungi un'associazione dei ruoli condizionale.

  6. Salva le modifiche.

gcloud

Per concedere il ruolo roles/compute.storageAdmin a livello di organizzazione, utilizza il comando gcloud organizations add-iam-policy-binding:

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member='MEMBER' \
    --role='roles/compute.storageAdmin'

Per concedere il ruolo roles/compute.storageAdmin a livello di progetto, utilizza il comando gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='roles/compute.storageAdmin'

Sostituisci quanto segue:

  • ORGANIZATION_ID o PROJECT_ID: l'ID organizzazione o l'ID progetto, ad esempio my-organization-1 o my-project-1
  • MEMBER: un'identità valida a cui vuoi concedere il ruolo

    Ad esempio:

    • Email dell'Account Google: user:user@gmail.com
    • Gruppo Google: group:admins@googlegroups.com
    • Account di servizio: serviceAccount:server@example.gserviceaccount.com
    • Dominio Google Workspace: domain:example.com

API

  1. Leggi il criterio esistente con il metodo getIamPolicy della risorsa. Per i progetti, utilizza il metodo projects.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Sostituisci PROJECT_ID con l'ID progetto, ad esempio my-project-1.

    Per le organizzazioni, utilizza il metodo organizations.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
    

    Sostituisci ORGANIZATION_ID con l'ID organizzazione, ad esempio 123456578920.

    Compute Engine restituisce il criterio corrente nella risposta.

  2. Per aggiungere o rimuovere membri e i ruoli associati, modifica il criterio con un editor di testo. Utilizza il formato seguente per aggiungere membri:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    Ad esempio, per concedere il ruolo roles/compute.storageAdmin a group:admins@example.com, aggiungi la seguente associazione al criterio:

    {
     "members": [
       "group:admins@example.com"
     ],
     "role":"roles/compute.storageAdmin"
    }
    
  3. Scrivi il criterio aggiornato utilizzando il metodo setIamPolicy.

    Ad esempio, per impostare un criterio a livello di progetto, utilizza il metodo project.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato del passaggio precedente.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

    Sostituisci PROJECT_ID con l'ID progetto.

Concedi le autorizzazioni per eliminare le immagini personalizzate

A seconda delle tue esigenze, puoi concedere agli utenti l'autorizzazione necessaria per:

  • Eliminare un'immagine specifica
  • Eliminare le immagini di proprietà di un progetto specifico
  • Eliminare le immagini di qualsiasi progetto in un'organizzazione

Concedere l'autorizzazione a livello di progetto consente agli utenti di eliminare tutte le immagini di proprietà di quel progetto. Se concedi l'autorizzazione a livello di organizzazione, l'utente può eliminare qualsiasi immagine di proprietà di tale organizzazione, indipendentemente dal progetto.

Compute Engine offre il ruolo amministrativo Compute Engine predefinito (roles/compute.storageAdmin) che puoi assegnare agli utenti in modo che possano creare, eliminare e gestire le risorse relative allo spazio di archiviazione, tra cui immagini, dischi e snapshot. Se hai bisogno di un ruolo che consenta solo l'eliminazione delle immagini, devi creare un ruolo personalizzato. Nel ruolo personalizzato, includi le seguenti autorizzazioni:

  • compute.images.delete per eliminare le immagini
  • compute.images.list se gli utenti devono elencare immagini nel progetto o nell'organizzazione
  • compute.images.get per recuperare le immagini

Console

Per autorizzare l'eliminazione di immagini specifiche:

  1. In Google Cloud Console, vai alla pagina Immagini.

    Vai a Immagini

  2. Seleziona le immagini a cui vuoi concedere le autorizzazioni.

  3. Per espandere la colonna delle autorizzazioni, fai clic su Mostra riquadro informazioni.

  4. Per aggiungere uno o più membri, fai clic su Aggiungi entità.

  5. Nel campo Nuove entità, inserisci l'indirizzo email dell'identità con cui vuoi condividere l'immagine.

    Ad esempio:

    • Email dell'Account Google: test-user@gmail.com
    • Gruppo Google: admins@googlegroups.com
    • Account di servizio: server@example.gserviceaccount.com
    • Dominio Google Workspace: example.com
  6. Nell'elenco Ruolo, tieni il puntatore del mouse su Compute Engine e seleziona Amministratore Storage oppure seleziona un ruolo personalizzato dall'elenco Personalizzato.

  7. (Facoltativo) Per controllare ulteriormente l'accesso degli utenti alle risorse Google Cloud, aggiungi un'associazione dei ruoli condizionale.

  8. Salva le modifiche.

Per autorizzare l'eliminazione di immagini per un progetto o un'organizzazione, procedi come segue:

  1. Vai alla pagina IAM del progetto o dell'organizzazione.

    Vai a IAM

  2. Fai clic su Concedi l'accesso.

  3. Nel campo Nuove entità, inserisci l'indirizzo email dell'identità a cui vuoi concedere l'accesso. Ad esempio:

    • Email dell'Account Google: test-user@gmail.com
    • Gruppo Google: admins@googlegroups.com
    • Account di servizio: server@example.gserviceaccount.com
    • Dominio Google Workspace: example.com
  4. Nell'elenco Ruolo, tieni il puntatore del mouse su Compute Engine e seleziona Amministratore Storage oppure seleziona un ruolo personalizzato dall'elenco Personalizzato.

  5. (Facoltativo) Per controllare ulteriormente l'accesso degli utenti alle risorse Google Cloud, aggiungi un'associazione dei ruoli condizionale.

  6. Salva le modifiche.

gcloud

Per concedere le autorizzazioni per eliminare immagini a livello di organizzazione, utilizza il comando gcloud organizations add-iam-policy-binding:

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member='MEMBER' \
    --role='ROLE'

Per concedere le autorizzazioni per eliminare le immagini a livello di progetto, utilizza il comando gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='ROLE'

Per concedere le autorizzazioni per eliminare un'immagine specifica, usa il comando gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Sostituisci quanto segue:

  • ORGANIZATION_ID o PROJECT_ID o IMAGE_NAME: l'ID organizzazione numerico di 12 cifre, l'ID progetto o il nome dell'immagine, ad esempio 123456578920, my-project-1 o my-custom-image
  • MEMBER: un'identità valida a cui vuoi concedere il ruolo

    Ad esempio:

    • Email dell'Account Google: user:user@gmail.com
    • Gruppo Google: group:admins@googlegroups.com
    • Account di servizio: serviceAccount:server@example.gserviceaccount.com
    • Dominio Google Workspace: domain:example.com
  • ROLE: il ruolo da assegnare a questa identità, ad esempio il ruolo roles/compute.storageAdmin o un ruolo personalizzato come roles/customImageDeletionRole

API

  1. Leggi il criterio esistente con il rispettivo metodo getIamPolicy della risorsa. Per i progetti, utilizza il metodo projects.getIamPolicy:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Sostituisci PROJECT_ID con l'ID progetto.

    Per le organizzazioni, utilizza il metodo organizations.getIamPolicy:

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
    

    Sostituisci ORGANIZATION_ID con l'ID numerico dell'organizzazione di 12 cifre.

    Per un'immagine specifica, utilizza il metodo images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto
    • IMAGE_NAME: il nome dell'immagine

    Compute Engine restituisce il criterio corrente nella risposta.

  2. Per aggiungere o rimuovere membri e i relativi ruoli, puoi modificare il criterio con un editor di testo. Utilizza il formato seguente per aggiungere membri:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    Ad esempio, per concedere il ruolo roles/compute.storageAdmin a user:test-email@example.com, aggiungi la seguente associazione al criterio:

    {
     "members": [
       "user:test-email@example.com"
     ],
     "role":"roles/compute.storageAdmin"
    }
    
  3. Scrivi il criterio aggiornato utilizzando il metodo setIamPolicy.

    Ad esempio, per impostare un criterio a livello di progetto, utilizza il metodo project.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato del passaggio precedente.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

    Sostituisci PROJECT_ID con l'ID progetto.

Condividere immagini personalizzate all'interno di un'organizzazione

Se il tuo progetto appartiene a un'organizzazione, l'organizzazione può avere diversi altri progetti con livelli di accesso diversi ad altri progetti. Quando crei immagini personalizzate, puoi condividerle con altri utenti da altri progetti all'interno dell'organizzazione.

Compute Engine offre i seguenti ruoli IAM predefiniti che puoi utilizzare per la gestione delle immagini:

  • Utente immagine Compute (roles/compute.imageUser): autorizzazione per elencare, leggere e utilizzare le immagini nelle tue richieste, senza disporre di altre autorizzazioni sull'immagine
  • Amministratore Compute Storage (roles/compute.storageAdmin): autorizzazioni per creare, modificare ed eliminare dischi, immagini e snapshot

In alternativa, puoi anche creare un ruolo IAM personalizzato.

Come best practice, ti consigliamo di conservare tutte le immagini personalizzate in un unico progetto dedicato per ospitarle. In questo modo la gestione di queste immagini migliora e puoi permettere a team specifici di accedere solo alle immagini di cui hanno bisogno. Puoi anche concedere ai team l'accesso all'intero progetto relativo alle immagini, ma poiché l'accesso a tutto il progetto viola il principio del privilegio minimo, sconsigliamo di farlo.

L'esempio seguente mostra come aggiungere un gruppo in modo che gli utenti di tale gruppo abbiano accesso all'immagine.

Console

  1. In Google Cloud Console, vai alla pagina Immagini.

    Vai a Immagini

  2. Seleziona l'immagine che vuoi condividere con altri utenti.

  3. Per espandere la colonna delle autorizzazioni, fai clic su Mostra riquadro informazioni.

  4. Per aggiungere uno o più membri, fai clic su Aggiungi entità.

  5. Nel campo Nuove entità, inserisci l'indirizzo email dell'identità con cui vuoi condividere l'immagine.

    Ad esempio:

    • Email dell'Account Google: test-user@gmail.com
    • Gruppo Google: admins@googlegroups.com
    • Account di servizio: server@example.gserviceaccount.com
    • Dominio Google Workspace: example.com
  6. Nell'elenco Ruolo, tieni il puntatore del mouse su Compute Engine e seleziona Utente immagine o Amministratore Storage oppure seleziona un ruolo personalizzato.

  7. (Facoltativo) Per controllare ulteriormente l'accesso degli utenti alle risorse Google Cloud, aggiungi un'associazione dei ruoli condizionale.

  8. Salva le modifiche.

Per consentire agli utenti di avviare immagini personalizzate condivise da Google Cloud Console, concedi agli utenti il ruolo IAM Visualizzatore (roles/viewer) per il progetto immagine. La concessione di questo ruolo assicura che le immagini condivise vengano visualizzate nell'elenco di selezione delle immagini.

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

    Vai a IAM

  2. Fai clic su Concedi l'accesso.

  3. Nel campo Nuove entità, inserisci l'indirizzo email dell'identità con cui vuoi condividere l'immagine. Ad esempio:

    • Email dell'Account Google: test-user@gmail.com
    • Gruppo Google: admins@googlegroups.com
    • Account di servizio: server@example.gserviceaccount.com
    • Dominio Google Workspace: example.com
  4. Nell'elenco Ruolo, tieni il puntatore del mouse su Progetto e seleziona Visualizzatore.

  5. (Facoltativo) Per controllare ulteriormente l'accesso degli utenti alle risorse Google Cloud, aggiungi un'associazione dei ruoli condizionale.

  6. Salva le modifiche.

gcloud

Per aggiornare il criterio IAM per un'immagine specifica, utilizza il comando gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine, ad esempio custom-centos-8
  • MEMBER: un'identità valida per la quale vuoi concedere il ruolo

    Ad esempio:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE: il ruolo a cui assegnare questa identità, ad esempio roles/compute.imageUser, roles/compute.storageAdmin o un ruolo personalizzato

Facoltativamente, per consentire agli utenti di vedere queste immagini condivise nelle loro richieste images.list, concedi agli utenti il ruolo IAM Visualizzatore (roles/viewer) per il progetto immagine utilizzando il comando gcloud projects add-iam-policy-binding. Se non hai bisogno che gli utenti possano visualizzare l'elenco delle immagini condivise, puoi saltare questo passaggio.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='roles/viewer'

API

  1. Leggi il criterio esistente con il metodo getIamPolicy della risorsa. Ad esempio, per ottenere il criterio su un'immagine specifica, usa il metodo images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto a cui appartiene questa immagine
    • IMAGE_NAME: il nome dell'immagine

    Compute Engine restituisce il criterio corrente nella risposta.

  2. Per aggiungere o rimuovere membri e i ruoli associati, modifica il criterio con un editor di testo. Utilizza il formato seguente per aggiungere membri:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    Ad esempio, per concedere roles/compute.imageUser a test-email@example.com, aggiungi la seguente associazione al criterio:

    {
     "members": [
       "user:test-email@example.com"
     ],
     "role":"roles/compute.imageUser"
    }
    
  3. Scrivi il criterio aggiornato utilizzando il metodo setIamPolicy. Ad esempio, per impostare il criterio per un'immagine specifica, utilizza il metodo project.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato del passaggio precedente.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto a cui appartiene questa immagine
    • IMAGE_NAME: il nome dell'immagine

Facoltativamente, per consentire agli utenti di visualizzare queste immagini condivise nelle loro richieste images.list, concedi agli utenti il ruolo IAM Visualizzatore (roles/viewer) per il progetto immagine utilizzando il metodo projects.setIamPolicy. Se non hai bisogno che gli utenti possano visualizzare l'elenco delle immagini condivise, puoi saltare questo passaggio.

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Condividere immagini personalizzate tra organizzazioni

La creazione di un catalogo di immagini personalizzate può essere utile per condividere immagini con partner, utenti o collaboratori esterni all'organizzazione. Per condividere le immagini con utenti esterni all'organizzazione, aggiungile come utenti immagine al progetto:

Console

  1. In Google Cloud Console, vai alla pagina Immagini.

    Vai a Immagini

  2. Seleziona l'immagine che vuoi condividere con altri utenti.

  3. Per espandere la colonna delle autorizzazioni, fai clic su Mostra riquadro informazioni.

  4. Per aggiungere uno o più membri, fai clic su Aggiungi entità.

  5. Nel campo Nuove entità, inserisci l'indirizzo email del gruppo con cui vuoi condividere l'immagine. Ad esempio, admins@example.com.

  6. Nell'elenco Ruolo, tieni il puntatore del mouse su Compute Engine e seleziona Utente immagine Compute.

  7. (Facoltativo) Per controllare ulteriormente l'accesso degli utenti alle risorse Google Cloud, aggiungi un'associazione dei ruoli condizionale.

  8. Salva le modifiche.

Per consentire agli utenti di avviare immagini personalizzate condivise da Google Cloud Console, concedi agli utenti il ruolo IAM Visualizzatore (roles/viewer) per il progetto immagine. La concessione di questo ruolo contribuisce a garantire che le immagini condivise vengano visualizzate nell'elenco di selezione delle immagini.

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

    Vai a IAM

  2. Fai clic su Concedi l'accesso.

  3. Nel campo Nuove entità, inserisci l'indirizzo email dell'identità con cui vuoi condividere l'immagine. Ad esempio, admins@example.com.

  4. Nell'elenco Ruolo, tieni il puntatore del mouse su Progetto e seleziona Visualizzatore.

  5. (Facoltativo) Per controllare ulteriormente l'accesso degli utenti alle risorse Google Cloud, aggiungi un'associazione dei ruoli condizionale.

  6. Salva le modifiche.

gcloud

Per concedere il ruolo roles/compute.imageUser agli utenti, utilizza il comando gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='roles/compute.imageUser'

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine, ad esempio custom-centos-8
  • MEMBER: un'identità valida per la quale vuoi concedere il ruolo, ad esempio group:admins@example.com

Facoltativamente, per consentire agli utenti di vedere queste immagini condivise nelle loro richieste images.list, concedi agli utenti il ruolo IAM Visualizzatore (roles/viewer) per il progetto immagine utilizzando il comando gcloud projects add-iam-policy-binding. Se non hai bisogno che gli utenti possano visualizzare l'elenco delle immagini condivise, puoi saltare questo passaggio.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='roles/viewer'

API

  1. Leggi il criterio esistente con il metodo getIamPolicy della risorsa. Ad esempio, per ottenere il criterio su un'immagine specifica, usa il metodo images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto a cui appartiene questa immagine
    • IMAGE_NAME: il nome dell'immagine

    Compute Engine restituisce il criterio corrente nella risposta.

  2. Per aggiungere o rimuovere membri e i relativi ruoli, puoi modificare il criterio con un editor di testo. Utilizza il formato seguente per aggiungere membri:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    Ad esempio, per concedere roles/compute.imageUser a test-user@example.com, aggiungi la seguente associazione al criterio:

    {
      "members": [
        "user:test-user@example.com"
      ],
      "role":"roles/compute.imageUser"
    }
    
  3. Scrivi il criterio aggiornato utilizzando il metodo setIamPolicy. Ad esempio, per impostare un criterio per un'immagine specifica, utilizza il metodo images.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato del passaggio precedente.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto a cui appartiene questa immagine
    • IMAGE_NAME: il nome dell'immagine

    Facoltativamente, per consentire agli utenti di visualizzare queste immagini condivise nelle loro richieste images.list, concedi agli utenti il ruolo IAM Visualizzatore (roles/viewer) per il progetto immagine utilizzando il metodo projects.setIamPolicy. Se non hai bisogno che gli utenti possano visualizzare l'elenco delle immagini condivise, puoi saltare questo passaggio.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

Condividi pubblicamente le immagini personalizzate

Puoi condividere le immagini personalizzate con tutti gli utenti di Compute Engine autenticati, indipendentemente dal fatto che facciano parte della tua organizzazione o del tuo progetto.

Puoi condividere le risorse, ad esempio le immagini, solo con tutti gli utenti autenticati; non puoi condividere progetti o organizzazioni con tutti gli utenti autenticati. Questa restrizione e la gerarchia delle risorse aiutano a impedire che un'organizzazione condivida inavvertitamente l'intero progetto con tutti gli utenti di Compute Engine autenticati.

L'esempio seguente mostra come concedere a tutti gli utenti di Compute Engine autenticati il ruolo Utente immagine Compute (roles/compute.imageUser) per un'immagine personalizzata.

gcloud

Per rendere pubbliche le immagini, utilizza il comando gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='allAuthenticatedUsers' \
    --role='roles/compute.imageUser'

Sostituisci IMAGE_NAME con il nome della risorsa, ad esempio my_image.

API

  1. Leggi il criterio esistente con il metodo getIamPolicy. Ad esempio, per ottenere il criterio su un'immagine specifica, usa il metodo images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto a cui appartiene questa immagine
    • IMAGE_NAME: il nome dell'immagine

    Compute Engine restituisce il criterio corrente nella risposta.

  2. Per aggiungere o rimuovere membri e i ruoli associati, modifica il criterio con un editor di testo:

    {
     "members": [
       "allAuthenticatedUsers"
     ],
     "role":"roles/compute.imageUser"
    }
    
  3. Scrivi il criterio aggiornato utilizzando il metodo setIamPolicy. Ad esempio, per impostare un criterio per un'immagine specifica, utilizza il metodo images.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato del passaggio precedente.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto a cui appartiene questa immagine
    • IMAGE_NAME: il nome dell'immagine

Concedi a un gruppo di istanze gestite l'accesso alle immagini

Compute Engine consente di creare gruppi di VM, come gruppi di istanze gestiti o non gestiti. Se crei un gruppo di istanze gestite (MIG), Compute Engine utilizza l'agente di servizio delle API di Google per chiamare l'API Compute Engine ed eseguire azioni correlate al gruppo, come la ricreazione di VM non integre e l'aggiornamento delle VM.

Se vuoi creare un gruppo di istanze gestite mediante un'immagine di un altro progetto, concedi il ruolo utente immagine Compute (roles/compute.imageUser) all'account di servizio delle API appartenente al progetto che crea il gruppo di istanze gestite. Ad esempio:

  1. Il Progetto A vuole creare un gruppo di istanze gestite mediante immagini di proprietà del Progetto B.
  2. Il progetto B assegna all'account di servizio del progetto A il ruolo Utente immagine Compute.
  3. Il Progetto A può ora utilizzare le immagini del Progetto B per creare i MIG.

Dopo aver concesso il ruolo Utente immagine Compute, puoi accedere all'immagine dagli altri progetti utilizzando la console o l'URL dell'immagine quando crei il modello di istanza per il gruppo gestito.

Recuperare l'indirizzo email dell'account di servizio

  1. Nella console Google Cloud, vai alla pagina IAM del progetto a cui vuoi concedere l'accesso all'account di servizio.

    Vai a IAM

  2. Se richiesto, seleziona il progetto nell'elenco.

  3. Cerca l'agente di servizio delle API di Google, che ha l'indirizzo email nel seguente formato:

    PROJECT_NUMBER@cloudservices.gserviceaccount.com
    

Dopo aver recuperato l'indirizzo email dell'account di servizio, puoi andare in una delle seguenti sezioni:

Concedi a un MIG l'accesso a tutte le immagini in un progetto

Ora che hai l'indirizzo email di un account di servizio, puoi aggiungere l'indirizzo a un altro progetto e concedergli il ruolo Utente immagine Compute (roles/compute.imageUser).

Console

  1. In Google Cloud Console, vai alla pagina IAM del progetto immagine.

    Vai a IAM

  2. Per aggiungere un nuovo membro, fai clic su Concedi l'accesso.

  3. Nel campo Nuove entità, aggiungi l'indirizzo email dell'account di servizio.

  4. Nell'elenco Ruolo, tieni il puntatore del mouse su Compute e seleziona Utente immagine Compute.

  5. (Facoltativo) Per controllare ulteriormente l'accesso degli utenti alle risorse Google Cloud, aggiungi un'associazione dei ruoli condizionale.

  6. Fai clic su Salva.

  7. Torna al progetto dell'account di servizio.

Ora puoi creare un modello di istanza basato su un'immagine dal progetto immagine e creare un MIG basato sul modello di istanza.

gcloud

Aggiungi un account di servizio dal progetto di immagine utilizzando il comando gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' --role='roles/compute.imageUser'

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto contenente le immagini che vuoi condividere
  • SERVICE_ACCOUNT_EMAIL: l'indirizzo email dell'account di servizio

Ora puoi creare un modello di istanza basato su un'immagine dal progetto immagine e creare un MIG basato sul modello di istanza.

API

  1. Recupera il criterio IAM del progetto immagine utilizzando il metodo projects.getIamPolicy:

     POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
     

    Sostituisci PROJECT_ID con l'ID del progetto immagine.

  2. Per concedere il ruolo roles/compute.imageUser all'account di servizio, modifica il criterio con un editor di testo:

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_EMAIL"
          ]
        }
      ]
    }
    

    Sostituisci SERVICE_ACCOUNT_EMAIL con l'indirizzo email dell'account di servizio.

  3. Scrivi il criterio aggiornato utilizzando la projects.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato del passaggio precedente.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

    Sostituisci PROJECT_ID con l'ID prodotto del progetto immagine.

    Ora puoi creare un modello di istanza basato su un'immagine dal progetto immagine e creare un MIG basato sul modello di istanza.

Concedi a un MIG l'accesso a immagini specifiche di un progetto

Ora che hai l'indirizzo email di un account di servizio, puoi aggiungere l'indirizzo a un altro progetto e concedere il ruolo Utente immagine Compute (roles/compute.imageUser) per determinate immagini.

Console

  1. In Google Cloud Console, vai alla pagina Immagini del progetto immagine.

    Vai a Immagini

  2. Seleziona le caselle di controllo accanto alle immagini che vuoi condividere.

  3. Per espandere la colonna delle autorizzazioni, fai clic su Mostra riquadro informazioni.

  4. Nel riquadro Autorizzazioni, fai clic su Aggiungi entità.

  5. Nel campo Nuove entità, inserisci l'indirizzo email dell'account di servizio con cui vuoi condividere l'immagine. Ad esempio, test123@example.domain.com.

  6. Nell'elenco Ruolo, scegli Compute e seleziona Utente immagine Compute.

  7. (Facoltativo) Per controllare ulteriormente l'accesso degli utenti alle risorse Google Cloud, aggiungi un'associazione dei ruoli condizionale.

  8. Fai clic su Salva.

  9. Torna al progetto dell'account di servizio.

Ora puoi creare un modello di istanza basato su un'immagine dal progetto immagine e creare un MIG basato sul modello di istanza.

gcloud

Per concedere a un account di servizio l'accesso a un'immagine specifica, utilizza il comando gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/compute.imageUser'

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine che vuoi condividere.
  • SERVICE_ACCOUNT_EMAIL: l'indirizzo email dell'account di servizio

Ora puoi creare un modello di istanza basato su un'immagine dal progetto immagine e creare un MIG basato sul modello di istanza.

API

  1. Ottieni il criterio IAM di un'immagine utilizzando il metodo images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto immagine
    • IMAGE_NAME: il nome dell'immagine che vuoi condividere.
  2. Per concedere il ruolo roles/compute.imageUser all'account di servizio, modifica il criterio con un editor di testo:

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_EMAIL"
          ]
        }
      ]
    }
    

    Sostituisci SERVICE_ACCOUNT_EMAIL con l'indirizzo email dell'account di servizio.

  3. Scrivi il criterio aggiornato utilizzando il metodo images.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato del passaggio precedente.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto immagine
    • IMAGE_NAME: il nome dell'immagine che vuoi condividere.

    Ora puoi creare un modello di istanza basato su un'immagine dal progetto immagine e creare un MIG basato sul modello di istanza.

Controlla l'utilizzo delle immagini e delle istantanee condivise

Dopo aver condiviso le immagini con altri utenti, puoi controllare dove questi utenti utilizzano tali risorse all'interno della tua organizzazione. Imposta il vincolo constraints/compute.storageResourceUseRestrictions per definire i progetti in cui gli utenti sono autorizzati a utilizzare le risorse di archiviazione.

Per impostare questi vincoli, devi disporre dell'autorizzazione per modificare i criteri della tua organizzazione. Ad esempio, il ruolo resourcemanager.organizationAdmin ha l'autorizzazione per impostare questi vincoli.

  1. Trova l'ID organizzazione per la tua organizzazione utilizzando il comando gcloud organization list:

    gcloud organizations list
    
  2. Puoi configurare le impostazioni dei criteri esistenti per la tua organizzazione utilizzando il comando gcloud resource-manager org-policies describe:

    gcloud resource-manager org-policies describe \
        compute.storageResourceUseRestrictions \
        --organization ORGANIZATION_ID > org-policy.yaml
    

    Sostituisci ORGANIZATION_ID con il tuo ID organizzazione numerico di 12 cifre.

  3. Apri il file org-policy.yaml in un editor di testo e modifica il vincolo compute.storageResourceUseRestrictions. Aggiungi le restrizioni di cui hai bisogno o rimuovi quelle che non ti servono più. Al termine della modifica del file, salva le modifiche. Ad esempio, potresti impostare la seguente voce di vincolo nel file dei criteri:

    constraint: compute.storageResourceUseRestrictions
    listPolicy:
      allowedValues:
        - under:organization/organization-id
    
  4. Applica il file org-policy.yaml alla tua organizzazione utilizzando il comando gcloud resource-manager org-policies set-policy:

    gcloud resource-manager org-policies set-policy \
       --organization=ORGANIZATION_ID org-policy.yaml
    

    Sostituisci ORGANIZATION_ID con il tuo ID organizzazione numerico di 12 cifre.

Quando hai completato la configurazione dei vincoli nel criterio dell'organizzazione, verificali per assicurarti che creino le restrizioni desiderate.

Usa immagini di un altro progetto

Se qualcuno ti concede l'accesso a una o più immagini in un altro progetto, puoi accedere a queste immagini nel progetto specificando il progetto immagine nelle richieste.

Ad esempio, per creare una VM usando un'immagine condivisa da un altro progetto, segui questi passaggi:

Console

  1. In Google Cloud Console, vai alla pagina Crea un'istanza.

    Vai a Creare un'istanza

  2. Specifica un nome per la VM. Per saperne di più, vedi convenzione di denominazione delle risorse.
  3. Facoltativo: modifica la Zona per questa VM. Compute Engine randomizza l'elenco delle zone all'interno di ogni regione per incoraggiarne l'uso in più zone.
  4. Seleziona una configurazione della macchina per la tua VM.
  5. Nella sezione Disco di avvio, fai clic su Cambia per configurare il disco di avvio, quindi segui questi passaggi:
    1. Seleziona la scheda Immagini personalizzate.
    2. Per selezionare il progetto immagine, fai clic su Seleziona un progetto, quindi:
      1. Seleziona il progetto che contiene l'immagine.
      2. Fai clic su Apri.
    3. Nell'elenco Immagine, fai clic sull'immagine da importare.
    4. Seleziona il tipo e le dimensioni del disco di avvio.
    5. Per confermare le opzioni del disco di avvio, fai clic su Seleziona.
  6. Per consentire il traffico HTTP o HTTPS verso la VM, nella sezione Firewall, seleziona Consenti traffico HTTP o Consenti traffico HTTPS.

    Google Cloud Console aggiunge un tag di rete alla VM e crea la regola firewall in entrata corrispondente che consente tutto il traffico in entrata su tcp:80 (HTTP) o tcp:443 (HTTPS). Il tag di rete associa la regola firewall alla VM. Per scoprire di più, consulta la Panoramica delle regole firewall nella documentazione di Virtual Private Cloud.

  7. Per avviare e creare una VM, fai clic su Crea.

gcloud

Crea una VM utilizzando gcloud compute instances create command e utilizza i flag --image e --image-project per specificare il nome dell'immagine e il progetto in cui si trova l'immagine:

 gcloud compute instances create VM_NAME \
        --image=IMAGE \
        --image-project=IMAGE_PROJECT
    

Sostituisci quanto segue:

  • VM_NAME: name per la nuova VM
  • IMAGE: nome dell'immagine
  • IMAGE_PROJECT: progetto a cui appartiene l'immagine

Se il comando ha esito positivo, gcloud risponde con le proprietà della nuova VM:

    Created [https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b/instances/example-instance].
    NAME                 ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    example-instance     us-central1-b  e2-standard-2               10.240.0.4   104.198.53.60  RUNNING

API

La procedura per creare una VM con un'immagine condivisa nell'API è la stessa di una VM con un'immagine disponibile pubblicamente. Per creare la VM da un'immagine condivisa, utilizza il metodo instances.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
   "machineType":"zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
   "name":"VM_NAME",

   "disks":[
      {
         "initializeParams":{
            "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE"
         },
         "boot":true
      }
   ],

   "networkInterfaces":[
      {
         "network":"global/networks/NETWORK_NAME"
      }
   ],

   "shieldedInstanceConfig":{
      "enableSecureBoot":"ENABLE_SECURE_BOOT"
   }
}

Sostituisci quanto segue:

  • PROJECT_ID: ID del progetto in cui creare la VM
  • ZONE: zona in cui creare la VM
  • MACHINE_TYPE_ZONE: zona contenente il tipo di macchina da utilizzare per la nuova VM
  • MACHINE_TYPE: tipo di macchina, predefinita o personalizzata, per la nuova VM
  • VM_NAME: nome della nuova VM
  • IMAGE_PROJECT: nome del progetto che contiene l'immagine condivisa
  • IMAGE o IMAGE_FAMILY: specifica una delle seguenti opzioni:
    • IMAGE: nome dell'immagine condivisa. Ad esempio: "sourceImage": "projects/finance-project-1234/global/images/finance-debian-image-v2".
    • IMAGE_FAMILY: se l'immagine condivisa viene creata come parte di una famiglia di immagini personalizzate, specifica tale famiglia di immagini personalizzate.

      In questo modo la VM viene creata dall'immagine del sistema operativo più recente e non deprecata nella tua famiglia di immagini personalizzate. Ad esempio, se specifichi "sourceImage": "projects/finance-project-1234/global/images/family/finance-debian-family", Compute Engine crea una VM dall'ultima versione dell'immagine del sistema operativo nella famiglia di immagini finance-debian-family personalizzate.

  • NETWORK_NAME: la rete VPC da utilizzare per la VM. Puoi specificare default per utilizzare la rete predefinita.
  • ENABLE_SECURE_BOOT: facoltativo: se hai scelto un'immagine che supporta le funzionalità VM schermate, Compute Engine, per impostazione predefinita, abilita il modulo Virtual Platform Platform (vTPM) e il monitoraggio dell'integrità. Compute Engine non abilita Avvio protetto per impostazione predefinita.
    Se specifichi true per enableSecureBoot, Compute Engine crea una VM con tutte e tre le funzionalità Shielded VM abilitate. Dopo che Compute Engine ha avviato la VM, per modificare le opzioni della Shielded VM devi arrestare la VM.

Puoi anche creare dischi permanenti di avvio dalle immagini in un altro progetto. Per informazioni su come creare un disco di avvio da un'immagine, consulta la sezione Creazione di un disco permanente di avvio autonomo.

Revoca accesso alle immagini condivise

Dopo che un utente non ha più bisogno di accedere alle risorse di Compute Engine, revoca l'accesso utilizzando Google Cloud Console, Google Cloud CLI o l'API Compute Engine.

Console

  1. In Google Cloud Console, vai alla pagina Immagini del progetto immagine.

    Vai a Immagini

  2. Seleziona le caselle di controllo accanto alle immagini da aggiornare.

  3. Per espandere la colonna delle autorizzazioni, fai clic su Mostra riquadro informazioni.

  4. Espandi il ruolo per cui vuoi rimuovere gli utenti.

  5. Per rimuovere un utente dal ruolo, fai clic su Elimina.

gcloud

Per rimuovere un utente da un ruolo in un'immagine, utilizza il comando gcloud compute images remove-iam-policy-binding con i flag --member e --role:

gcloud compute images remove-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine, ad esempio my_image
  • MEMBER: l'identità che vuoi rimuovere

    Deve essere nel formato user|group|serviceAccount:email o domain:domain. 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'identità

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

API

  1. Leggi il criterio esistente con il metodo images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto a cui appartiene questa immagine
    • IMAGE_NAME: il nome dell'immagine

    Compute Engine restituisce il criterio corrente nella risposta.

  2. Per rimuovere i membri e i ruoli associati, modifica il criterio con un editor di testo.

  3. Scrivi il criterio aggiornato utilizzando il metodo images.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato del passaggio precedente.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/global/images/IMAGE_NAME:setIamPolicy
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto a cui appartiene questa immagine
    • IMAGE_NAME: il nome dell'immagine

Passaggi successivi