Primeiros passos com o Inventário de recursos do Cloud

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

Antes de começar

Antes de começar a trabalhar com o Inventário de recursos do Cloud, é preciso ativar a API Inventário de recursos do Cloud, o SDK do Cloud e atribuir permissões. O SDK do Cloud fornece a ferramenta de linha de comando gcloud para interagir com o Inventário de recursos do Cloud e outros serviços do Google Cloud. Saiba mais sobre a ferramenta gcloud.

Como ativar a API Cloud Asset Inventory e o SDK do Cloud

  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 e inicialize o SDK do Cloud..

Como configurar permissões

Para chamar a API Cloud Asset Inventory, primeiro você precisa configurar as permissões.

Como pesquisar recursos

  1. Para pesquisar metadados de recursos, execute o comando gcloud asset search-all-resources a seguir.

     gcloud asset search-all-resources \
        --scope SCOPE \
        --query QUERY \
        --asset-types ASSET_TYPES,… \
        --order-by ORDER_BY \
        --read-mask READ_MASK
    

    Em que todas as sinalizações a seguir são opcionais:

    • (Opcional) SCOPE: 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. Para encontrar o projeto configurado, execute: gcloud config get-value project. Para alterar a configuração, execute: gcloud config set project PROJECT_ID.

      Os valores permitidos são:

      • projects/PROJECT_ID (ex., "projects/foo-bar")
      • projects/PROJECT_NUMBER (ex., "projects/12345678")
      • folders/FOLDER_NUMBER (ex., "folders/1234567")
      • organizations/ORGANIZATION_NUMBER (ex., "organizations/123456")
    • (Opcional) QUERY: a instrução de consulta. Veja como criar uma consulta para mais informações. Se não for especificado ou estiver vazio, ele pesquisará todos os recursos na scope especificada.

      Exemplos:

      • name:Important para encontrar recursos do Cloud em que o nome contém "Important" como uma palavra.
      • name=Important para encontrar o recurso do Google Cloud cujo nome é exatamente "Importante".
      • displayName:Impor* para encontrar recursos do Cloud em que o nome de exibição contém "Impor" como prefixo.
      • location:us-west* para encontrar recursos do Google Cloud cujo local contém "us" e "west" como prefixos.
      • labels:prod para encontrar recursos do Cloud em que os rótulos contêm "prod" como chave ou valor.
      • labels.env:prod para encontrar recursos do Cloud que tenham um rótulo "env" e o valor dele seja "prod".
      • labels.env:* para encontrar recursos do Cloud que tenham o rótulo "env".
      • kmsKey:key para encontrar os recursos do Google Cloud criptografados com uma chave de criptografia gerenciada pelo cliente que tem o nome "chave" como palavra.
      • state:ACTIVE para encontrar recursos do Google Cloud cujo estado contenha "ACTIVE" como uma palavra.
      • NOT state:ACTIVE para encontrar recursos do Google Cloud com um estado que não contenha "ATIVO" como uma palavra.
      • createTime<1609459200, createTime<2021-01-01 ou createTime<"2021-01-01T00:00:00" para encontrar recursos do Google Cloud criados antes de "2021-01-01 00:00:00 UTC". 1609459200 é o carimbo de data/hora da época de "2021-01-01 00:00:00 UTC" em segundos.
      • updateTime>1609459200, updateTime>2021-01-01 ou updateTime>"2021-01-01T00:00:00" para encontrar recursos do Google Cloud atualizados após "2021-01-01 00:00:00 UTC". 1609459200 é o carimbo de data/hora da época de "2021-01-01 00:00:00 UTC" em segundos.
      • project:12345 para encontrar os recursos do Google Cloud que pertencem a um projeto com o número 12345. O código do projeto não é compatível.
      • folders:(123 or 456) para encontrar os recursos do Google Cloud que são descendentes da pasta do Google Cloud com os números 123 ou 456.
      • organization:123 para encontrar recursos do Google Cloud que são descendentes da organização do Google Cloud com o número 123.
      • parentFullResourceName:ImportantName para encontrar recursos do Google Cloud com um nome pai contendo ImportantName.
      • parentAssetType:Project para encontrar os recursos do Google Cloud com um tipo de recurso pai que contém Project.
      • Important para encontrar recursos do Google Cloud que contenham "Importante" como uma palavra em qualquer um dos campos pesquisáveis.
      • Impor* para encontrar recursos do Google Cloud que contenham "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 também estão localizados na região "us-west1" ou no local "global". para criar um anexo da VLAN de monitoramento.
    • (Opcional) ASSET_TYPES: uma lista de tipos de recursos que essa solicitação pesquisa. Se estiver vazio, ele pesquisará todos os tipos de recursos pesquisáveis. Expressões regulares também são compatíveis. Exemplo:

      • "compute.googleapis.com.*" cria snapshots dos recursos com tipo de recurso que começa com "compute.googleapis.com".
      • ".*Instance" cria snapshots dos recursos com tipo de recurso que termina com "Instance".
      • ".*Instance.*" cria snapshots dos recursos com tipo de "Instance".

      Consulte RE2 para ver todas as sintaxes de expressões regulares compatíveis. Se a expressão regular não corresponder a nenhum tipo de recurso compatível, um erro INVALID_ARGUMENT será retornado.

    • (Opcional) ORDER_BY: uma lista de campos separada por vírgulas que especifica a ordem de classificação dos resultados. A ordem padrão é crescente. Adicione " DESC" depois do nome do campo para indicar a ordem decrescente. Caracteres de espaço redundantes são ignorados. Exemplo: "location DESC, name". Somente campos primitivos singulares na resposta são classificáveis:

      • name
      • assetType
      • project
      • displayName
      • description
      • location
      • kmsKey
      • createTime
      • updateTime
      • state
      • parentFullResourceName
      • parentAssetType

      Todos os outros campos, como campos repetidos (por exemplo, networkTags), campos de mapa (por exemplo, labels) e campos de estrutura (por exemplo, additionalAttributes) não são compatíveis.

    • (Opcional) READ_MASK: uma lista separada por vírgulas de campos especificando quais campos retornar 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.

  2. Para pesquisar as políticas do IAM, execute o seguinte comando do gcloud asset search-all-iam-policies.

     gcloud asset search-all-iam-policies \
        --scope SCOPE \
        --query QUERY \
        --asset-types ASSET_TYPES,… \
        --order-by ORDER_BY
    

    Em que:

    • (Opcional) SCOPE: um escopo pode ser um projeto, uma pasta ou uma organização. A pesquisa é limitada às políticas de gerenciamento de identidade e acesso (IAM, na sigla em inglês) nesse 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. Para encontrar o projeto configurado, execute: gcloud config get-value project. Para alterar a configuração, execute: gcloud config set project PROJECT_ID.

      Os valores permitidos são:

      • projects/PROJECT_ID (ex., "projects/foo-bar")
      • projects/PROJECT_NUMBER (ex., "projects/12345678")
      • folders/FOLDER_NUMBER (ex., "folders/1234567")
      • organizations/ORGANIZATION_NUMBER (ex., "organizations/123456")
    • (Opcional) QUERY: a instrução de consulta. Veja como criar uma consulta para mais informações. Se não for especificado ou estiver vazio, ele pesquisará todas as políticas de IAM no scope especificado. A string de consulta é comparada com cada vinculação de política do IAM, incluindo os principais, os papéis e as condições do IAM. As políticas de IAM retornadas terão apenas as vinculações que corresponderem à sua consulta. Para saber mais sobre a estrutura da política do IAM, consulte o documento de política do IAM.

      Exemplos:

      • policy:amy@gmail.com para encontrar vinculações de políticas do IAM que especifiquem o usuário "amy@gmail.com".
      • policy:roles/compute.admin para encontrar vinculações de políticas do IAM que especifiquem o papel de Administrador do Compute.
      • policy:comp* para encontrar vinculações de política do IAM que contenham "comp" como prefixo de qualquer palavra na vinculação.
      • policy.role.permissions:storage.buckets.update para encontrar vinculações de políticas do Cloud IAM que especifiquem um papel que contenha 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íticas que especificam esse papel serão removidas dos resultados da pesquisa.
      • policy.role.permissions:upd* para encontrar vinculações de política do IAM que especifiquem um papel que contenha "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íticas que especificam esse papel serão removidas dos resultados da pesquisa.
      • resource:organizations/123456 para encontrar vinculações de políticas do IAM definidas em "organizations/123456".
      • resource=//cloudresourcemanager.googleapis.com/projects/myproject para encontrar vinculações de políticas do IAM definidas no projeto denominado "myproject".
      • Important para encontrar vinculações de políticas do IAM que contenham "Important" como uma palavra em qualquer um dos campos pesquisáveis (exceto as permissões incluídas).
      • resource:(instance1 OR instance2) policy:amy para encontrar vinculações de políticas do IAM configuradas em recursos "instance1" ou "instance2" e também especificar o usuário "amy".
      • roles:roles/compute.admin para encontrar vinculações de políticas do IAM que especifiquem o papel de Administrador do Compute.
      • memberTypes:user para encontrar vinculações de política do IAM que contenham o tipo principal "usuário".
    • (Opcional) ASSET_TYPES: uma lista de tipos de recursos aos quais as políticas de gerenciamento de identidade e acesso estão anexadas. Se estiver vazio, ele pesquisará as políticas de gerenciamento de identidade e acesso anexadas a todos os tipos de recursos pesquisáveis. Expressões regulares também são compatíveis. Exemplo:

      • As políticas de IAM "compute.googleapis.com.*" são anexadas ao tipo de recurso e começam com "compute.googleapis.com".
      • As políticas de IAM ".*Instance" são anexadas ao tipo de recurso e terminam com "Instance".
      • ".*Instance.*" as políticas de IAM anexadas ao tipo de recurso contêm "Instance".

      Consulte RE2 para ver todas as sintaxes de expressões regulares compatíveis. Se a expressão regular não corresponder a nenhum tipo de recurso compatível, um erro INVALID_ARGUMENT será retornado.

    • (Opcional) ORDER_BY: uma lista de campos separada por vírgulas que especifica a ordem de classificação dos resultados. A ordem padrão é crescente. Adicione " DESC" depois do nome do campo para indicar a ordem decrescente. Caracteres de espaço redundantes são ignorados. Exemplo: "assetType DESC, resource". Somente campos primitivos singulares 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).

    Para saber mais sobre como pesquisar as 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 de recursos em um determinado carimbo de data/hora para um arquivo do Cloud Storage, conclua as etapas a seguir.

  1. Crie um novo bucket se o projeto não tiver um do Cloud Storage disponível para armazenar dados exportados.

  2. Para exportar metadados de recursos no seu projeto, execute o seguinte comando. Esse comando armazena o snapshot exportado em um bucket do Cloud Storage em gs://YOUR_BUCKET/NEW_FILE.

    gcloud asset export \
       --content-type CONTENT_TYPE \
       --project PROJECT_ID \
       --snapshot-time SNAPSHOT_TIME \
       --output-path "gs://YOUR_BUCKET/NEW_FILE"
    

    Em que:

    • (Opcional) CONTENT_TYPE: o tipo de conteúdo do recurso a ser exportado. Se nenhum tipo de conteúdo for especificado, apenas o nome do recurso será retornado. Os tipos de exemplo incluem resource, que exporta metadados de recursos; iam-policy, que exporta a política do IAM para cada recurso filho do recurso especificado e assim por diante. Outras opções incluem org-policy, access-policy e os-inventory. Consulte a seção Sinalizações opcionais de gcloud asset export para mais informações.
    • PROJECT_ID: o ID do projeto que está tendo os metadados exportados. Pode ser o projeto em que a API Cloud Asset Inventory está ativada e a partir da qual você está executando a exportação ou um projeto diferente.
    • (Opcional) SNAPSHOT_TIME: o valor precisa ser a hora atual ou um horário no qual você quer capturar um snapshot dos seus recursos. Por padrão, um snapshot é capturado no horário atual. Consulte gcloud topic datetimes para informações sobre formatos de tempo. Por exemplo: --snapshot-time 2021-05-25T10:49:41Z Observação: se você especificar um horário de snapshot, ele não poderá exceder 35 dias. no passado.
  3. Para exportar os recursos de uma organização ou pasta, use uma das seguintes sinalizações no lugar da sinalização --project:

    • --organization=ORGANIZATION_ID
    • --folder=FOLDER_ID
  4. (Opcional) Para verificar o status da exportação, execute o seguinte comando. Ele é exibido na ferramenta gcloud após a execução do comando de exportação.

    gcloud asset operations describe projects/PROJECT_ID/operations/ExportAssets/CONTENT_TYPE/OPERATION_NUMBER
    

Como visualizar um instantâneo de um recurso

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

  1. Acesse a página do Navegador do Cloud Storage.
    Abrir a página do Navegador do Cloud Storage

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

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

A seguir