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 Identity and Access Management (IAM) appropriati. Questo documento descrive le autorizzazioni IAM necessarie per creare e gestire le immagini personalizzate e come assegnarle agli utenti.

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

Prima di iniziare

  • Leggi la documentazione di IAM.
  • Scopri di più sui ruoli IAM di Compute Engine, in particolare sul ruolo Utente immagini Compute (roles/compute.imageUser).
  • 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 immagini personalizzate, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per gestire l'accesso alle immagini personalizzate. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per gestire l'accesso alle immagini personalizzate sono necessarie le seguenti autorizzazioni:

  • Per concedere agli utenti o ai service account le autorizzazioni necessarie per creare e condividere immagini personalizzate:
    • resourcemanager.projects.getIamPolicy sul progetto
    • resourcemanager.projects.setIamPolicy sul progetto
  • Per concedere agli utenti o ai service account le autorizzazioni necessarie per eliminare le immagini personalizzate:
    • resourcemanager.projects.getIamPolicy sul progetto
    • resourcemanager.projects.setIamPolicy sul progetto
    • compute.images.getIamPolicy sull'immagine
    • compute.images.setIamPolicy sull'immagine
  • Per revocare l'accesso di un utente o di account di servizio alle immagini personalizzate:
    • resourcemanager.projects.getIamPolicy sul progetto
    • resourcemanager.projects.setIamPolicy sul progetto
  • Per creare un'istanza utilizzando un'immagine condivisa:
    • compute.instances.create sul progetto
    • Per utilizzare un'immagine personalizzata per creare la VM: compute.images.useReadOnly sull'immagine
    • Per utilizzare uno snapshot per creare la VM: compute.snapshots.useReadOnly sullo snapshot
    • Per utilizzare un template di istanza per creare la VM: compute.instanceTemplates.useReadOnly sul template di istanza
    • Per assegnare una rete legacy alla VM: compute.networks.use sul progetto
    • Per specificare un indirizzo IP statico per la VM: compute.addresses.use sul progetto
    • Per assegnare un indirizzo IP esterno alla VM quando viene utilizzata una rete legacy: compute.networks.useExternalIp sul progetto
    • Per specificare una subnet per la VM: compute.subnetworks.use sul progetto o sulla subnet scelta
    • Per assegnare un indirizzo IP esterno alla VM quando viene utilizzata una rete VPC: compute.subnetworks.useExternalIp sul progetto o sulla subnet scelta
    • Per impostare i metadati dell'istanza VM per la VM: compute.instances.setMetadata sul progetto
    • Per impostare i tag per la VM: compute.instances.setTags sulla VM
    • Per impostare le etichette per la VM: compute.instances.setLabels sulla VM
    • Per impostare un service account che la VM possa utilizzare: compute.instances.setServiceAccount sulla VM
    • Per creare un nuovo disco per la VM: compute.disks.create sul progetto
    • Per collegare un disco esistente in modalità di sola lettura o lettura/scrittura: compute.disks.use sul disco
    • Per collegare un disco esistente in modalità di sola lettura: compute.disks.useReadOnly sul disco

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

Limitazioni

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

Concedere l'autorizzazione per creare immagini personalizzate

Puoi consentire agli utenti di creare immagini personalizzate nella tua organizzazione o nel tuo progetto.

Compute Engine offre il ruolo predefinito Amministratore Compute Storage (roles/compute.storageAdmin) che puoi assegnare agli utenti in modo che possano creare, eliminare e gestire le risorse correlate allo spazio di archiviazione, tra cui immagini, dischi e snapshot. Se hai bisogno di un ruolo che consenta solo la creazione di immagini, devi creare un ruolo personalizzato. Nel tuo 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 viene creata da un disco
  • compute.disks.list se gli utenti devono elencare tutti i dischi in un progetto

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

