A seconda delle tue esigenze, potresti dover progettare l'architettura in modo che funzioni su più progetti quando utilizzi l'inventario delle risorse Cloud. Scenari riportati di seguito sono le più comuni:
Progetti dell'orchestratore: quando vuoi che un singolo progetto attivare operazioni di Cloud Asset Inventory in altri progetti.
Esporta tra progetti: quando vuoi esportare la risorsa metadati da un progetto all'altro.
Ognuno di questi scenari richiede una certa configurazione per garantire il completamento corretto delle operazioni.
Progetti di Orchestrator
Quando utilizzi un progetto per attivare le operazioni di Cloud Asset Inventory sulle risorse di un altro progetto, in alcuni scenari devi specificare che per eseguire l'operazione venga utilizzato l'account di servizio Cloud Asset Inventory predefinito nell'altro progetto. Questi scenari includono:
Per impostare quale account di servizio utilizzare, imposta il progetto di fatturazione sull'ID di al 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, è buona norma e specificare un progetto di fatturazione per ridurre al minimo la confusione.
gcloud
Per gcloud CLI, aggiungi il flag --billing-project
al tuo
per specificare l'ID progetto che contiene l'account di servizio corretto:
--billing-project=BILLING_PROJECT_ID
In alternativa, puoi impostare il progetto di fatturazione prima di eseguire comandi con con gcloud CLI. Innanzitutto, controlla se il progetto di fatturazione è diverso da quello principale:
gcloud config list
Quindi, se necessario, imposta il progetto di fatturazione:
gcloud config set billing/quota_project BILLING_PROJECT_ID
Specifica 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 con L'API Cloud Asset Inventory è abilitata e un account di servizio con autorizzazioni gestire l'argomento Pub/Sub di destinazione, il bucket Cloud Storage Tabella BigQuery.
Esportazione tra progetti
Per esportare i metadati di una risorsa 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 a
le risorse in PROJECT_B
.
Ciò consente due cose:
Puoi esportare i metadati degli asset da
PROJECT_A
in un argomento Pub/Sub, del bucket Cloud Storage o della tabella BigQuery situata inPROJECT_B
.Puoi utilizzare
PROJECT_A
per esportare i metadati della risorsa daPROJECT_B
in un Argomento Pub/Sub, bucket Cloud Storage o BigQuery nella tabellaPROJECT_B
.
Per esportare i metadati di una risorsa da un progetto a un altro, completa i seguenti passaggi istruzioni:
Assicurati che l'API Cloud Asset Inventory sia attivata nel progetto da cui vuoi eseguire la richiesta,
PROJECT_A
.Effettua almeno una chiamata all'API Cloud Asset Inventory in
PROJECT_A
per creare predefinito di Cloud Asset Inventory. In alternativa, puoi crearla 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 il numero di un progetto Google Cloud
Console Google Cloud
Per trovare il numero di un progetto Google Cloud:
-
Vai alla pagina Ti diamo il benvenuto nella console Google Cloud.
- Fai clic sulla casella di elenco selettore nella barra dei menu.
-
Seleziona la tua organizzazione dalla casella di elenco, quindi cerca il nome del progetto. Il nome del progetto, il numero del progetto e l'ID progetto sono visualizzati accanto al campo 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 numero di progetto Google Cloud con il seguente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
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 la classe Amministratore spazio 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.objectCreator
Per scrivere in una tabella BigQuery, concedi il parametro Editor dati BigQuery (
roles/bigquery.dataEditor
) e Utente BigQuery (roles/bigquery.user
) ruoli 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.user 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
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.