Dependendo das suas necessidades, talvez seja necessário projetar sua arquitetura para trabalhar em vários projetos ao usar o Inventário de recursos do Cloud. Os cenários a seguir são os mais comuns:
Projetos do orquestrador: quando você quer que um único projeto acione operações do Inventário de recursos do Cloud em outros projetos.
Exportar entre projetos: quando você quer exportar metadados de recursos de um projeto para outro.
Cada um desses cenários exige 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á trabalhando. 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 necessá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 seu
comando para especificar o ID do projeto que contém a conta de serviço correta:
--billing-project=BILLING_PROJECT_ID
Também é possível 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 do 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 do 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 recursos de um projeto, PROJECT_A, para outro, PROJECT_B,
é necessário conceder à 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_Apara um tópico do Pub/Sub, um bucket do Cloud Storage ou uma tabela do BigQuery localizada emPROJECT_B.É possível usar
PROJECT_Apara exportar metadados de recursos dePROJECT_Bpara um tópico do Pub/Sub, um bucket do Cloud Storage ou uma tabela do BigQuery localizada 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 de onde você quer executar a solicitação,
PROJECT_A.Faça pelo menos uma chamada para a API Cloud Asset Inventory em
PROJECT_Apara criar a conta de serviço padrão do Inventário de recursos do Cloud. Como alternativa, você pode criar o arquivo 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.serviceAgentComo encontrar um Google Cloud número do projeto
Console doGoogle Cloud
Para encontrar o número de um projeto Google Cloud , siga estas etapas:
-
Acesse a página Boas-vindas no console do Google Cloud .
- Clique na caixa de listagem do switcher na barra de menu.
-
Selecione sua organização na caixa de listagem e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Bem-vindo.
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 extrair um número de Google Cloud projeto 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 usando o 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.publisherPara 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.adminPara 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.