Consultar recursos com SQL

É possível consultar recursos no seu projeto, pasta ou organização usando um dialeto compatível com o SQL do BigQuery.

Antes de começar

  1. Ative a API Cloud Asset Inventory no projeto em que você está executando comandos do Inventário de recursos do Cloud.

    Ativar a API Cloud Asset Inventory

  2. Verifique se a conta tem o papel correto para chamar a API Cloud Asset Inventory. Para permissões individuais de cada tipo de chamada, consulte Permissões.

Limitações

Tabelas que podem ser consultadas

É possível consultar as seguintes tabelas:

  • Para tipos de conteúdo RESOURCE, os nomes das tabelas no conjunto de dados correspondem ao nome do tipo de recurso, supondo que ele exista. Por exemplo, a tabela compute_googleapis_com_Instance contém metadados de instâncias do Compute Engine.

  • Para tipos de conteúdo que não são RESOURCE, os nomes das tabelas no conjunto de dados correspondem aos nomes de tipo de conteúdo RPC/REST. Por exemplo, ACCESS_POLICY.

  • Para consultar metadados padrão de recursos em tipos de recursos, use o nome da tabela STANDARD_METADATA. Isso inclui todos os campos, exceto resource.DATA, que é específico para cada tipo de recurso.

Consultar metadados do recurso

Console

Para consultar os metadados do recurso do seu projeto, pasta ou organização, siga estas etapas:

  1. No console do Google Cloud , acesse a guia Consulta de recursos na página Inventário de recursos.

    Acessar a consulta de recursos

    Se a guia Consulta de recursos não aparecer, você precisa ter acesso ao nível Premium ou Enterprise do Security Command Center, ou ao Gemini Cloud Assist.

  2. Mude para o projeto, a pasta ou a organização que você quer consultar.
  3. Clique na guia Consulta de recursos.
  4. Para consultar metadados de recursos, use uma consulta de amostra ou crie a sua própria:

    • Para usar um exemplo, clique em uma entrada na guia Biblioteca de consultas para conferir a consulta. Clique em **Aplicar** para copiar o exemplo para a caixa Editar consulta, edite a consulta ou clique em Executar para executá-la.
    • Para criar sua própria consulta, insira o texto da consulta diretamente na caixa Editar consulta e clique em Executar. Para ajudar a escrever sua própria consulta, clique em uma tabela no painel Selecionar tabela para visualizar o esquema e o conteúdo dela. Consulte Sintaxe da consulta para saber como criar uma consulta.

    Os metadados do recurso correspondentes à consulta são mostrados na guia Resultado da consulta.

  5. Opcional: para fazer o download dos conjuntos de resultados da consulta em formato CSV, clique em Exportar.

    O tamanho máximo do arquivo CSV é de 2 MB. Se a solicitação de download falhar porque o tamanho do arquivo excede esse limite, uma mensagem vai aparecer com instruções para exportar os resultados completos.

gcloud

gcloud asset query \
    --SCOPE \
    --statement="SQL_SELECT_QUERY" \
    --timeout="TIMEOUTs"

Forneça os valores a seguir:

  • SCOPE: use um dos seguintes valores:

    • project=PROJECT_ID, em que PROJECT_ID é o ID do projeto que tem os recursos que você quer consultar.
    • folder=FOLDER_ID, em que FOLDER_ID é o ID da pasta que tem os recursos que você quer consultar.

      Como encontrar o ID de uma pasta do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma pasta do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma pasta do Google Cloud que está no nível da organização com 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 é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização que tem os recursos que você quer consultar.

      Como encontrar o ID de uma organização do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • SQL_SELECT_QUERY: uma consulta SQL SELECT.
  • TIMEOUT: opcional. O tempo máximo, em segundos, que um cliente precisa esperar a consulta ser concluída antes de continuar. Use timeouts para executar sua consulta de forma assíncrona e extrair os resultados mais tarde com referências de job.

Consulte a referência da CLI do gcloud para conferir todas as opções.

Exemplo

Execute o comando a seguir para conferir os nomes e os tipos de recursos das duas primeiras instâncias do Compute Engine no projeto my-project.

