En este documento, se muestra cómo exportar los metadatos de recursos de tu proyecto a un bucket de Cloud Storage.
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.
Crea un bucket de Cloud Storage al que exportar, si aún no tienes uno.
Limitaciones
No se admiten los buckets de Cloud Storage encriptados con claves personalizadas de Cloud Key Management Service (Cloud KMS).
El bucket de Cloud Storage no puede tener una política de retención establecida.
Durante la exportación, la operación puede crear archivos temporales en la carpeta de salida. No quites estos archivos temporales mientras se realiza la operación. Una vez completada la operación, los archivos temporales se quitan automáticamente.
El tipo de contenido
ACCESS_POLICY
solo se puede exportar a nivel de la organización.Si el archivo al que exportas ya existe y está en proceso de exportación, se muestra un error
400
.Para probar los permisos, Cloud Asset Inventory crea un archivo vacío antes de exportar los datos, lo que envía un evento activador adicional de Cloud Storage de
google.cloud.storage.object.v1.finalized
.
Exporta una instantánea de recursos a Cloud Storage
gcloud
gcloud asset export \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --content-type=CONTENT_TYPE \ --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --snapshot-time="SNAPSHOT_TIME" \ --OUTPUT_TYPE
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. -
folder=FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que tiene los metadatos del activo que deseas exportar.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
, en el queORGANIZATION_ID
es el ID de la organización que tiene los metadatos del activo que deseas exportar.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
: Opcional Es el ID del proyecto en el que se encuentra el agente de servicio predeterminado de 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. ASSET_TYPE_#
: Opcional Es una lista separada por comas de tipo de recursos que se pueden buscar. Se admiten expresiones regulares compatibles con RE2. Si la expresión regular no coincide con ningún tipo de activo compatible, se muestra un errorINVALID_ARGUMENT
. Cuando no se especifica--asset-types
, se muestran todos los tipos de activos.CONTENT_TYPE
: Opcional El tipo de contenido de los metadatos que deseas recuperar. Cuando no se especifica--content-type
, solo se muestra información básica, como los nombres de los recursos, la última vez que se actualizaron y a qué proyectos, carpetas y organizaciones pertenecen.-
RELATIONSHIP_TYPE_#
: Opcional Requiere acceso al nivel Premium o Enterprise de Security Command Center o a Gemini Cloud Assist. Es una lista separada por comas de los tipos de relaciones de activos que deseas recuperar. Debes configurarCONTENT_TYPE
comoRELATIONSHIP
para que esto funcione. -
SNAPSHOT_TIME
: Opcional Es la hora en la que quieres tomar una instantánea de tus activos, en formato de fecha y hora de topic de gcloud. El valor no debe ser superior a 35 días. Cuando no se especifica--snapshot-time
, se toma una instantánea a la hora actual. -
OUTPUT_TYPE
: Usa uno de los siguientes valores:--output-path="gs://BUCKET_NAME/FILE_NAME"
para escribir el resultado en un archivo, en el que se cumple lo siguiente:-
BUCKET_NAME
es el nombre del bucket de Cloud Storage en el que se escribirá. -
FILE_NAME
es el archivo en el que se escribirá en tu bucket de Cloud Storage.
-
-
--output-path-prefix="gs://BUCKET_NAME/FOLDER_NAME"
para escribir el resultado en una carpeta, en la que se cumple lo siguiente:-
BUCKET_NAME
es el nombre del bucket de Cloud Storage en el que se escribirá. -
FOLDER_NAME
es la carpeta en la que se escribirá en tu bucket de Cloud Storage. El resultado se divide en subcarpetas que se nombran según los tipos de activos. Las subcarpetas no deben estar presentes en la carpeta que especifiques.
-
Consulta la referencia de la CLI de gcloud para ver todas las opciones.
Ejemplo
Ejecuta el siguiente comando para exportar los metadatos de resource
tal como estaban el 30 de enero de
2024 en el proyecto my-project
al archivo my-file.txt
en el
bucket de Cloud Storage my-bucket
.
gcloud asset export \ --project=my-project \ --billing-project=my-project \ --content-type=resource \ --snapshot-time="2024-01-30" \ --output-path="gs://my-bucket/my-file.txt"
Respuesta de ejemplo
Export in progress for root asset [projects/my-project]. Use [gcloud asset operations describe projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000] to check the status of the operation.
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:exportAssets
Encabezados:
X-Goog-User-Project: BILLING_PROJECT_ID
Cuerpo JSON de la solicitud:
{ "assetTypes": [ "ASSET_TYPE_1", "ASSET_TYPE_2", "..." ], "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "readTime": "SNAPSHOT_TIME", "outputConfig": { "gcsDestination": { OUTPUT_TYPE } } }
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 activo que deseas exportar. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto que tiene los metadatos del recurso que deseas exportar.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 Welcome 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 Welcome.
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.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 el queORGANIZATION_ID
es el ID de la organización que tiene los metadatos del activo que deseas exportar.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. ASSET_TYPE_#
: Opcional Es un array de tipos de recursos que se pueden buscar. Se admiten expresiones regulares compatibles con RE2. Si la expresión regular no coincide con ningún tipo de activo compatible, se muestra un errorINVALID_ARGUMENT
. Cuando no se especificaassetTypes
, se muestran todos los tipos de activos.CONTENT_TYPE
: Opcional El tipo de contenido de los metadatos que deseas recuperar. Cuando no se especificacontentType
, solo se muestra información básica, como los nombres de los activos, la última vez que se actualizaron y a qué proyectos, carpetas y organizaciones pertenecen.-
RELATIONSHIP_TYPE_#
: Opcional Requiere acceso al nivel Premium o Enterprise de Security Command Center o a Gemini Cloud Assist. Es una lista separada por comas de los tipos de relaciones de activos que deseas recuperar. Debes configurarCONTENT_TYPE
comoRELATIONSHIP
para que esto funcione. -
SNAPSHOT_TIME
: Opcional La hora en la que deseas tomar una instantánea de tus recursos, en formato RFC 3339. El valor no debe ser superior a 35 días. Cuando no se especificareadTime
, se toma una instantánea a la hora actual. -
OUTPUT_TYPE
: Usa uno de los siguientes valores:"uri": "gs://BUCKET_NAME/FILE_NAME"
para escribir el resultado en un archivo, en el que se cumple lo siguiente:-
BUCKET_NAME
es el nombre del bucket de Cloud Storage en el que se escribirá. -
FILE_NAME
es el archivo en el que se escribirá en tu bucket de Cloud Storage.
-
-
"uriPrefix": "gs://BUCKET_NAME/FOLDER_NAME"
para escribir el resultado en una carpeta, en la que se cumple lo siguiente:-
BUCKET_NAME
es el nombre del bucket de Cloud Storage en el que se escribirá. -
FOLDER_NAME
es la carpeta en la que se escribirá en tu bucket de Cloud Storage. El resultado se divide en subcarpetas que se nombran según los tipos de activos. Las subcarpetas no deben estar presentes en la carpeta que especifiques.
-
Consulta la referencia de REST para ver todas las opciones.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para exportar tus metadatos de resource
tal como estaban el 30 de enero de 2024 en el proyecto my-project
al archivo my-file.txt
en el bucket de Cloud Storage my-bucket
.
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 '{ "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/my-file" } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/my-file" } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets" | Select-Object -Expand Content
Respuesta de ejemplo
{ "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest", "parent": "projects/000000000000", "readTime": "2024-01-30T00:00:00Z", "contentType": "RESOURCE", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/export.txt" } } } }
C#
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en el Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en el Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
PHP
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en el Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.
Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Verifica el estado de una exportación
Las exportaciones tardan un tiempo en completarse. Para verificar si se realizó una exportación, puedes consultar la operación con su ID.
Ten en cuenta que, incluso si se realizó la exportación, es posible que alguien haya realizado otra solicitud de exportación al mismo destino como una operación diferente. Se pueden realizar nuevas solicitudes de exportación al mismo destino después de que finalice una solicitud anterior o si transcurrieron más de 15 minutos. Cloud Asset Inventory rechaza las solicitudes de exportación que se realizan fuera de estas condiciones.
gcloud
Para ver el estado de la exportación, completa las siguientes instrucciones:
Obtén el
OPERATION_PATH
, que incluye el ID de operación, de la respuesta a tu solicitud de exportación. ElOPERATION_PATH
se muestra en la respuesta a la exportación, que tiene el siguiente formato:projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
Para verificar el estado de la exportación, ejecuta el siguiente comando con
OPERATION_PATH
:gcloud asset operations describe OPERATION_PATH
REST
Para ver el estado de la exportación, completa las siguientes instrucciones:
Obtén el
OPERATION_PATH
, que incluye el ID de operación, de la respuesta a tu solicitud de exportación. ElOPERATION_PATH
se muestra como el valor del camponame
en la respuesta a la exportación, que tiene el siguiente formato:projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
Para verificar el estado de la exportación, realiza la siguiente solicitud.
REST
Método HTTP y URL:
GET https://cloudasset.googleapis.com/v1/OPERATION_PATH
Ejemplos de comandos
curl (Linux, macOS o Cloud Shell)
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/OPERATION_PATH
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/OPERATION_PATH" | Select-Object -Expand Content
Respuesta de ejemplo
{ "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest", "parent": "projects/000000000000", "readTime": "2024-01-30T00:00:00Z", "contentType": "RESOURCE", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/export.txt" } } } }
Cómo ver la instantánea de un recurso
Para ver la instantánea de un recurso, haz lo siguiente:
Ve a la página Buckets de Cloud Storage en la consola de Google Cloud .
Haz clic en el nombre del bucket al que exportaste el resumen de tu recurso y, luego, haz clic en el nombre del archivo de exportación.
Haz clic en Descargar para descargar la instantánea de tu recurso y ábrela en el editor de texto que prefieras.