Questa pagina descrive come condividere tipi e provider di tipi che appartengono al tuo progetto con altri progetti. Ad esempio, supponiamo che tu abbia una responsabile della manutenzione dei fornitori dei tipi preapprovati per il tuo dell'azienda. Vuoi poter condividere questi provider di tipi da quel progetto con altri progetti e di utilizzarlo come repository centrale di tipi. Analogamente, puoi utilizzare questo metodo per condividere tipi compositi tra in modo programmatico a gestire i 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. Inoltre, devono assegnare 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 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ù sui tipi.
- Leggi la documentazione di Identity and Access Management (IAM).
Limitazioni
Di seguito sono riportate le limitazioni per l'utilizzo di questa funzionalità:
- L'assegnazione del ruolo
deploymentmanager.typeViewer
concede le autorizzazioni a tutti i tipi nel progetto specifico. Non è possibile limitare la condivisione a singoli tipi. - Non è possibile concedere questo ruolo a
allAuthenticatedUsers
oppureallUsers
.
Concessione dell'accesso a un progetto per l'utilizzo dei tipi
Per concedere l'accesso ai tipi appartenenti ad altri progetti, il proprietario del progetto proprietario dei tipi in questione deve concedere il ruolo deploymentmanager.typeViewer
al
service account delle API di Google del progetto che vuole utilizzare i tipi.
- Vai alla pagina IAM nella console Google Cloud del progetto che consumerà 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 riportato sopra. Successivamente, un proprietario del progetto in cui si trovano i tipi desiderati può concedere all'account di servizio delle API Google il ruolo
roles/deploymentmanager.typeViewer
.Console
- Sempre nella console Google Cloud, vai alla pagina IAM del progetto che contiene i tipi che vuoi 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 dei 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 contenente le immagini che vuoi condividi.[SERVICE_ACCOUNT_EMAIL]
è l'indirizzo email dell'account di servizio in del 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, invia una richiesta
POST
all'URL riportato di seguito, dove[PROJECT_ID]
è l'ID del progetto contenente i tipi che vuoi condividere.POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
Il corpo della richiesta deve contenere l'elenco delle 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 dei tipi di altri progetti nella configurazione
Una volta ottenuto l'accesso ai tipi, puoi specificarli nelle configurazioni utilizzando la sintassi. Per i tipi composti:
type: [PROJECT_ID]/composite:[TYPE]
Per i fornitori di tipi:
type: [PROJECT_ID]/[TYPE]:[COLLECTION]
Dove:
[PROJECT_ID]
è l'ID progetto proprietario del tipo.[TYPE]
è il nome del provider di tipi o del tipo composito.[COLLECTION]
è la risorsa specifica che stai creando. Questo vale solo per i tipi di base. Per ulteriori informazioni sulla specifica dei tipi di base, consulta Calling a Type Provider in a Configuration (Chiamata di un provider dei tipi in una configurazione).
Ad esempio, se l'ID progetto è my-type-repository
, potresti
fornisce 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
Se concedi all'account di servizio del progetto il ruolo deploymentmanager.typeViewer
, il progetto può eseguire il deployment di questi tipi nelle configurazioni, ma gli utenti non possono visualizzarli o elencarli. Se vuoi concedere a singoli utenti
per poter visualizzare i tipi, devi concedere l'autorizzazione deploymentmanager.typeViewer
ruolo per ciascun utente.
Ad esempio, affinché Jane 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 concederle il ruolo deploymentmanager.typeViewer
.
Utilizzando gcloud 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 su come aggiungere e rimuovere i ruoli dagli utenti, consulta la documentazione su come concedere, modificare e revocare l'accesso ai membri del progetto.
Passaggi successivi
- Scopri gli altri ruoli IAM che puoi concedere.
- Scopri di più sugli account di servizio.