In questa pagina viene descritto come condividere i tipi e i provider di tipi che appartengono al tuo progetto con altri progetti. Ad esempio, supponiamo che tu abbia un progetto responsabile della gestione di provider di tipi preapprovati per la tua azienda. Vuoi essere in grado di condividere questi provider di tipi da quel progetto con altri progetti e utilizzare il progetto come repository centrale dei tipi. Allo stesso modo, puoi utilizzare questo metodo anche per condividere tipi composti tra progetti.
Per configurare l'accesso, un proprietario del progetto proprietario del tipo dovrà concedere il ruolo deploymentmanager.typeViewer
(beta) all'account di servizio del progetto che vuole utilizzare i tipi. Deve inoltre concedere il ruolo agli utenti che vogliono visualizzare ed elencare i tipi di un altro progetto.
Prima di iniziare
- Se vuoi utilizzare gli esempi a riga di comando di questa guida, installa lo strumento a riga di comando "gcloud".
- Se vuoi utilizzare gli esempi di API descritti in questa guida, configura l'accesso alle API.
- Leggi ulteriori informazioni sulle configurazioni di Deployment Manager.
- Scopri di più sui Tipi.
- Leggi la documentazione di Identity and Access Management (IAM).
Limitazioni
Di seguito sono riportate le limitazioni per l'utilizzo di questa funzionalità:
- La concessione del ruolo
deploymentmanager.typeViewer
concede le autorizzazioni a tutti i tipi nel progetto specifico. Non è possibile limitare la condivisione ai singoli tipi. - Non è possibile concedere questo ruolo a
allAuthenticatedUsers
oallUsers
.
Concedere l'accesso a un progetto per utilizzare i tipi
Per concedere l'accesso ai tipi che appartengono ad altri progetti, il proprietario del progetto proprietario dei tipi in questione deve concedere il ruolo deploymentmanager.typeViewer
all'account di servizio API di Google del progetto che vuole utilizzare i tipi.
- Vai alla pagina IAM nella console Google Cloud del progetto che utilizzerà i tipi.
- Se richiesto, seleziona il progetto dall'elenco.
Cerca l'account di servizio API di Google, che ha l'indirizzo email nel seguente formato:
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
Prendi nota dell'indirizzo email qui sopra. Successivamente, un proprietario del progetto in cui si trovano i tipi desiderati può concedere all'account di servizio API di Google il ruolo
roles/deploymentmanager.typeViewer
.Console
- Sempre nella console Google Cloud, vai alla pagina IAM del progetto che contiene i tipi da condividere.
- 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 Altro > Visualizzatore tipi di Deployment Manager (beta).
- 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/deploymentmanager.typeViewer
dove:
[PROJECT_ID]
è l'ID del progetto che contiene le immagini da condividere.[SERVICE_ACCOUNT_EMAIL]
è l'indirizzo email dell'account di servizio nel progetto con cui vuoi condividere i tipi.
Ad esempio:
gcloud projects add-iam-policy-binding database-images \ --member serviceAccount:123456789012@cloudservices.gserviceaccount.com \ --role roles/deploymentmanager.typeViewer
API
Nell'API, effettua una richiesta
POST
al seguente URL, dove[PROJECT_ID]
è l'ID del progetto contenente i tipi da 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/deploymentmanager.typeViewer
deve far parte dell'associazione. Ad esempio:{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com" ] }, { "role": "roles/deploymentmanager.typeViewer", "members": [ "serviceAccount:123456789012@cloudservices.gserviceaccount.com" ] } ] }
}
Utilizzo di tipi di altri progetti nella configurazione
Una volta ottenuto l'accesso ai tipi, puoi specificare il tipo nelle configurazioni utilizzando la sintassi. Per i tipi composti:
type: [PROJECT_ID]/composite:[TYPE]
Per i fornitori dei tipi:
type: [PROJECT_ID]/[TYPE]:[COLLECTION]
Dove:
[PROJECT_ID]
è l'ID progetto proprietario del tipo.[TYPE]
è il nome del provider del tipo o del tipo composto.[COLLECTION]
è la risorsa specifica che stai creando. Si applica solo ai tipi di base. Per saperne di più sulla specifica dei tipi di base, consulta Chiamata di un provider dei tipi in una configurazione.
Ad esempio, se l'ID progetto è my-type-repository
, puoi fornire la seguente specifica del tipo:
resources: - name: a-special-vm type: my-type-repository/composite:autoscaled-igm properties: ...
Concedere agli utenti la possibilità di elencare e visualizzare i tipi
La concessione del ruolo deploymentmanager.typeViewer
all'account di servizio del progetto consente al progetto di eseguire il deployment di questi tipi nelle tue configurazioni, ma non consente agli utenti di visualizzare o elencare questi tipi. Se vuoi concedere a singoli utenti la possibilità di visualizzare i tipi, devi concedere il ruolo deploymentmanager.typeViewer
a ciascun utente.
Ad esempio, per far sì che Sara possa eseguire il comando gcloud beta deployment-manager types list --project another-project
per un progetto che non le appartiene, il proprietario di another-project
deve concedere a Giovanna il ruolo deploymentmanager.typeViewer
.
Utilizzando lgcloud CLI, puoi concedere a Jane il ruolo in questo modo:
gcloud projects add-iam-policy-binding another-project \
--member user:jane@gmail.com --role deploymentmanager.typeViewer
Per istruzioni complete sull'aggiunta e la rimozione dei ruoli dagli utenti, leggi la documentazione su come concedere, modificare e revocare l'accesso ai membri del progetto.
Che cosa succede dopo?
- Scopri gli altri ruoli IAM che puoi concedere.
- Scopri di più sugli account di servizio.