Dependendo das suas necessidades, talvez seja necessário projetar sua arquitetura para funcionar em vários projetos ao usar o Cloud Asset Inventory. Os seguintes cenários são os mais comuns:
Projetos de orquestrador: quando você quer que um único projeto ative operações do Cloud Asset Inventory em outros projetos.
Exportar entre projetos: quando você quer exportar metadados de recursos de um projeto para outro.
Cada um desses cenários requer alguma configuração para garantir que as operações sejam concluídas com sucesso.
Projetos do orquestrador
Quando você usa um projeto para acionar operações do Inventário de recursos do Cloud em recursos de outro projeto, em determinados cenários, é necessário especificar que a conta de serviço padrão do Inventário de recursos do Cloud no outro projeto seja usada para realizar a operação. Esses cenários incluem:
Para definir qual conta de serviço usar, defina o projeto de faturamento como o ID do projeto que contém os recursos em que você está operando. Se o projeto de faturamento não for especificado, o Inventário de recursos do Cloud vai usar a conta de serviço padrão do Inventário de recursos do Cloud no projeto que está fazendo a chamada, que pode não ter as permissões necessárias para concluir a operação.
Embora não seja obrigatório para todas as operações, é recomendável sempre especificar um projeto de faturamento para minimizar a confusão.
gcloud
Para a CLI gcloud, adicione a flag --billing-project
ao comando para especificar o ID do projeto que contém a conta de serviço correta:
--billing-project=BILLING_PROJECT_ID
Como alternativa, você pode definir o projeto de faturamento antes de executar comandos com a CLI gcloud. Primeiro, verifique se o projeto de faturamento é diferente do projeto principal:
gcloud config list
Em seguida, se necessário, defina o projeto de faturamento:
gcloud config set billing/quota_project BILLING_PROJECT_ID
Forneça os valores a seguir:
BILLING_PROJECT_ID
: um ID de projeto com a API Cloud Asset Inventory ativada e uma conta de serviço com permissões para gerenciar o tópico de destino do Pub/Sub, o bucket do Cloud Storage ou a tabela do BigQuery.
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"
Forneça os valores a seguir:
BILLING_PROJECT_ID
: um ID de projeto com a API Cloud Asset Inventory ativada e uma conta de serviço com permissões para gerenciar o tópico de destino do Pub/Sub, o bucket do Cloud Storage ou a tabela do BigQuery.
Exportar entre projetos
Para exportar metadados de um projeto, PROJECT_A
, para outro, PROJECT_B
,
conceda à conta de serviço padrão do Inventário de recursos do Cloud em PROJECT_A
acesso aos
recursos em PROJECT_B
.
Isso permite duas coisas:
É possível exportar metadados de recursos de
PROJECT_A
para um tópico do Pub/Sub, um bucket do Cloud Storage ou uma tabela do BigQuery localizado emPROJECT_B
.É possível usar
PROJECT_A
para exportar metadados de recursos dePROJECT_B
para um tópico do Pub/Sub, um bucket do Cloud Storage ou uma tabela do BigQuery localizado emPROJECT_B
.
Para exportar metadados de recursos de um projeto para outro, siga estas instruções:
Verifique se a API Cloud Asset Inventory está ativada no projeto em que você quer executar a solicitação,
PROJECT_A
.Faça pelo menos uma chamada para a API Cloud Asset Inventory em
PROJECT_A
para criar a conta de serviço padrão do Cloud Asset Inventory. Você também pode criar a 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 número de projeto Google Cloud
Console do Google Cloud
Para encontrar um número de projeto Google Cloud , siga estas etapas:
-
Acesse a página Welcome no console do Google Cloud.
- Clique na caixa de lista switcher na barra de menu.
-
Selecione sua organização na caixa de lista e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Welcome.
Até 4.000 recursos são exibidos. Se você não encontrar o projeto que está procurando, acesse a página Gerenciar recursos e filtre a lista usando o nome dele.
CLI da gcloud
É possível recuperar um número de projeto Google Cloud com o seguinte comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
Conceda os papéis corretos à conta de serviço em
PROJECT_A
.Para publicar em um feed pelo Pub/Sub, conceda o papel de Editor 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 gravar em um bucket do Cloud Storage, conceda o papel de Administrador do Storage (
roles/storage.admin
) à conta de serviço no 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
Para gravar em uma tabela do BigQuery, conceda os papéis de Editor de dados do BigQuery (
roles/bigquery.dataEditor
) e Usuário 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 você fizer uma solicitação do inventário de recursos do Cloud com a CLI gcloud de
PROJECT_B
ou usar a API REST, especifique PROJECT_A
como o projeto de faturamento.