Console

  1. Nella console Google Cloud , vai alla pagina IAM per il progetto o l'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:

    • Indirizzo email dell'Account Google: test-user@gmail.com
    • Gruppo Google: admins@googlegroups.com
    • Identità di un provider di identità esterno: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Service account: server@example.gserviceaccount.com
    • Dominio Google Workspace: example.com
  4. Nell'elenco Seleziona un ruolo, seleziona Compute Engine > Amministratore spazio di archiviazione Compute 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 binding 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:

    • Indirizzo email dell'Account Google: user:user@gmail.com
    • Gruppo Google: group:admins@googlegroups.com
    • Identità di un provider di identità esterno: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Service account: serviceAccount:server@example.gserviceaccount.com
    • Dominio Google Workspace: domain:example.com

REST

  1. Leggi le norme esistenti 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 relativi ruoli associati, modifica il criterio con un editor di testo. Utilizza il seguente formato 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 il seguente binding al criterio:

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

    Ad esempio, per impostare una policy 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.

Concedere autorizzazioni per eliminare immagini personalizzate

A seconda delle tue esigenze, puoi concedere agli utenti l'autorizzazione a eseguire le seguenti operazioni:

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

La concessione dell'autorizzazione a livello di progetto consente agli utenti di eliminare tutte le immagini di proprietà di quel progetto. La concessione dell'autorizzazione a livello di organizzazione consente all'utente di eliminare qualsiasi immagine di proprietà dell'organizzazione, indipendentemente dal progetto.

Compute Engine offre il ruolo predefinito Amministratore Compute Storage (roles/compute.storageAdmin) che puoi assegnare agli utenti in modo che possano creare, eliminare e gestire le risorse correlate 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 le immagini nel progetto o nell'organizzazione
  • compute.images.get per ottenere le immagini

Console

Per concedere l'autorizzazione a eliminare immagini specifiche:

  1. Nella console Google Cloud 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 principal.

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

    Ad esempio:

    • Indirizzo email dell'Account Google: test-user@gmail.com
    • Gruppo Google: admins@googlegroups.com
    • Identità di un provider di identità esterno: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Service account: 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 binding dei ruoli condizionale.

  8. Salva le modifiche.

Per concedere l'autorizzazione a eliminare immagini per un progetto o un'organizzazione:

  1. Vai alla pagina IAM per il progetto o l'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:

    • Indirizzo email dell'Account Google: test-user@gmail.com
    • Gruppo Google: admins@googlegroups.com
    • Identità di un provider di identità esterno: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Service account: 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 binding dei ruoli condizionale.

  6. Salva le modifiche.

gcloud

Per concedere le autorizzazioni per eliminare le 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, 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:

  • ORGANIZATION_ID o PROJECT_ID o IMAGE_NAME: l'ID organizzazione numerico a 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:

    • Indirizzo email dell'Account Google: user:user@gmail.com
    • Gruppo Google: group:admins@googlegroups.com
    • Identità di un provider di identità esterno: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Service account: 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

REST

  1. Leggi la policy 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 organizzazione numerico 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 associati, puoi modificare il criterio con un editor di testo. Utilizza il seguente formato 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 il seguente binding 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 una policy a livello di progetto, utilizza il metodo project.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato dal passaggio precedente.

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

    Sostituisci PROJECT_ID con l'ID progetto.

Concedere le autorizzazioni per condividere immagini personalizzate all'interno di un'organizzazione

Se il tuo progetto appartiene a un'organizzazione, questa può avere diversi altri progetti con livelli di accesso variabili ad altri progetti. Quando crei immagini personalizzate, puoi condividerle con altri utenti di 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 archiviazione Compute (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 all'hosting di queste immagini. Questa pratica migliora la gestione di queste immagini e ti consente di concedere a team specifici l'accesso solo alle immagini di cui hanno bisogno. Puoi anche concedere ai team l'accesso all'intero progetto di immagini, ma poiché l'accesso dei team all'intero progetto di immagini viola il principio del privilegio minimo, non lo consigliamo.

L'esempio riportato di seguito mostra come aggiungere un gruppo in modo che gli utenti di quel gruppo abbiano accesso all'immagine.

Console

  1. Nella console Google Cloud 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 principal.

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

    Ad esempio:

    • Indirizzo email dell'Account Google: test-user@gmail.com
    • Gruppo Google: admins@googlegroups.com
    • Identità di un provider di identità esterno: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Service account: server@example.gserviceaccount.com
    • Dominio Google Workspace: example.com
  6. Nell'elenco Ruolo, tieni il puntatore del mouse su Compute Engine e seleziona Utente immagini o Amministratore Storage oppure seleziona un ruolo personalizzato.

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

  8. Salva le modifiche.

