Questa pagina descrive come configurare il progetto in modo che Deployment Manager possa creare istanze di macchine virtuali Compute Engine utilizzando immagini del sistema operativo appartenenti a un altro progetto.
Ad esempio, supponiamo che tu abbia un progetto denominato Progetto fantastico in cui Deployment Manager crea e gestisce le istanze VM. Supponiamo ora che tu debba utilizzare immagini private che appartengono a un altro progetto denominato Immagini database.
Per concedere l'accesso a queste immagini, il proprietario delle immagini database deve concedere
il ruolo IAM roles/compute.imageUser
Account di servizio API di Google
di Awesome Project e Awesome Project possono quindi utilizzare le immagini
progetto Images.
Puoi utilizzare questa procedura anche per concedere ai gruppi di istanze gestite l'accesso alle immagini di altri progetti.
Prima di iniziare
- Se vuoi utilizzare gli esempi a riga di comando presenti in questa guida, installa lo strumento a riga di comando "gcloud".
- Se vuoi utilizzare gli esempi di API in questa guida, configura l'accesso API.
- Scopri di più sulle configurazioni di Deployment Manager.
- Scopri di più sulle immagini private di Compute Engine.
- Leggi la documentazione di Identity and Access Management (IAM).
- Leggi informazioni sui ruoli IAM di Deployment Manager, in particolare sul ruolo
roles/compute.imageUser
.
Limitazioni
Di seguito sono riportate le limitazioni relative all'utilizzo di questa funzionalità:
- Devi concedere il ruolo
compute.imageUser
a livello di progetto all'account di servizio API di Google del tuo progetto. - La concessione del ruolo
compute.imageUser
concede le autorizzazioni a tutte le immagini del progetto specifico. Non è possibile condividere immagini specifiche. - Devi concedere questo ruolo a utenti specifici e non a
allAuthenticatedUsers
oppureallUsers
.
Concessione dell'accesso alle immagini
Per concedere l'accesso alle immagini che appartengono a un altro progetto, il proprietario del progetto che possiede le immagini deve concedere l'accesso all'account di servizio delle API di Google del progetto che vuole utilizzare le immagini.
- Vai alla pagina IAM nella console Google Cloud del progetto che necessita di accedere alle immagini private di proprietà di un altro progetto.
- Se richiesto, seleziona il progetto dall'elenco. Ricordati di selezionare il progetto che deve accedere alle immagini archiviate in un altro progetto.
Cerca l'account di servizio API di Google, che ha un indirizzo email nel seguente formato:
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
Prendi nota dell'indirizzo email riportato sopra. Successivamente, un proprietario del progetto in cui si trovano le immagini desiderate può concedere all'account di servizio delle API di Google il ruolo
roles/compute.imageUser
.Console
- Sempre nella console Google Cloud, vai alla pagina IAM del progetto che contiene le immagini a cui vuoi accedere.
- Seleziona il progetto dall'elenco dei progetti.
- Fai clic sul pulsante Aggiungi per aggiungere un nuovo membro.
- Nella casella Membri, inserisci l'indirizzo email dell'account di servizio.
- Espandi il menu a discesa Ruoli e seleziona Compute Engine > Utente immagine Compute.
- Fai clic su Aggiungi per aggiungere l'account.
gcloud
Con Google Cloud CLI, aggiungi un'associazione al criterio IAM per il progetto:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/compute.imageUser
dove:
[PROJECT_ID]
è l'ID del progetto contenente le immagini da condividere.[SERVICE_ACCOUNT_EMAIL]
è l'indirizzo email dell'account di servizio.
Ad esempio:
gcloud projects add-iam-policy-binding database-images \ --member serviceAccount:123456789012@cloudservices.gserviceaccount.com \ --role roles/compute.imageUser
API
Nell'API, invia una richiesta
POST
al seguente URL, dove[PROJECT_ID]
è l'ID del progetto contenente le immagini che vuoi condividere.POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
Il corpo della richiesta deve contenere l'elenco di associazioni da applicare a questo progetto. Il ruolo
roles/compute.imageUser
deve far parte dell'associazione. Ad esempio:{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com" ] }, { "role": "roles/compute.imageUser", "members": [ "serviceAccount:123456789012@cloudservices.gservbiceaccount.com" ] } ] }
}
Utilizzo di immagini di altri progetti nella configurazione
Dopo che a un progetto è stato concesso l'accesso alle immagini di un altro progetto, gli utenti del progetto possono utilizzare le immagini specificando l'ID del progetto a cui appartengono le immagini nei modelli o nelle configurazioni:
image: projects/[PROJECT_ID]/global/images/[IMAGE_NAME]
Ad esempio, se l'ID progetto immagine è database-images
, potresti
fornisci il seguente URI immagine nella tua configurazione:
resources: - name: a-special-vm type: compute.v1.instances properties: machineType: zones/us-central1-a/machineTypes/f1-micro image: projects/database-images/global/images/example-database-image ...
Dopo aver aggiunto l'immagine, completa la creazione della configurazione, quindi esegui il deployment.
Passaggi successivi
- Scopri di più sulla condivisione di immagini.
- Scopri di più sulle immagini di Compute Engine.
- Scopri gli altri ruoli IAM che puoi concedere.
- Scopri di più sugli account di servizio.