Consoante as suas necessidades, pode ter de conceber a sua arquitetura para funcionar em vários projetos quando usar o Cloud Asset Inventory. Os seguintes cenários são os mais comuns:
Projetos do orquestrador: quando quer que um único projeto acione operações do inventário de recursos do Google Cloud em outros projetos.
Exportar entre projetos: quando quer exportar metadados de recursos de um projeto para outro.
Cada um destes cenários requer alguma configuração para garantir que as operações são concluídas com êxito.
Projetos do Orchestrator
Quando usa um projeto para acionar operações do Cloud Asset Inventory em recursos noutro projeto, em determinados cenários, tem de especificar que a conta de serviço do Cloud Asset Inventory predefinida no outro projeto seja usada para realizar a operação. Estes cenários incluem:
Para definir a conta de serviço a usar, defina o projeto de faturação para o ID do projeto que contém os recursos nos quais está a operar. Se o projeto de faturação não for especificado, o Cloud Asset Inventory usa a conta de serviço do Cloud Asset Inventory predefinida no projeto que está a fazer a chamada, que pode não ter as autorizações necessárias para concluir a operação.
Embora não seja obrigatório para todas as operações, pode ser uma boa prática especificar sempre um projeto de faturação para minimizar a confusão.
gcloud
Para a CLI gcloud, adicione a flag --billing-project
ao seu comando para especificar o ID do projeto que contém a conta de serviço correta:
--billing-project=BILLING_PROJECT_ID
Em alternativa, pode definir o projeto de faturação antes de executar comandos com a CLI gcloud. Primeiro, verifique se o projeto de faturação é diferente do projeto principal:
gcloud config list
Em seguida, se necessário, defina o projeto de faturação:
gcloud config set billing/quota_project BILLING_PROJECT_ID
Indique os seguintes valores:
BILLING_PROJECT_ID
: um ID do projeto com a API Cloud Asset Inventory ativada e uma conta de serviço com autorizações para gerir o tópico do Pub/Sub, o contentor do Cloud Storage ou a tabela do BigQuery de destino.
REST
Para a API REST, adicione o cabeçalho X-Goog-User-Project
para especificar o ID do projeto que contém a conta de serviço correta:
"X-Goog-User-Project: BILLING_PROJECT_ID"
Indique os seguintes valores:
BILLING_PROJECT_ID
: um ID do projeto com a API Cloud Asset Inventory ativada e uma conta de serviço com autorizações para gerir o tópico do Pub/Sub, o contentor do Cloud Storage ou a tabela do BigQuery de destino.
Exporte entre projetos
Para exportar metadados de recursos de um projeto, PROJECT_A
, para outro, PROJECT_B
,
tem de conceder à conta de serviço predefinida do Cloud Asset Inventory em PROJECT_A
acesso aos
recursos em PROJECT_B
.
Isto permite duas coisas:
Pode exportar metadados de recursos de
PROJECT_A
para um tópico do Pub/Sub, um contentor do Cloud Storage ou uma tabela do BigQuery localizados emPROJECT_B
.Pode usar o
PROJECT_A
para exportar metadados de recursos doPROJECT_B
para um tópico do Pub/Sub, um contentor do Cloud Storage ou uma tabela do BigQuery localizados noPROJECT_B
.
Para exportar metadados de recursos de um projeto para outro, siga as instruções abaixo:
Certifique-se de que a API Cloud Asset Inventory está ativada no projeto a partir do qual quer executar o seu pedido,
PROJECT_A
.Faça, pelo menos, uma chamada à API Cloud Asset Inventory em
PROJECT_A
para criar a conta de serviço do Cloud Asset Inventory predefinida. Em alternativa, pode criá-lo 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
Como encontrar um Google Cloud número do projeto
Google Cloud consola
Para encontrar um Google Cloud número do projeto, conclua os seguintes passos:
-
Aceda à página Boas-vindas na Google Cloud consola.
- Clique na caixa de lista do comutador na barra de menu.
-
Selecione a sua organização na caixa de lista e, em seguida, pesquise o nome do projeto. O nome do projeto, o número do projeto e o ID do projeto são apresentados junto ao título Bem-vindo.
São apresentados até 4000 recursos. Se não vir o projeto que procura, aceda à página Gerir recursos e filtre a lista através do nome desse projeto.
CLI gcloud
Pode obter um Google Cloud número do projeto com o seguinte comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
Conceda as funções corretas à conta de serviço em
PROJECT_A
.Para publicar num feed através do Pub/Sub, conceda a função de publicador do Pub/Sub (
roles/pubsub.publisher
) à conta de serviço no tópico: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
Para escrever num contentor do Cloud Storage, conceda a função de administrador de armazenamento (
roles/storage.admin
) à conta de serviço no contentor: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
Para escrever numa tabela do BigQuery, conceda as funções de editor de dados do BigQuery (
roles/bigquery.dataEditor
) e utilizador do BigQuery (roles/bigquery.user
) à conta de serviço no projeto: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 fizer um pedido do Cloud Asset Inventory com a CLI gcloud a partir de
PROJECT_B
ou usar a API REST, certifique-se de que
especifica PROJECT_A
como o projeto de faturação.