Lavorare su più progetti

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

Ciascuno di questi scenari richiede una configurazione per garantire il completamento delle operazioni.

Progetti di Orchestrator

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

Per impostare il 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 una buona pratica specificare sempre un progetto di fatturazione per ridurre al minimo la confusione.

gcloud

Per gcloud CLI, aggiungi il flag --billing-project al comando per specificare l'ID progetto che contiene il 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, verifica se il progetto di fatturazione è diverso dal progetto 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 con l'API Cloud Asset Inventory abilitata 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 il account di servizio corretto:

"X-Goog-User-Project: BILLING_PROJECT_ID"

Fornisci i seguenti valori:

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

Esportare tra progetti

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

Ciò consente due cose:

  • Puoi esportare i metadati degli asset da PROJECT_A in un argomento Pub/Sub, un bucket Cloud Storage o una tabella BigQuery che si trova in PROJECT_B.

  • Puoi utilizzare PROJECT_A per esportare i metadati degli asset da PROJECT_B in un argomento Pub/Sub, un bucket Cloud Storage o una tabella BigQuery che si trova in PROJECT_B.

Per esportare i metadati degli asset da un progetto a un altro, completa le seguenti istruzioni:

  1. Assicurati che l'API Cloud Asset Inventory sia abilitata 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

    ConsoleGoogle Cloud

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

    1. Vai alla pagina Benvenuto nella console Google Cloud .

      Vai a Benvenuto

    2. Fai clic sulla casella di elenco del selettore nella barra dei menu.
    3. Seleziona la tua organizzazione dalla casella di elenco e poi cerca il nome del tuo progetto. Il nome, il numero e l'ID progetto sono visualizzati vicino all'intestazione 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 al account di servizio in PROJECT_A.

    • Per pubblicare in un feed tramite Pub/Sub, concedi il ruolo Pub/Sub Publisher (roles/pubsub.publisher) al 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 Storage (roles/storage.admin) al 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) al 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 Cloud Asset Inventory con gcloud CLI da PROJECT_B o utilizzi l'API REST, assicurati di specificare PROJECT_A come progetto di fatturazione.