Exportar metadados de recursos usando o Inventário de recursos do Cloud

Neste guia de início rápido, mostramos como exportar metadados de recursos em um momento específico usando o Inventário de recursos do Cloud e os comandos gcloud asset da Google Cloud CLI.

Antes de começar

Antes de começar a trabalhar com o Inventário de recursos do Cloud, ative a API Cloud Asset Inventory e a Google Cloud CLI e atribua permissões. A CLI do Google Cloud interage com o Inventário de recursos do Cloud e outros serviços do Google Cloud. Saiba mais sobre a CLI gcloud.

Como ativar a API Cloud Asset Inventory e a Google Cloud CLI

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Ative a API necessária.

    Ative a API

  4. Instale a CLI do Google Cloud.
  5. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  6. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  7. Ative a API necessária.

    Ative a API

  8. Instale a CLI do Google Cloud.
  9. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

Como configurar permissões

Para chamar a API Cloud Asset Inventory, primeiro é preciso configurar as permissões.

Como pesquisar recursos

Para pesquisar metadados de recursos, execute o comando a seguir.

gcloud asset search-all-resources \
    --scope=SCOPE \
    --query="QUERY" \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --order-by="ORDER_BY" \
    --read-mask="READ_MASK"

Forneça os valores a seguir:

  • SCOPE: opcional. Um escopo pode ser um projeto, uma pasta ou uma organização. A pesquisa é limitada aos recursos do Google Cloud nesse escopo. O autor da chamada precisa receber a permissão cloudasset.assets.searchAllResources no escopo pretendido. Se não for especificada, a propriedade do projeto configurada será usada.

    Os valores permitidos são:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Como encontrar um número de projeto do Google Cloud

      Console

      Para encontrar um número de projeto do Google Cloud, siga estas etapas:

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

        Ir para o painel

      2. Clique na caixa do seletor na barra de menus.
      3. Escolha a organização na caixa Selecionar de e pesquise o nome do projeto.
      4. Clique no nome do projeto para alternar para ele. O número do projeto é mostrado no card Informações do projeto.

      CLI da gcloud

      É possível recuperar um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Como encontrar um ID de pasta do Google Cloud

      Console

      Para encontrar um ID da pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud

      2. Clique na caixa do seletor na barra de menus.
      3. Clique na caixa Selecionar de e escolha sua organização.
      4. Pesquise o nome da pasta. O ID é exibido ao lado do nome da pasta.

      CLI da gcloud

      Para recuperar um ID de pasta do Google Cloud localizado no nível da organização, use o seguinte comando:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Em que TOP_LEVEL_FOLDER_NAME pode ser uma correspondência de string completa ou parcial. Remova a opção --format para ver mais informações sobre as pastas encontradas.

      Para obter o ID de uma pasta dentro de outra pasta, liste as subpastas:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Como encontrar um ID da organização do Google Cloud

      Console

      Para encontrar um ID da organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud

      2. Clique na caixa do seletor na barra de menus.
      3. Clique na caixa Selecionar de e escolha sua organização.
      4. Selecione a guia Todos. O ID é exibido ao lado do nome da organização.

      CLI da gcloud

      É possível recuperar um ID da organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • QUERY: opcional. A instrução de consulta. Consulte Sintaxe de consulta para ver mais informações. Se não for especificado ou estiver vazio, o Inventário de recursos do Cloud pesquisa todos os recursos no scope especificado.

    Exemplos:

    • name:Important para encontrar recursos do Google Cloud com Important como uma palavra no nome.

    • name=Important para encontrar o recurso do Google Cloud com o nome exatamente Important.

    • displayName:Impor* para encontrar recursos do Google Cloud cujo nome de exibição contenha Impor como prefixo.

    • location:us-west* para encontrar recursos do Google Cloud com um local que contenha us e west como prefixos.

    • labels:prod para encontrar recursos do Google Cloud com rótulos que contenham prod como chave ou valor.

    • labels.env:prod para encontrar recursos do Google Cloud que têm um rótulo env e o valor é "prod".

    • labels.env:* para encontrar recursos do Google Cloud que tenham um rótulo env.

    • kmsKeys:key para encontrar recursos do Google Cloud criptografados com chaves de criptografia gerenciadas pelo cliente, cujo nome contém key como uma palavra.

    • sccSecurityMarks.key=value para encontrar recursos do Google Cloud anexados com um par de marcações de segurança com chave key e valor value.

    • sccSecurityMarks.key:* para encontrar recursos do Google Cloud anexados a um par de marcas de segurança cuja chave é key.

    • state:ACTIVE para encontrar recursos do Google Cloud cujo estado contenha ACTIVE como uma palavra.

    • NOT state:ACTIVE para encontrar recursos do Google Cloud cujo estado não contenha ACTIVE como uma palavra.

    • createTime<1609459200 ou createTime<2021-01-01 ou createTime<"2021-01-01T00:00:00" para encontrar recursos do Google Cloud que foram criados antes de 01/01-2021 00:00:00 UTC. 1609459200 é o carimbo de data/hora de 2021-01-01 00:00:00 UTC em segundos.

    • updateTime>1609459200 ou updateTime>2021-01-01 ou updateTime>"2021-01-01T00:00:00" para encontrar recursos do Google Cloud que foram atualizados após 01/01-2021 00:00:00 UTC. 1609459200 é o carimbo de data/hora de 2021-01-01 00:00:00 UTC em segundos.

    • project:12345 para encontrar recursos do Google Cloud que pertencem a um projeto do Google Cloud com o número 12345. O ID do projeto não é compatível.

    • folders:(123 or 456) para encontrar recursos do Google Cloud descendentes da pasta do Google Cloud com números 123 ou 456.

    • organization:123 para encontrar recursos do Google Cloud descendentes da organização do Google Cloud com o número 123.

    • parentFullResourceName:ImportantName para encontrar recursos do Google Cloud com ImportantName no nome do pai.

    • parentAssetType:Project para encontrar recursos do Google Cloud cujo tipo de recurso pai contenha Project.

    • Important para encontrar recursos do Google Cloud que contenham Important como uma palavra em qualquer um dos campos pesquisáveis.

    • Impor* para encontrar recursos do Google Cloud que contêm Impor como prefixo em qualquer um dos campos pesquisáveis.

    • Important location:(us-west1 OR global) para encontrar recursos do Google Cloud que contenham "importante" como uma palavra em qualquer um dos campos pesquisáveis e que também estejam localizados na região us-west1 ou no local global.

  • ASSET_TYPE: opcional. Uma lista separada por vírgulas de tipos de recursos pesquisáveis. Há suporte para expressões regulares compatíveis com RE2 (em inglês). Se a expressão regular não corresponder a nenhum tipo de recurso compatível, o erro INVALID_ARGUMENT será retornado.

  • ORDER_BY: opcional. Uma lista de campos separados por vírgulas que especifica a ordem de classificação dos resultados. A ordem padrão é crescente. Adicione " DESC" após o nome do campo para indicar a ordem decrescente. Caracteres de espaço redundantes são ignorados. Exemplo: "location DESC, name". Somente campos primitivos individuais na resposta são classificáveis:

    • name

    • assetType

    • project

    • displayName

    • description

    • location

    • createTime

    • updateTime

    • state

    • parentFullResourceName

    • parentAssetType

    Todos os outros campos, como campos repetidos (por exemplo, networkTags e kmsKeys), campos de mapa (por exemplo, labels) e campos de struct (por exemplo, additionalAttributes), não são aceitos.

  • READ_MASK: opcional. Uma lista de campos separados por vírgulas que especifica quais deles devem ser retornados nos resultados. Se não for especificado, todos os campos, exceto versionedResources, serão retornados. Se apenas "*" for especificado, todos os campos serão retornados. Exemplos: "name,location", "name,versionedResources", "*".

