Condivisione dei tipi tra progetti

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

In questa pagina viene descritto come condividere tipi e fornitori di tipi appartenenti al tuo progetto con altri progetti. Ad esempio, supponiamo che tu abbia un progetto responsabile della gestione dei provider di tipi preapprovati per la tua azienda. Vuoi poter condividere questi provider di tipi di quel progetto con altri progetti e utilizzare il progetto come un repository centrale di tipi. Analogamente, puoi utilizzare questo metodo anche per condividere tipi composti tra progetti.

Per configurare l'accesso, un proprietario del progetto di proprietà 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 da un altro progetto.

Prima di iniziare

Limitazioni

Di seguito sono riportate le limitazioni per l'uso di questa funzionalità:

  • La concessione 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 o allUsers.

Concessione a un progetto dell'accesso per utilizzare i tipi

Per concedere l'accesso ai tipi che appartengono ad altri progetti, il proprietario del progetto che possiede i tipi in questione deve concedere il ruolo deploymentmanager.typeViewer all'account di servizio delle API di Google del progetto che vuole consumare i tipi.

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

    Vai alla pagina IAM

  2. Se richiesto, seleziona il progetto nell'elenco.
  3. Cerca l'account di servizio delle API di Google, che ha l'indirizzo email nel seguente formato:

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

    console

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

      Vai alla pagina IAM

    2. Seleziona il progetto nell'elenco dei progetti.
    3. Fai clic sul pulsante Aggiungi per aggiungere un nuovo membro.
    4. Nella casella Members (Membri), inserisci l'indirizzo email dell'account di servizio.
    5. Espandi il menu a discesa Ruoli e seleziona Altro > Visualizzatore tipi di Deployment Manager (beta).
    6. 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 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

    Server

    Nell'API, esegui 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 delle associazioni che vuoi applicare al progetto. Il ruolo roles/deploymentmanager.typeViewer dovrebbe 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 che hai 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 fornitore del tipo o del tipo composto.
  • [COLLECTION] è la risorsa specifica che stai creando. Questa opzione è applicabile solo ai tipi di base. Per saperne di più su come specificare i tipi di base, leggi Chiamare 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 dell'account di servizio del progetto deploymentmanager.typeViewer al progetto del servizio consente al progetto di eseguire il deployment di questi tipi nelle configurazioni, ma non permette 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, perché Jane possa eseguire il comando gcloud beta deployment-manager types list --project another-project per un progetto che non appartiene a lei, la proprietaria di another-project deve concedere a Jane il ruolo di deploymentmanager.typeViewer.

Utilizzando l'interfaccia a riga di comando gcloud, 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 degli utenti, leggi la documentazione relativa alla concessione, la modifica e la revoca dell'accesso ai membri del progetto.

Passaggi successivi