gcloud asset query \
    --project=my-project \
    --statement="
      SELECT
        name, assetType
      FROM
        compute_googleapis_com_Instance
      LIMIT 2"

Resposta de job concluída

O exemplo a seguir mostra uma resposta à consulta de exemplo anterior. A resposta contém uma referência de job e informa se o job foi concluído (done: true). Se o job foi concluído, o objeto queryResult é preenchido com os dados apropriados e os resultados são listados depois.

done: true
jobReference: 0000000000000000000000000000000000000000000000000000000000000000
queryResult:
  nextPageToken: ''
  totalRows: '2'

name: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1
assetType: compute.googleapis.com/Instance

name: //compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/instance-2
assetType: compute.googleapis.com/Instance

Resposta de job não concluída

Se você definir um tempo limite na solicitação, a consulta será realizada de forma assíncrona, e uma resposta será enviada indicando que o job não foi concluído (done: false). Esse tipo de resposta contém uma referência de job e um objeto queryResult não preenchido:

done: false
jobReference: 0000000000000000000000000000000000000000000000000000000000000000
queryResult:
  nextPageToken: ''
  totalRows: '0'

É possível usar o valor jobReference para recuperar os resultados da consulta mais tarde, depois que o job for concluído e os dados estiverem disponíveis.

REST

Método HTTP e URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets

Solicitar corpo JSON:

{
  "statement": "SQL_SELECT_QUERY",
  "timeout": "TIMEOUTs",
  "pageSize": "PAGE_SIZE",
  "pageToken": "PAGE_TOKEN"
}

Forneça os valores a seguir:

  • SCOPE_PATH: use um dos seguintes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto que tem os recursos que você quer consultar.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto que tem os recursos que você quer consultar.

      Como encontrar um número de projeto da nuvem soberana da T-Systems .

      Google Cloud console

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

      1. Acesse a página Welcome no console 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 extrair um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta que tem os recursos que você quer consultar.

      Como encontrar o ID de uma pasta

      Google Cloud console

      Para encontrar o ID de uma pasta do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma pasta do Google Cloud que está no nível da organização com 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 é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o comando abaixo usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização que tem os recursos que você quer consultar.

      Como encontrar o ID de uma organização do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • SQL_SELECT_QUERY: uma consulta SQL SELECT.
  • TIMEOUT: opcional. O tempo máximo, em segundos, que um cliente precisa esperar a consulta ser concluída antes de continuar. Use timeouts para executar sua consulta de forma assíncrona e extrair os resultados mais tarde com referências de job.
  • PAGE_SIZE: opcional. O número de resultados a serem retornados por página. O valor máximo é 500. Se o valor for definido como 0 ou um valor negativo, um padrão apropriado será selecionado. Um nextPageToken é retornado para recuperar resultados subsequentes.

  • PAGE_TOKEN: opcional. Respostas longas são separadas em várias páginas. Quando pageToken não é especificado, a primeira página é retornada. As páginas seguintes podem ser chamadas usando o nextPageToken da resposta anterior como o valor de pageToken.

Consulte a referência REST para conferir todas as opções.

Exemplos de comando

Execute um dos comandos a seguir para conferir os nomes e tipos de recursos das duas primeiras instâncias do Compute Engine no projeto my-project.

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "statement": "
              SELECT
                name, assetType
              FROM
                compute_googleapis_com_Instance
              LIMIT 2"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "statement": "
    SELECT
      name, assetType
    FROM
      compute_googleapis_com_Instance
    LIMIT 2"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content

Resposta de job concluída

O exemplo a seguir mostra uma resposta à consulta de exemplo anterior. A resposta contém uma referência de job e informa se o job foi concluído ("done": true). Se o job foi concluído, o objeto queryResult é preenchido com os dados apropriados.

Os resultados da consulta são divididos em rows, uma matriz que contém metadados do recurso, e schema, um objeto que descreve o esquema de cada recurso na matriz rows. Isso é feito para minimizar a duplicação de nomes e tipos de campos em respostas grandes.

Da mesma forma, f e v são usados na matriz rows em vez de fields e value para manter as respostas o menor possível.

