Puedes consultar los recursos de tu proyecto, carpeta o organización con un dialecto compatible con BigQuery SQL.
Antes de comenzar
Habilita la API de Cloud Asset Inventory en el proyecto en el que ejecutas los comandos de Cloud Asset Inventory.
Asegúrate de que tu cuenta tenga el rol correcto para llamar a la API de Cloud Asset Inventory. Para obtener información sobre los permisos individuales de cada tipo de llamada, consulta Permisos.
Limitaciones
Los nombres de tipo de activo tienen
.
y/
reemplazados por_
. Por ejemplo,compute.googleapis.com/Instance
se convierte encompute_googleapis_com_Instance
.La solicitud debe ser una consulta
SELECT
.No se admite BigQuery SQL heredado.
Los resultados de las consultas que superan los 10 MB o las 1,000 filas siempre se paginan.
Las consultas deben tardar menos de 6 horas en procesarse.
Los resultados de las consultas solo se pueden exportar a un conjunto de datos de BigQuery en la multirregión
US
.
Tablas que puedes consultar
Puedes consultar las siguientes tablas:
En el caso de los tipos de contenido
RESOURCE
, los nombres de las tablas en el conjunto de datos corresponden al nombre del tipo de activo, siempre que este exista. Por ejemplo, la tablacompute_googleapis_com_Instance
contiene metadatos de instancias de Compute Engine.En el caso de los tipos de contenido que no son
RESOURCE
, los nombres de las tablas en el conjunto de datos corresponden a los nombres de los tipos de contenido RPC/REST. Por ejemplo,ACCESS_POLICY
.Para consultar los metadatos estándar de recursos en todos los tipos de recursos, usa el nombre de la tabla
STANDARD_METADATA
. Esto incluye todos los campos, exceptoresource.DATA
, que es específico de cada tipo de recurso.
Cómo consultar metadatos de activos
Console
Para consultar los metadatos de los activos de tu proyecto, carpeta o organización, completa los siguientes pasos:
-
En la consola de Google Cloud , ve a la pestaña Consulta de activos en la página Inventario de activos.
Si no aparece la pestaña Consulta de recursos, necesitas acceso al nivel Premium o Enterprise de Security Command Center, o a Gemini Cloud Assist.
- Cambia al proyecto, la carpeta o la organización que deseas consultar.
- Haz clic en la pestaña Consulta de recursos.
-
Para consultar los metadatos de los activos, usa una consulta de muestra o crea una propia:
- Para usar una muestra, haz clic en una entrada de la pestaña Biblioteca de consultas para obtener una vista previa de la consulta. Haz clic en **Aplicar** para copiar ese ejemplo en el cuadro Editar consulta y, luego, edita la consulta o haz clic en Ejecutar para ejecutarla.
- Para compilar tu propia consulta, ingresa el texto de la consulta directamente en el cuadro Editar consulta y, luego, haz clic en Ejecutar para ejecutarla. Para ayudarte a escribir tu propia consulta, puedes hacer clic en una tabla del panel Seleccionar tabla para obtener una vista previa de su esquema y contenido. Consulta Sintaxis de consulta para aprender a construir una consulta.
Los metadatos del activo que coinciden con la consulta se muestran en la pestaña Resultado de la consulta.
-
Opcional: Para descargar los conjuntos de resultados de la consulta en formato CSV, haz clic en Exportar.
El tamaño máximo del archivo CSV es de 2 MB. Si la solicitud de descarga falla porque el tamaño del archivo supera este límite, aparecerá un mensaje con instrucciones para exportar los resultados completos.
gcloud
gcloud asset query \ --SCOPE \ --statement="SQL_SELECT_QUERY" \ --timeout="TIMEOUTs"
Ingresa los siguientes valores:
-
SCOPE
: Usa uno de los siguientes valores:-
project=PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene los recursos que deseas consultar. -
folder=FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que tiene los recursos que deseas consultar.Cómo encontrar el ID de una carpeta de Google Cloud
consola de
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente 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)"
En el que TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no muestra los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, dondeORGANIZATION_ID
es el ID de la organización que tiene los recursos que deseas consultar.Cómo encontrar el ID de una organización de Google Cloud
consola de
Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: Una consultaSELECT
de SQL. -
TIMEOUT
: Opcional Es el tiempo máximo, en segundos, que un cliente debe esperar a que se complete la consulta antes de continuar. Usa tiempos de espera para ejecutar la consulta de forma asíncrona y recuperar los resultados más adelante con referencias de trabajo.
Consulta la referencia de la CLI de gcloud para ver todas las opciones.
Ejemplo
Ejecuta el siguiente comando para obtener los nombres y los tipos de recursos de las dos primeras instancias de Compute Engine
en el proyecto my-project
.
gcloud asset query \ --project=my-project \ --statement=" SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2"
Respuesta del trabajo finalizado
En el siguiente ejemplo, se muestra una respuesta a la búsqueda de ejemplo anterior. La respuesta contiene una referencia de trabajo y te indica si este finalizó (done: true
). Si el trabajo finalizó, el objeto queryResult
se propaga con los datos adecuados y los resultados se enumeran después.
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
Respuesta de trabajo sin terminar
Si configuras un tiempo de espera en tu solicitud, la consulta se realiza de forma asíncrona y se te envía una respuesta que indica que la tarea no está completa (done: false
). Este tipo de respuestas contiene una referencia de trabajo y un objeto queryResult
no propagado:
done: false jobReference: 0000000000000000000000000000000000000000000000000000000000000000 queryResult: nextPageToken: '' totalRows: '0'
Puedes usar el valor jobReference
para
recuperar los resultados de la consulta más adelante, después de que
se complete la tarea y los datos estén disponibles.
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
Cuerpo JSON de la solicitud:
{ "statement": "SQL_SELECT_QUERY", "timeout": "TIMEOUTs", "pageSize": "PAGE_SIZE", "pageToken": "PAGE_TOKEN" }
Ingresa los siguientes valores:
-
SCOPE_PATH
: Usa uno de los siguientes valores:Los valores permitidos son los siguientes:
-
projects/PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene los recursos que deseas consultar. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto que tiene los recursos que deseas consultar.Cómo encontrar el número de proyecto de Google Cloud
consola de
Para encontrar el número de proyecto de Google Cloud , completa los siguientes pasos:
-
Ve a la página Bienvenido en la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
-
Selecciona tu organización en el cuadro de lista y, luego, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Te damos la bienvenida.
Se muestran hasta 4,000 recursos. Si no ves el proyecto que buscas, ve a la página Administrar recursos y filtra la lista con el nombre de ese proyecto.
gcloud CLI
Puedes recuperar un número de proyecto de Google Cloud con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que tiene los recursos que deseas consultar.Cómo encontrar el ID de una carpeta de Google Cloud
consola de
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente 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)"
En el que TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no muestra los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, dondeORGANIZATION_ID
es el ID de la organización que tiene los recursos que deseas consultar.Cómo encontrar el ID de una organización de Google Cloud
consola de
Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: Una consultaSELECT
de SQL. -
TIMEOUT
: Opcional Es el tiempo máximo, en segundos, que un cliente debe esperar a que se complete la consulta antes de continuar. Usa tiempos de espera para ejecutar la consulta de forma asíncrona y recuperar los resultados más adelante con referencias de trabajo. -
PAGE_SIZE
: Opcional Es la cantidad de resultados que se mostrarán por página. La cantidad máxima es 500. Si el valor se establece en0
o en un valor negativo, se selecciona un valor predeterminado adecuado. Se muestra unnextPageToken
para recuperar los resultados posteriores. -
PAGE_TOKEN
: Opcional Las respuestas de solicitudes largas se separan en varias páginas. Cuando no se especificapageToken
, se muestra la primera página. Para llamar a las páginas posteriores, usa elnextPageToken
de la respuesta anterior como el valor depageToken
.
Consulta la referencia de REST para ver todas las opciones.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para obtener los nombres y los tipos de recursos de las dos primeras
instancias de Compute Engine en el proyecto my-project
.
curl (Linux, macOS o 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
Respuesta del trabajo finalizado
En el siguiente ejemplo, se muestra una respuesta a la búsqueda de ejemplo anterior. La respuesta contiene una referencia de trabajo y te indica si este finalizó ("done": true
). Si el trabajo finalizó, el objeto queryResult
se propaga con los datos adecuados.
Los resultados de la consulta se dividen en rows
, un array que contiene los metadatos del activo, y schema
, un objeto que describe el esquema de cada activo en el array rows
. Esto se hace para minimizar la duplicación de nombres y tipos de campos en respuestas grandes.
Del mismo modo, f
y v
se usan en el array rows
en lugar de fields
y value
para mantener las respuestas lo más pequeñas posible.
{ "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" } }
Respuesta de trabajo sin terminar
Si configuras un tiempo de espera en tu solicitud, la consulta se realiza de forma asíncrona y se te envía una respuesta que indica que la tarea no está completa ("done": false
). Este tipo de respuestas contiene una referencia de trabajo y un objeto queryResult
sin propagar:
{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000", "done": false, "queryResult": { "rows": [], "schema": { "fields": [] }, "nextPageToken": "", "totalRows": "0" } }
Puedes usar el valor jobReference
para
recuperar los resultados de la consulta más adelante, después de que
se complete la tarea y los datos estén disponibles.
Cómo recuperar los resultados de la consulta más tarde
Para recuperar una solicitud más tarde que haya tardado en completarse, realiza una de las siguientes solicitudes.
gcloud
gcloud asset query \ --SCOPE \ --job-reference="JOB_REFERENCE"
Ingresa los siguientes valores:
-
SCOPE
: Usa uno de los siguientes valores:-
project=PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene los recursos que deseas consultar. -
folder=FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que tiene los recursos que deseas consultar.Cómo encontrar el ID de una carpeta de Google Cloud
consola de
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente 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)"
En el que TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no muestra los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, dondeORGANIZATION_ID
es el ID de la organización que tiene los recursos que deseas consultar.Cómo encontrar el ID de una organización de Google Cloud
consola de
Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
JOB_REFERENCE
: Es el valor de referencia del trabajo que se muestra en una respuesta anterior.
Ejemplo
Ejecuta el siguiente comando para obtener los resultados de una consulta que se ejecutó anteriormente en el proyecto my-project
.
gcloud asset query \ --project=my-project \ --job-reference="0000000000000000000000000000000000000000000000000000000000000000"
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
Cuerpo JSON de la solicitud:
{ "jobReference": "JOB_REFERENCE", "pageToken": "PAGE_TOKEN" }
Ingresa los siguientes valores:
-
SCOPE_PATH
: Usa uno de los siguientes valores:Los valores permitidos son los siguientes:
-
projects/PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene los recursos que deseas consultar. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto que tiene los recursos que deseas consultar.Cómo encontrar el número de proyecto de Google Cloud
consola de
Para encontrar el número de proyecto de Google Cloud , completa los siguientes pasos:
-
Ve a la página Bienvenido en la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
-
Selecciona tu organización en el cuadro de lista y, luego, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Te damos la bienvenida.
Se muestran hasta 4,000 recursos. Si no ves el proyecto que buscas, ve a la página Administrar recursos y filtra la lista con el nombre de ese proyecto.
gcloud CLI
Puedes recuperar un número de proyecto de Google Cloud con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que tiene los recursos que deseas consultarCómo encontrar el ID de una carpeta de Google Cloud
consola de
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente 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)"
En el que TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no muestra los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, dondeORGANIZATION_ID
es el ID de la organización que tiene los recursos que deseas consultar.Cómo encontrar el ID de una organización de Google Cloud
consola de
Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
JOB_REFERENCE
: Es el valor de referencia del trabajo que se muestra en una respuesta anterior. -
PAGE_TOKEN
: Opcional Las respuestas de solicitudes largas se separan en varias páginas. Cuando no se especificapageToken
, se muestra la primera página. Para llamar a las páginas posteriores, usa elnextPageToken
de la respuesta anterior como el valor depageToken
.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para obtener los resultados de una consulta que se ejecutó anteriormente.
curl (Linux, macOS o 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
Exporta los resultados de las consultas a BigQuery
Los resultados de la consulta se muestran como respuestas de la API de Query Assets. Para exportar los resultados a tu propia tabla de BigQuery, especifica un destino de BigQuery en la solicitud. Si aún no tienes uno, debes crear un conjunto de datos de BigQuery antes de realizar estas solicitudes.
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"
Ingresa los siguientes valores:
-
SCOPE
: Usa uno de los siguientes valores:-
project=PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene los metadatos del recurso que deseas exportar con una consulta en SQL. -
folder=FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que tiene los metadatos del activo que deseas exportar con una consulta en SQL.Cómo encontrar el ID de una carpeta de Google Cloud
consola de
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente 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)"
En el que TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no muestra los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, dondeORGANIZATION_ID
es el ID de la organización que tiene los metadatos del recurso que deseas exportar con una consulta en SQL.Cómo encontrar el ID de una organización de Google Cloud
consola de
Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: Una consultaSELECT
de SQL. -
BIGQUERY_PROJECT_ID
: Es el ID del proyecto en el que se encuentra la tabla de BigQuery a la que deseas exportar. -
DATASET_ID
: Es el ID del conjunto de datos de BigQuery. -
TABLE_NAME
: Es la tabla de BigQuery a la que exportarás tus metadatos. Si no existe, se creará. -
WRITE_METHOD
: Especifica el comportamiento si ya existe la tabla o partición de destino de BigQuery. Se admiten los siguientes valores:-
write-empty
: Predeterminado. Si la tabla existente contiene datos, se muestra un error de duplicado en el resultado del trabajo. -
write-append
: Agrega datos a la tabla o a la partición más reciente. -
write-truncate
: Reemplaza la tabla completa o todos los datos de particiones.
-
Ejemplo
Ejecuta el siguiente comando para obtener los nombres y los tipos de activos de las dos primeras instancias de Compute Engine
en el proyecto my-project
y exportar los resultados a la
tabla my-table
de BigQuery en el proyecto my-project
, reemplazando
toda la tabla si ya existe.
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 y URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
Encabezados:
X-Goog-User-Project: BILLING_PROJECT_ID
Cuerpo JSON de la solicitud:
{ "statement": "SQL_SELECT_QUERY", "outputConfig": { "bigqueryDestination": { "dataset": "projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID", "table": "TABLE_NAME", "writeDisposition": "WRITE_METHOD" } }, "pageSize": "PAGE_SIZE" }
Ingresa los siguientes valores:
-
SCOPE_PATH
: Usa uno de los siguientes valores:Los valores permitidos son los siguientes:
-
projects/PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene los metadatos del recurso que deseas exportar con una consulta en SQL. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto que tiene los metadatos del recurso que deseas exportar con una consulta en SQL.Cómo encontrar el número de proyecto de Google Cloud
consola de
Para encontrar el número de proyecto de Google Cloud , completa los siguientes pasos:
-
Ve a la página Bienvenido en la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
-
Selecciona tu organización en el cuadro de lista y, luego, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Te damos la bienvenida.
Se muestran hasta 4,000 recursos. Si no ves el proyecto que buscas, ve a la página Administrar recursos y filtra la lista con el nombre de ese proyecto.
gcloud CLI
Puedes recuperar un número de proyecto de Google Cloud con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que tiene los metadatos del activo que deseas exportar con una consulta en SQL.Cómo encontrar el ID de una carpeta de Google Cloud
consola de
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente 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)"
En el que TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no muestra los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, en la queORGANIZATION_ID
es el ID de la organización que tiene los metadatos del recurso que deseas exportar con una consulta en SQL.Cómo encontrar el ID de una organización de Google Cloud
consola de
Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del selector en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: Es el ID del proyecto en el que se encuentra el agente de servicio predeterminado del Cloud Asset Inventory que tiene permisos para administrar tus conjuntos de datos y tablas de BigQuery. Obtén más información para configurar el proyecto de facturación. -
SQL_SELECT_QUERY
: Una consultaSELECT
de SQL. -
BIGQUERY_PROJECT_ID
: Es el ID del proyecto en el que se encuentra la tabla de BigQuery a la que deseas exportar. -
DATASET_ID
: Es el ID del conjunto de datos de BigQuery. -
TABLE_NAME
: Es la tabla de BigQuery a la que exportarás tus metadatos. Si no existe, se creará. -
WRITE_METHOD
: Especifica el comportamiento si ya existe la tabla o partición de destino de BigQuery. Se admiten los siguientes valores:-
WRITE_EMPTY
: Predeterminado. Si la tabla existente contiene datos, se muestra un error de duplicado en el resultado del trabajo. -
WRITE_APPEND
: Agrega datos a la tabla o a la partición más reciente. -
WRITE_TRUNCATE
: Reemplaza la tabla completa o todos los datos de particiones.
-
-
PAGE_SIZE
: Opcional Es la cantidad de resultados que se mostrarán por página. La cantidad máxima es 500. Si el valor se establece en0
o en un valor negativo, se selecciona un valor predeterminado adecuado. Se muestra unnextPageToken
para recuperar los resultados posteriores.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para obtener los nombres y los tipos de activos de las dos primeras
instancias de Compute Engine en el proyecto my-project
y exportar los resultados a la
tabla my-table
de BigQuery en el proyecto my-project
, reemplazando
toda la tabla si ya existe.
curl (Linux, macOS o 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
Ejemplos adicionales de consulta en SQL
En las siguientes muestras de código, se muestran consultas de SQL específicas que puedes usar para buscar recursos y ayudarte a crear tus propias consultas.
Instancias de VM de Compute Engine en una región específica
Además, muestra su name
y cuándo se creó.
SELECT
name,
resource.DATA.creationTimestamp
FROM
compute_googleapis_com_Instance
WHERE
resource.location LIKE '%asia%'
Cantidad de conjuntos de datos de BigQuery en cada proyecto
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
Cuántas instancias de VM de Compute Engine hay en cada región
SELECT
resource.location,
COUNT(*)
FROM
compute_googleapis_com_Instance
GROUP BY
resource.location
Nombre y assetType de todos los recursos de una región
SELECT
name,
assetType
FROM
STANDARD_METADATA
WHERE
resource.location LIKE '%asia%'
Buckets de Cloud Storage disponibles públicamente
Además, muestra su 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'
Subredes que no tienen instancias de VM adjuntas
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%'