Para saber mais sobre como pesquisar recursos, consulte Como pesquisar recursos.

Como pesquisar políticas do IAM

Para pesquisar as políticas do Identity and Access Management (IAM), execute o comando a seguir.

gcloud asset search-all-iam-policies \
  --scope=SCOPE \
  --query="QUERY" \
  --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
  --order-by="ORDER_BY"

Forneça os valores a seguir:

  • SCOPE: opcional. Um escopo pode ser um projeto, uma pasta ou uma organização. A pesquisa é limitada aos recursos do IAM neste escopo. O autor da chamada precisa receber a permissão cloudasset.assets.searchAllIamPolicies no escopo pretendido. Se não for especificada, a propriedade do projeto configurada será usada.

    Os valores permitidos são:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Como encontrar um número de projeto do Google Cloud

      Console

      Para encontrar um número de projeto do Google Cloud, siga estas etapas:

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

        Ir para o painel

      2. Clique na caixa do seletor na barra de menus.
      3. Escolha a organização na caixa Selecionar de e pesquise o nome do projeto.
      4. Clique no nome do projeto para alternar para ele. O número do projeto é mostrado no card Informações do projeto.

      CLI da gcloud

      É possível recuperar um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Como encontrar um ID de pasta do Google Cloud

      Console

      Para encontrar um ID da pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud

      2. Clique na caixa do seletor na barra de menus.
      3. Clique na caixa Selecionar de e escolha sua organização.
      4. Pesquise o nome da pasta. O ID é exibido ao lado do nome da pasta.

      CLI da gcloud

      Para recuperar um ID de pasta do Google Cloud localizado no nível da organização, use o seguinte comando:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Em que TOP_LEVEL_FOLDER_NAME pode ser uma correspondência de string completa ou parcial. Remova a opção --format para ver mais informações sobre as pastas encontradas.

      Para obter o ID de uma pasta dentro de outra pasta, liste as subpastas:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Como encontrar um ID da organização do Google Cloud

      Console

      Para encontrar um ID da organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud

      2. Clique na caixa do seletor na barra de menus.
      3. Clique na caixa Selecionar de e escolha sua organização.
      4. Selecione a guia Todos. O ID é exibido ao lado do nome da organização.

      CLI da gcloud

      É possível recuperar um ID da organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • QUERY: opcional. A instrução de consulta. Consulte Sintaxe de consulta para ver mais informações. Se não for especificado ou estiver vazio, o Inventário de recursos do Cloud pesquisa todas as políticas do IAM no scope especificado. A string de consulta é comparada com cada vinculação de política do IAM, incluindo principais, papéis e condições do IAM. As políticas de IAM retornadas contêm apenas as vinculações que correspondem à sua consulta. Para saber mais sobre a estrutura das políticas do IAM, consulte Estrutura da política.

    Exemplos:

    • policy:amy@gmail.com para encontrar vinculações de políticas do IAM que especificam o usuário amy@gmail.com.

    • policy:roles/compute.admin para encontrar vinculações de políticas do IAM que especificam o papel de administrador do Compute.

    • policy:comp* para encontrar vinculações de políticas do IAM que contenham comp como um prefixo de qualquer palavra na vinculação.

    • policy.role.permissions:storage.buckets.update para encontrar vinculações de política do IAM que especifiquem um papel contendo a permissão storage.buckets.update. Se os autores da chamada não tiverem acesso iam.roles.get às permissões incluídas em um papel, as vinculações de política que especificarem esse papel serão descartadas dos resultados da pesquisa.

    • policy.role.permissions:upd* para encontrar vinculações de política do IAM que especifiquem um papel contendo upd como prefixo de qualquer palavra na permissão do papel. Se os autores da chamada não tiverem acesso iam.roles.get às permissões incluídas em um papel, as vinculações de política que especificam esse papel serão descartadas dos resultados da pesquisa.

    • resource:organizations/123456 para encontrar vinculações de política do IAM definidas em "organizations/123456".

    • resource=//cloudresourcemanager.googleapis.com/projects/myproject para encontrar vinculações de política do IAM que são definidas no projeto chamado myproject.

    • Important para encontrar vinculações de política do IAM que contenham Important como uma palavra em qualquer um dos campos pesquisáveis (exceto pelas permissões incluídas).

    • resource:(instance1 OR instance2) policy:amy para encontrar vinculações de políticas do IAM que são definidas nos recursos instance1 ou instance2 e também especificar amy de usuário.

    • roles:roles/compute.admin para encontrar vinculações de políticas do IAM que especificam o papel de administrador do Compute.

    • memberTypes:user para encontrar vinculações de política do IAM que contenham o tipo principal user.

  • ASSET_TYPE: opcional. Uma lista separada por vírgulas de tipos de recursos pesquisáveis a que as políticas do IAM estão anexadas. Se estiver vazio, o Inventário de recursos do Cloud vai pesquisar as políticas do IAM anexadas a todos os tipos de recursos pesquisáveis. As expressões regulares são compatíveis. Se a expressão regular não corresponder a nenhum tipo de recurso compatível, o erro INVALID_ARGUMENT será retornado.

  • ORDER_BY: opcional. Uma lista de campos separados por vírgulas que especifica a ordem de classificação dos resultados. A ordem padrão é crescente. Adicione " DESC" após o nome do campo para indicar a ordem decrescente. Caracteres de espaço redundantes são ignorados. Exemplo: "location DESC, name". Somente campos primitivos individuais na resposta são classificáveis:

    • resource

    • assetType

    • project

    Todos os outros campos, como campos repetidos (por exemplo, folders) e campos não primitivos (por exemplo, policy), não são aceitos.

