Condivisione dei tipi tra progetti

Questa pagina descrive come condividere i tipi e i fornitori di tipi che appartengono al tuo progetto con altri progetti. Ad esempio, supponiamo che tu abbia un progetto responsabile della gestione dei fornitori di tipi pre-approvati per la tua azienda. Vuoi poter condividere questi fornitori di tipi da questo progetto con altri progetti e utilizzare il progetto come repository centrale di tipi. Allo stesso modo, puoi anche utilizzare questo metodo per condividere i tipi composti tra i progetti.

Per configurare l'accesso, un proprietario del progetto che possiede il tipo dovrà concedere il ruolo deploymentmanager.typeViewer (beta) al service account del progetto che vuole utilizzare i tipi. Deve anche concedere il ruolo agli utenti che vogliono visualizzare ed elencare i tipi di un altro progetto.

Prima di iniziare

  • Se vuoi utilizzare gli esempi di riga di comando in questa guida, installa lo strumento a riga di comando `gcloud`.
  • Se vuoi utilizzare gli esempi di API in questa guida, configura l'accesso alle API.
  • Leggi le informazioni sulle configurazioni di Deployment Manager configurations.
  • Leggi le informazioni 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 del progetto specifico. Non è possibile limitare la condivisione a singoli tipi.
  • Non è possibile concedere questo ruolo a allAuthenticatedUsers o allUsers.

Concedere a un progetto l'accesso per utilizzare i tipi

Per concedere l'accesso ai tipi appartenenti ad altri progetti, il proprietario del progetto che possiede i tipi in questione deve concedere il deploymentmanager.typeViewer ruolo al service account API di Google del progetto che vuole utilizzare i tipi.

  1. Vai alla pagina IAM nella Google Cloud console del progetto che utilizzerà i tipi.

    Vai alla pagina IAM

  2. Se richiesto, seleziona il progetto dall'elenco.
  3. Cerca il service account API di Google, con indirizzo email nel seguente formato:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Prendi nota dell'indirizzo email sopra indicato. Successivamente, un proprietario del progetto in cui si trovano i tipi desiderati può concedere al account di servizio API di Google il ruolo roles/deploymentmanager.typeViewer.

    Console

    1. Mentre sei ancora nella Google Cloud console, vai alla pagina IAM del progetto che contiene i tipi che vuoi condividere.

      Vai alla pagina IAM

    2. Seleziona il progetto dall'elenco dei progetti.
    3. Fai clic sul pulsante Aggiungi per aggiungere un nuovo membro.
    4. Nella casella Membri, inserisci l'indirizzo email del account di servizio.
    5. Espandi il menu a discesa Ruoli e seleziona Altro > Visualizzatore di tipi di Deployment Manager (beta).
    6. Fai clic su Aggiungi per aggiungere l'account.

    gcloud

    Con Google Cloud CLI, aggiungi un binding 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 condividere.
    • [SERVICE_ACCOUNT_EMAIL] è l'indirizzo email del 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, invia una richiesta POST al seguente URL, 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 dei binding che vuoi applicare a questo progetto. Il ruolo roles/deploymentmanager.typeViewer deve far parte del binding. Ad esempio:

    {
       "policy": {
           "version": "0",
           "bindings": [
           {
               "role": "roles/owner",
               "members": [
                   "user:example@gmail.com"
               ]
           },
           {
               "role": "roles/deploymentmanager.typeViewer",
               "members": [
                   "serviceAccount:123456789012@cloudservices.gserviceaccount.com"
               ]
           }
           ]
       }
    

    }

Utilizzare i tipi di altri progetti nella configurazione

Una volta che hai accesso ai tuoi tipi, puoi specificare il tipo 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 che possiede il tipo.
  • [TYPE] è il nome del fornitore di tipi o del tipo composto.
  • [COLLECTION] è la risorsa specifica che stai creando. Questo è applicabile solo ai tipi di base. Per ulteriori informazioni sulla specifica dei tipi di base, consulta Chiamare un fornitore di tipi in una configurazione.

Ad esempio, se l'ID progetto è my-type-repository, potresti 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 al account di servizio del progetto consente al progetto di eseguire il deployment di questi tipi nelle configurazioni, ma non consente agli utenti di visualizzare o elencare questi tipi. Se vuoi concedere ai singoli utenti la possibilità di visualizzare i tipi, devi concedere il ruolo deploymentmanager.typeViewer a ogni utente.

Ad esempio, affinché Jane possa eseguire il gcloud beta deployment-manager types list --project another-project comando per un progetto che non le appartiene, il proprietario di another-project deve concedere a Jane il ruolo deploymentmanager.typeViewer.

Utilizzando gcloud CLI, puoi concedere il ruolo a Jane nel seguente 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 di ruoli dagli utenti, consulta la documentazione relativa alla concessione, alla modifica e alla revoca dell'accesso ai membri del progetto.

Passaggi successivi