Per consentire agli utenti di avviare immagini personalizzate condivise dalla console Google Cloud , concedi agli utenti il ruolo IAM Visualizzatore (roles/viewer) per il progetto di immagini. 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:

    • Indirizzo email dell'Account Google: test-user@gmail.com
    • Gruppo Google: admins@googlegroups.com
    • Identità di un provider di identità esterno: principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • Service account: 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 binding dei ruoli condizionale.

  6. Salva le modifiche.

gcloud

Per aggiornare la policy 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 a cui 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

Se vuoi 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 di immagini utilizzando il comando gcloud projects add-iam-policy-binding. Se non vuoi 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'

REST

  1. Leggi le norme esistenti con il metodo getIamPolicy della risorsa. Ad esempio, per ottenere il criterio relativo a 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 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 associati, modifica il criterio con un editor di testo. Utilizza il seguente formato 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 un criterio su un'immagine specifica, utilizza il metodo project.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato dal passaggio precedente.

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

    Sostituisci quanto segue:

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

Se vuoi 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 di immagini utilizzando il metodo projects.setIamPolicy. Se non vuoi che gli utenti possano visualizzare l'elenco delle immagini condivise, puoi saltare questo passaggio.

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

Concedere le autorizzazioni per 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 tue immagini con utenti esterni all'organizzazione, aggiungili come utenti delle immagini al tuo progetto:

Console

  1. Nella console Google Cloud 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 principal.

  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 Compute Image User.

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

  8. Salva le modifiche.

Per consentire agli utenti di avviare immagini personalizzate condivise dalla console Google Cloud , concedi agli utenti il ruolo IAM Visualizzatore (roles/viewer) per il progetto di immagini. 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 binding 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 a cui vuoi concedere il ruolo, ad esempio group:admins@example.com

Se vuoi 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 di immagini utilizzando il comando gcloud projects add-iam-policy-binding. Se non vuoi 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'

REST

  1. Leggi le norme esistenti con il metodo getIamPolicy della risorsa. Ad esempio, per ottenere il criterio relativo a 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 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 associati, puoi modificare il criterio con un editor di testo. Utilizza il seguente formato 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 su un'immagine specifica, utilizza il metodo images.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato dal passaggio precedente.

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

    Sostituisci quanto segue:

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

    Se vuoi 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 di immagini utilizzando il metodo projects.setIamPolicy. Se non vuoi che gli utenti possano visualizzare l'elenco delle immagini condivise, puoi saltare questo passaggio.

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

Concedere le autorizzazioni per condividere pubblicamente le immagini personalizzate

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

Puoi condividere risorse, come immagini, solo con tutti gli utenti autenticati; non puoi condividere progetti o organizzazioni con tutti gli utenti autenticati. Questa limitazione e la gerarchia delle risorse contribuiscono a impedire a un'organizzazione di condividere inavvertitamente l'intero progetto con tutti gli utenti Compute Engine autenticati.

L'esempio seguente mostra come concedere a tutti gli utenti 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.

REST

  1. Leggi le norme esistenti con il metodo getIamPolicy. Ad esempio, per ottenere il criterio relativo a 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 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 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 su un'immagine specifica, utilizza il metodo images.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato dal passaggio precedente.

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto 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 istanze come gruppi di istanze gestite o non gestite. Se crei un gruppo di istanze gestite (MIG), Compute Engine utilizza l'agente di servizio API di Google per chiamare l'API Compute Engine ed eseguire azioni correlate al gruppo, ad esempio ricreare istanze non integre e aggiornare le istanze.

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

  1. Il progetto A vuole creare un MIG utilizzando immagini di proprietà del progetto B.
  2. Il progetto B concede all'account di servizio del progetto A il ruolo Utente immagini Compute.
  3. Il progetto A ora può utilizzare le immagini del progetto B per creare MIG.

Dopo aver concesso il ruolo Utente immagini 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.