Para saber mais sobre como pesquisar políticas do IAM, consulte Como pesquisar políticas do IAM.

Como exportar um snapshot de recurso para o Cloud Storage

Para exportar todos os metadados do recurso em um determinado carimbo de data/hora para um arquivo em um bucket do Cloud Storage, conclua as etapas a seguir.

  1. Crie um novo bucket se ainda não tiver um.

  2. Para exportar metadados do recurso no projeto, execute o comando a seguir. Esse comando armazena o snapshot exportado em um arquivo em gs://BUCKET_NAME/FILENAME.

    Projetos

    gcloud asset export \
        --project=PROJECT_ID \
        --billing-project=BILLING_PROJECT_ID \
        --content-type=CONTENT_TYPE \
        --snapshot-time="SNAPSHOT_TIME" \
        --output-path="gs://BUCKET_NAME/FILENAME"
    

    Forneça os valores a seguir:

    • PROJECT_ID: o ID do projeto com os metadados que você quer exportar.

    • BILLING_PROJECT_ID: opcional. O ID do projeto em que o agente de serviço padrão do Inventário de recursos do Cloud tem permissão para gravar no bucket do Cloud Storage. Não é necessário se você já mudou para o projeto de faturamento com gcloud config set project. Leia mais sobre projetos de faturamento.

    • CONTENT_TYPE: opcional. O tipo de conteúdo do recurso a ser exportado. Se nenhum tipo de conteúdo for especificado, somente o nome do recurso será retornado. Leia mais sobre os tipos de conteúdo.

    • SNAPSHOT_TIME: opcional. O horário em que você quer tirar um snapshot dos seus recursos. O valor precisa ser o horário atual ou um horário não superior a 35 dias no passado. Quando não é fornecido, um snapshot é capturado no momento atual. Para mais informações sobre formatos de hora, consulte gcloud topic datetimes.

    • BUCKET_NAME: o nome do bucket do Cloud Storage em que a gravação será feita.

    • FILENAME: o arquivo no bucket do Cloud Storage para gravar.

    Pastas

    gcloud asset export \
        --folder=FOLDER_ID \
        --billing-project=BILLING_PROJECT_ID \
        --content-type=CONTENT_TYPE \
        --snapshot-time="SNAPSHOT_TIME" \
        --output-path="gs://BUCKET_NAME/FILENAME"
    

    Forneça os valores a seguir:

    • FOLDER_ID: o ID da pasta com os metadados que você quer exportar.

      Como encontrar um ID de pasta do Google Cloud

      Console

      Para encontrar um ID da pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud

      2. Clique na caixa do seletor na barra de menus.
      3. Clique na caixa Selecionar de e escolha sua organização.
      4. Pesquise o nome da pasta. O ID é exibido ao lado do nome da pasta.

      CLI da gcloud

      Para recuperar um ID de pasta do Google Cloud localizado no nível da organização, use o seguinte comando:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Em que TOP_LEVEL_FOLDER_NAME pode ser uma correspondência de string completa ou parcial. Remova a opção --format para ver mais informações sobre as pastas encontradas.

      Para obter o ID de uma pasta dentro de outra pasta, liste as subpastas:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • BILLING_PROJECT_ID: opcional. O ID do projeto em que o agente de serviço padrão do Inventário de recursos do Cloud tem permissão para gravar no bucket do Cloud Storage. Não é necessário se você já mudou para o projeto de faturamento com gcloud config set project. Leia mais sobre projetos de faturamento.

    • CONTENT_TYPE: opcional. O tipo de conteúdo do recurso a ser exportado. Se nenhum tipo de conteúdo for especificado, somente o nome do recurso será retornado. Leia mais sobre os tipos de conteúdo.

    • SNAPSHOT_TIME: opcional. O horário em que você quer tirar um snapshot dos seus recursos. O valor precisa ser o horário atual ou um horário não superior a 35 dias no passado. Quando não é fornecido, um snapshot é capturado no momento atual. Para mais informações sobre formatos de hora, consulte gcloud topic datetimes.

    • BUCKET_NAME: o nome do bucket do Cloud Storage em que a gravação será feita.

    • FILENAME: o arquivo no bucket do Cloud Storage para gravar.

    Organizações

    gcloud asset export \
        --organization=ORGANIZATION_ID \
        --billing-project=BILLING_PROJECT_ID \
        --content-type=CONTENT_TYPE \
        --snapshot-time="SNAPSHOT_TIME" \
        --output-path="gs://BUCKET_NAME/FILENAME"
    

    Forneça os valores a seguir:

    • ORGANIZATION_ID: o ID da organização com os metadados que você quer exportar.

      Como encontrar um ID da organização do Google Cloud

      Console

      Para encontrar um ID da organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud

      2. Clique na caixa do seletor na barra de menus.
      3. Clique na caixa Selecionar de e escolha sua organização.
      4. Selecione a guia Todos. O ID é exibido ao lado do nome da organização.

      CLI da gcloud

      É possível recuperar um ID da organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

    • BILLING_PROJECT_ID: opcional. O ID do projeto em que o agente de serviço padrão do Inventário de recursos do Cloud tem permissão para gravar no bucket do Cloud Storage. Não é necessário se você já mudou para o projeto de faturamento com gcloud config set project. Leia mais sobre projetos de faturamento.

    • CONTENT_TYPE: opcional. O tipo de conteúdo do recurso a ser exportado. Se nenhum tipo de conteúdo for especificado, somente o nome do recurso será retornado. Leia mais sobre os tipos de conteúdo.

    • SNAPSHOT_TIME: opcional. O horário em que você quer tirar um snapshot dos seus recursos. O valor precisa ser o horário atual ou um horário não superior a 35 dias no passado. Quando não é fornecido, um snapshot é capturado no momento atual. Para mais informações sobre formatos de hora, consulte gcloud topic datetimes.

    • BUCKET_NAME: o nome do bucket do Cloud Storage em que a gravação será feita.

    • FILENAME: o arquivo no bucket do Cloud Storage para gravar.

  3. Opcional: para verificar o status da exportação, execute o comando a seguir. Ele é exibido na CLI gcloud depois de executar o comando de exportação.

    gcloud asset operations describe OPERATION_PATH
    

Como visualizar o snapshot do recurso

Para visualizar o snapshot do recurso depois de exportá-lo para o Cloud Storage, siga as etapas a seguir.

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

    Acessar buckets

  2. Abra o arquivo para o qual você exportou seus metadados.

O arquivo de exportação lista os recursos e os respectivos nomes.

A seguir