Lavorare su più progetti

A seconda delle tue esigenze, potresti dover progettare l'architettura in modo che funzioni su più progetti quando utilizzi l'inventario delle risorse Cloud. I seguenti scenari sono i più comuni:

Ognuno di questi scenari richiede una certa configurazione per garantire il completamento corretto delle operazioni.

Progetti di Orchestrator

Quando utilizzi un progetto per attivare operazioni di inventario delle risorse cloud sulle risorse di un altro progetto, in alcuni scenari devi specificare che per eseguire l'operazione venga utilizzato l'account di servizio predefinito di Cloud Asset Inventory nell'altro progetto. Questi scenari includono:

Per impostare l'account di servizio da utilizzare, imposta il progetto di fatturazione sull'ID del progetto che contiene le risorse su cui stai operando. Se il progetto di fatturazione non è specificato, Cloud Asset Inventory utilizza l'account di servizio Cloud Asset Inventory predefinito nel progetto che effettua la chiamata, che potrebbe non disporre delle autorizzazioni necessarie per completare l'operazione.

Sebbene non sia obbligatorio per tutte le operazioni, può essere buona norma specificare sempre un progetto di fatturazione per ridurre al minimo la confusione.

gcloud

Per l'interfaccia a riga di comando gcloud, aggiungi il flag --billing-project al comando per specificare l'ID progetto contenente l'account di servizio corretto:

--billing-project=BILLING_PROJECT_ID

In alternativa, puoi impostare il progetto di fatturazione prima di eseguire i comandi con gcloud CLI. Innanzitutto, controlla se il progetto di fatturazione è diverso da quello principale:

gcloud config list

Se necessario, imposta il progetto di fatturazione:

gcloud config set billing/quota_project BILLING_PROJECT_ID

Fornisci i seguenti valori:

  • BILLING_PROJECT_ID: un ID progetto per il quale è attivata l'API Cloud Asset Inventory e un account di servizio con autorizzazioni per gestire l'argomento Pub/Sub, il bucket Cloud Storage o la tabella BigQuery di destinazione.

REST

Per l'API REST, aggiungi l'intestazione X-Goog-User-Project per specificare l'ID progetto che contiene l'account di servizio corretto:

"X-Goog-User-Project: BILLING_PROJECT_ID"

Fornisci i seguenti valori:

  • BILLING_PROJECT_ID: un ID progetto per il quale è attivata l'API Cloud Asset Inventory e un account di servizio con autorizzazioni per gestire l'argomento Pub/Sub, il bucket Cloud Storage o la tabella BigQuery di destinazione.

Esportazione tra progetti

Per esportare i metadati delle risorse da un progetto, PROJECT_A, a un altro, PROJECT_B, devi concedere all'account di servizio Cloud Asset Inventory predefinito in PROJECT_A l'accesso alle risorse in PROJECT_B.

In questo modo si ottengono due risultati:

  • Puoi esportare i metadati delle risorse da PROJECT_A in un argomento Pub/Sub, in un bucket Cloud Storage o in una tabella BigQuery situata in PROJECT_B.

  • Puoi utilizzare PROJECT_A per esportare i metadati delle risorse da PROJECT_B in un argomento Pub/Sub, un bucket Cloud Storage o una tabella BigQuery situata in PROJECT_B.

Per esportare i metadati delle risorse da un progetto in un altro, segui queste istruzioni:

  1. Assicurati che l'API Cloud Asset Inventory sia attivata nel progetto da cui vuoi eseguire la richiesta, PROJECT_A.

  2. Esegui almeno una chiamata all'API Cloud Asset Inventory in PROJECT_A per creare l'account di servizio Cloud Asset Inventory predefinito. In alternativa, puoi crearlo manualmente:

    gcloud beta services identity create \
        --service=cloudasset.googleapis.com \
        --project=PROJECT_A_ID
    gcloud projects add-iam-policy-binding PROJECT_A_ID \
        --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
        --role=roles/cloudasset.serviceAgent
    

    Come trovare un Google Cloud numero di progetto

    Console Google Cloud

    Per trovare un Google Cloud numero di progetto, completa i seguenti passaggi:

    1. Vai alla pagina Ti diamo il benvenuto nella console Google Cloud.

      Vai a Benvenuto

    2. Fai clic sulla casella di elenco selettore nella barra dei menu.
    3. Seleziona la tua organizzazione dalla casella di elenco, quindi cerca il nome del progetto. Il nome, il numero e l'ID progetto vengono visualizzati accanto all'intestazione Ti diamo il benvenuto.

      Vengono visualizzate fino a 4000 risorse. Se non vedi il progetto che stai cercando, vai alla pagina Gestisci risorse e filtra l'elenco utilizzando il nome del progetto.

    Interfaccia a riga di comando gcloud

    Puoi recuperare un Google Cloud numero di progetto con il seguente comando:

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"

  3. Concedi i ruoli corretti all'account di servizio in PROJECT_A.

    • Per pubblicare in un feed tramite Pub/Sub, concedi il ruolo Publisher Pub/Sub (roles/pubsub.publisher) all'account di servizio nell'argomento:

      gcloud pubsub topics add-iam-policy-binding projects/PROJECT_B_ID/topics/TOPIC_ID \
          --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
          --role=roles/pubsub.publisher
      
    • Per scrivere in un bucket Cloud Storage, concedi il ruolo Amministratore di archiviazione (roles/storage.admin) all'account di servizio nel bucket:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
        --role=roles/storage.admin
      
    • Per scrivere in una tabella BigQuery, concedi i ruoli Editor dati BigQuery (roles/bigquery.dataEditor) e Utente BigQuery (roles/bigquery.user) all'account di servizio nel progetto:

      gcloud projects add-iam-policy-binding PROJECT_B_ID \
          --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
          --role=roles/bigquery.dataEditor
      gcloud projects add-iam-policy-binding PROJECT_B_ID \
          --member=serviceAccount:service-PROJECT_A_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
          --role=roles/bigquery.user
      

Se effettui una richiesta di inventario asset di Cloud con l'interfaccia a riga di comando gcloud da PROJECT_B o utilizzi l'API REST, assicurati di specificare PROJECT_A come progetto di fatturazione.