{
  "jobReference": "0000000000000000000000000000000000000000000000000000000000000000",
  "done": true,
  "queryResult": {
    "rows": [
      {
        "f": [
          {
            "v": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1"
          },
          {
            "v": "compute.googleapis.com/Instance"
          }
        ]
      },
      {
        "f": [
          {
            "v": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-2"
          },
          {
            "v": "compute.googleapis.com/Instance"
          }
        ]
      }
    ],
    "schema": {
      "fields": [
        {
          "field": "name",
          "type": "STRING",
          "mode": "NULLABLE",
          "fields": []
        },
        {
          "field": "assetType",
          "type": "STRING",
          "mode": "NULLABLE",
          "fields": []
        }
      ]
    },
    "nextPageToken": "",
    "totalRows": "1"
  }
}

Resposta de job não concluída

Se você definir um tempo limite na solicitação, a consulta será realizada de forma assíncrona, e uma resposta será enviada indicando que o job não foi concluído ("done": false). Esse tipo de resposta contém uma referência de job e um objeto queryResult não preenchido:

{
  "jobReference": "0000000000000000000000000000000000000000000000000000000000000000",
  "done": false,
  "queryResult": {
    "rows": [],
    "schema": {
      "fields": []
    },
    "nextPageToken": "",
    "totalRows": "0"
  }
}

É possível usar o valor jobReference para recuperar os resultados da consulta mais tarde, depois que o job for concluído e os dados estiverem disponíveis.

Recuperar os resultados da consulta mais tarde

Para recuperar uma solicitação depois que ela demorou para ser concluída, faça uma das seguintes solicitações.

gcloud

gcloud asset query \
    --SCOPE \
    --job-reference="JOB_REFERENCE"

Forneça os valores a seguir:

  • SCOPE: use um dos seguintes valores:

    • project=PROJECT_ID, em que PROJECT_ID é o ID do projeto que tem os recursos que você quer consultar.
    • folder=FOLDER_ID, em que FOLDER_ID é o ID da pasta que tem os recursos que você quer consultar.

      Como encontrar o ID de uma pasta do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma pasta do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma pasta do Google Cloud que está no nível da organização com 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 é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização que tem os recursos que você quer consultar.

      Como encontrar o ID de uma organização do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • JOB_REFERENCE: o valor de referência do job retornado em uma resposta anterior.

Exemplo

Execute o comando a seguir para receber os resultados de uma consulta executada anteriormente no projeto my-project.

gcloud asset query \
    --project=my-project \
    --job-reference="0000000000000000000000000000000000000000000000000000000000000000"

REST

Método HTTP e URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets

Solicitar corpo JSON:

{
  "jobReference": "JOB_REFERENCE",
  "pageToken": "PAGE_TOKEN"
}

Forneça os valores a seguir:

  • SCOPE_PATH: use um dos seguintes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto que tem os recursos que você quer consultar.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto que tem os recursos que você quer consultar.

      Como encontrar um número de projeto da nuvem soberana da T-Systems .

      Google Cloud console

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

      1. Acesse a página Welcome no console 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 extrair um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta que tem os recursos que você quer consultar.

      Como encontrar o ID de uma pasta

      Google Cloud console

      Para encontrar o ID de uma pasta do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma pasta do Google Cloud que está no nível da organização com 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 é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o comando a seguir usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização que tem os recursos que você quer consultar.

      Como encontrar o ID de uma organização do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • JOB_REFERENCE: o valor de referência do job retornado em uma resposta anterior.
  • PAGE_TOKEN: opcional. Respostas longas são separadas em várias páginas. Quando pageToken não é especificado, a primeira página é retornada. As páginas seguintes podem ser chamadas usando o nextPageToken da resposta anterior como o valor de pageToken.

Exemplos de comando

Execute um dos comandos a seguir para receber os resultados de uma consulta executada anteriormente.

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "jobReference": "0000000000000000000000000000000000000000000000000000000000000000"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "jobReference": "0000000000000000000000000000000000000000000000000000000000000000"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content

Exportar resultados de consulta para o BigQuery

