Trabalhar em vários projetos

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:

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 em PROJECT_B.

  • É possível usar PROJECT_A para exportar metadados de recursos de PROJECT_B para um tópico do Pub/Sub, um bucket do Cloud Storage ou uma tabela do BigQuery localizado em PROJECT_B.

Para exportar metadados de recursos de um projeto para outro, siga estas instruções:

  1. Verifique se a API Cloud Asset Inventory está ativada no projeto em que você quer executar a solicitação, PROJECT_A.

  2. 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:

    1. Acesse a página Welcome no console do Google Cloud.

      Acessar a página de boas-vindas

    2. Clique na caixa de lista switcher na barra de menu.
    3. 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)"

  3. 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.