Ottieni l'indirizzo email del account di servizio

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

    Vai a IAM

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

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

    PROJECT_NUMBER@cloudservices.gserviceaccount.com
    

Dopo aver recuperato l'indirizzo email del account di servizio, puoi passare a una delle seguenti sezioni:

Concedere a un gruppo di istanze gestite l'accesso a tutte le immagini di un progetto

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

Console

  1. Nella console Google Cloud vai alla pagina IAM del progetto dell'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 Compute Image User.

  5. (Facoltativo) Per controllare ulteriormente l'accesso degli utenti alle risorse Google Cloud, aggiungi un binding 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 del progetto di immagini e creare un gruppo di istanze gestite 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'email del account di serviziot

Ora puoi creare un modello di istanza basato su un'immagine del progetto di immagini e creare un gruppo di istanze gestite basato sul modello di istanza.

REST

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

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

    Sostituisci PROJECT_ID con l'ID progetto del progetto immagine.

  2. Per concedere il ruolo roles/compute.imageUser al 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'email del account di servizio.

  3. Scrivi il criterio aggiornato utilizzando projects.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato dal 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 del progetto di immagini e creare un gruppo di istanze gestite basato sul modello di istanza.

Concedere a un gruppo di istanze gestite l'accesso a immagini specifiche in un progetto

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

Console

  1. Nella console Google Cloud , vai alla pagina Immagini del progetto dell'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'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 immagini Compute.

  7. (Facoltativo) Per controllare ulteriormente l'accesso degli utenti alle risorse, Google Cloud aggiungi un binding 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 del progetto di immagini e creare un gruppo di istanze gestite 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'email del account di serviziot

Ora puoi creare un modello di istanza basato su un'immagine del progetto di immagini e creare un gruppo di istanze gestite basato sul modello di istanza.

REST

  1. Recupera 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 progetto del progetto immagine
    • IMAGE_NAME: il nome dell'immagine che vuoi condividere
  2. Per concedere il ruolo roles/compute.imageUser al 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'email del account di servizio.

  3. Scrivi la policy aggiornata utilizzando il metodo images.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato dal passaggio precedente.

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

    Sostituisci quanto segue:

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

    Ora puoi creare un modello di istanza basato su un'immagine del progetto di immagini e creare un gruppo di istanze gestite basato sul modello di istanza.

Controllare l'utilizzo delle immagini e degli snapshot condivisi

Dopo aver condiviso le immagini con altri utenti, puoi controllare dove questi utenti utilizzano queste 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 dispone dell'autorizzazione per impostare questi vincoli.

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

    gcloud organizations list
    
  2. Ottieni 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 l'ID organizzazione numerico a 12 cifre.

  3. Apri il file org-policy.yaml in un editor di testo e modifica il vincolo compute.storageResourceUseRestrictions. Aggiungi le limitazioni 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 delle norme:

    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 l'ID organizzazione numerico a 12 cifre.

Al termine della configurazione dei vincoli nel criterio dell'organizzazione, testali per assicurarti che creino le limitazioni che desideri.

Utilizzare 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 di immagini nelle tue richieste.

Ad esempio, per creare un'istanza utilizzando un'immagine condivisa di un altro progetto, segui i passaggi descritti in Crea un'istanza da un'immagine condivisa.

Puoi anche creare volumi del disco di avvio dalle immagini in un altro progetto. Per informazioni sulla creazione di un disco di avvio da un'immagine, consulta Creazione di un disco permanente di avvio autonomo.

Revocare l'accesso alle immagini condivise

Quando un utente non ha più bisogno di accedere alle tue risorse Compute Engine, revoca il suo accesso utilizzando la console Google Cloud , Google Cloud CLI o REST.

Console

  1. Nella console Google Cloud , vai alla pagina Immagini del progetto dell'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 da questo 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 in versione beta, utilizza un comando gcloud beta compute.

REST

  1. Leggi le norme esistenti 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 relativi ruoli associati, modifica il criterio con un editor di testo.

  3. Scrivi la policy aggiornata utilizzando il metodo images.setIamPolicy. Nel corpo della richiesta, fornisci il criterio IAM aggiornato dal 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