Os resultados da consulta são retornados como respostas da API Query Assets. Para exportar os resultados para sua própria tabela do BigQuery, especifique um destino do BigQuery na solicitação. Se você ainda não tiver um, crie um conjunto de dados do BigQuery antes de fazer essas solicitações.

gcloud

gcloud asset query \
    --SCOPE \
    --billing-project=BILLING_PROJECT_ID \
    --statement="SQL_SELECT_QUERY" \
    --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME \
    --write-disposition="WRITE_METHOD"

Forneça os valores a seguir:

  • SCOPE: use um dos seguintes valores:

    • project=PROJECT_ID, em que PROJECT_ID é o ID do projeto que tem os metadados do recurso que você quer exportar com uma consulta SQL.
    • folder=FOLDER_ID, em que FOLDER_ID é o ID da pasta que tem os metadados do recurso que você quer exportar com uma consulta SQL.

      Como encontrar o ID de uma pasta do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma pasta do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma pasta do Google Cloud que está no nível da organização com 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 é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização que tem os metadados do recurso que você quer exportar com uma consulta SQL.

      Como encontrar o ID de uma organização do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • SQL_SELECT_QUERY: uma consulta SQL SELECT.
  • BIGQUERY_PROJECT_ID: o ID do projeto para onde você quer exportar a tabela do BigQuery.
  • DATASET_ID: o ID do conjunto de dados do BigQuery.
  • TABLE_NAME: a tabela do BigQuery para a qual você está exportando os metadados. Se não existir, ela será criada.
  • WRITE_METHOD: especifica o comportamento se a tabela ou partição de destino do BigQuery já existir. Os valores a seguir são compatíveis:

    • write-empty: Padrão. Se a tabela atual tiver dados, um erro duplicado será retornado no resultado do job.
    • write-append: anexa dados à tabela ou à partição mais recente.
    • write-truncate: substitui toda a tabela ou todos os dados das partições.

Exemplo

Execute o comando a seguir para receber os nomes e tipos de recursos das duas primeiras instâncias do Compute Engine no projeto my-project e exporte os resultados para a tabela my-table do BigQuery no projeto my-project, substituindo a tabela inteira se ela já existir.

gcloud asset query \
  --project=my-project \
  --statement="
    SELECT
      name, assetType
    FROM
      compute_googleapis_com_Instance
    LIMIT 2" \
  --bigquery-table=projects/my-project/datasets/my-dataset/tables/my-table \
  --write-disposition="write-truncate"

REST

Método HTTP e URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets

Cabeçalhos:

X-Goog-User-Project: BILLING_PROJECT_ID

Solicitar corpo JSON:

{
  "statement": "SQL_SELECT_QUERY",
  "outputConfig": {
    "bigqueryDestination": {
      "dataset": "projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID",
      "table": "TABLE_NAME",
      "writeDisposition": "WRITE_METHOD"
    }
  },
  "pageSize": "PAGE_SIZE"
}

Forneça os valores a seguir:

  • SCOPE_PATH: use um dos seguintes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto que tem os metadados do recurso que você quer exportar com uma consulta SQL.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto que tem os metadados do recurso que você quer exportar com uma consulta SQL.

      Como encontrar um número de projeto da nuvem soberana da T-Systems .

      Google Cloud console

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

      1. Acesse a página Welcome no console 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 extrair um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta que tem os metadados do recurso que você quer exportar com uma consulta SQL.

      Como encontrar o ID de uma pasta do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma pasta do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma pasta do Google Cloud que está no nível da organização com 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 é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o comando a seguir usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização que tem os metadados do recurso que você quer exportar com uma consulta SQL.

      Como encontrar o ID de uma organização do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: o ID do projeto em que o agente de serviço padrão do Inventário de recursos do Cloud tem permissões para gerenciar seus conjuntos de dados e tabelas do BigQuery. Saiba mais sobre como configurar o projeto de faturamento.

  • SQL_SELECT_QUERY: uma consulta SQL SELECT.
  • BIGQUERY_PROJECT_ID: o ID do projeto para onde você quer exportar a tabela do BigQuery.
  • DATASET_ID: o ID do conjunto de dados do BigQuery.
  • TABLE_NAME: a tabela do BigQuery para a qual você está exportando os metadados. Se não existir, ela será criada.
  • WRITE_METHOD: especifica o comportamento se a tabela ou partição de destino do BigQuery já existir. Os valores a seguir são compatíveis:

    • WRITE_EMPTY: Padrão. Se a tabela atual tiver dados, um erro duplicado será retornado no resultado do job.
    • WRITE_APPEND: anexa dados à tabela ou à partição mais recente.
    • WRITE_TRUNCATE: substitui toda a tabela ou todos os dados das partições.
  • PAGE_SIZE: opcional. O número de resultados retornados por página. O valor máximo é 500. Se o valor for definido como 0 ou um valor negativo, um padrão apropriado será selecionado. Um nextPageToken é retornado para recuperar resultados subsequentes.

Exemplos de comando

Execute um dos comandos a seguir para conferir os nomes e tipos de recursos das duas primeiras instâncias do Compute Engine no projeto my-project e exporte os resultados para a tabela my-table do BigQuery no projeto my-project, substituindo a tabela inteira se ela já existir.

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "statement": "
              SELECT
                name, assetType
              FROM
                compute_googleapis_com_Instance
              LIMIT 2",
            "outputConfig": {
              "bigqueryDestination": {
                "dataset": "projects/my-project/datasets/my-dataset",
                "table": "my-table",
                "writeDisposition": "WRITE_TRUNCATE"
              }
            }
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "statement": "
    SELECT
      name, assetType
    FROM
      compute_googleapis_com_Instance
    LIMIT 2",
  "outputConfig": {
    "bigqueryDestination": {
      "dataset": "projects/my-project/datasets/my-dataset",
      "table": "my-table",
      "writeDisposition": "WRITE_TRUNCATE"
    }
  }
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content

Outros exemplos de consulta SQL

Os exemplos de código a seguir mostram consultas SQL específicas que podem ser usadas para pesquisar ativos e ajudar a criar suas próprias consultas.

Instâncias de VM do Compute Engine em uma região específica

Além disso, retorne o name e quando eles foram criados.

SELECT
  name,
  resource.DATA.creationTimestamp
FROM
  compute_googleapis_com_Instance
WHERE
  resource.location LIKE '%asia%'

Quantos conjuntos de dados do BigQuery estão em cada projeto

  SELECT
    ancestor AS project,
    COUNT(*)
  FROM
    bigquery_googleapis_com_Dataset
  CROSS JOIN
    UNNEST (ancestors) AS ancestor
  WHERE
    ancestor LIKE '%project%'
  GROUP BY
    ancestor
  ORDER BY
    2 DESC

Quantas instâncias de VM do Compute Engine estão em cada região

SELECT
  resource.location,
  COUNT(*)
FROM
  compute_googleapis_com_Instance
GROUP BY
  resource.location

Nome e assetType de todos os recursos em uma região

SELECT
  name,
  assetType
FROM
  STANDARD_METADATA
WHERE
  resource.location LIKE '%asia%'

Buckets do Cloud Storage disponíveis publicamente

Além disso, retorne o name.

SELECT
  name
FROM
  IAM_POLICY
CROSS JOIN
  UNNEST(iamPolicy.bindings) AS binding
WHERE
  ('allUsers' IN UNNEST(binding.members)
  OR 'allAuthenticatedUsers' IN UNNEST(binding.members))
  AND assetType = 'storage.googleapis.com/Bucket'

Sub-redes que não têm instâncias de VM anexadas

SELECT
  subnetwork_table.name
FROM
  compute_googleapis_com_Subnetwork AS subnetwork_table
LEFT JOIN (
  SELECT
    interface.subnetwork AS subnetwork
  FROM
    compute_googleapis_com_Instance
  CROSS JOIN
    UNNEST(resource.DATA.networkInterfaces) AS interface) AS instance_table
ON
  SUBSTR(subnetwork_table.name, 25) = SUBSTR(instance_table.subnetwork,38)
WHERE
  instance_table.subnetwork IS NULL
  AND NOT subnetwork_table.name LIKE '%default%'