Puedes recibir notificaciones en tiempo real sobre los cambios en los recursos y las políticas creando un feed y suscribiéndote a él.
Cuando creas el feed, puedes especificar que quieres monitorizar los cambios de los tipos de recursos, las políticas de gestión de identidades y accesos, las políticas de acceso y las políticas de organización admitidos en una organización, una carpeta o un proyecto. Además, puede añadir condiciones a su feed para recibir notificaciones solo de determinados tipos de cambios en un recurso.
Después de crear un feed, recibirá notificaciones a través de Pub/Sub cada vez que cambien los recursos especificados. El primer mensaje publicado en el tema de Pub/Sub es un mensaje de bienvenida en formato de cadena, y todos los mensajes siguientes están en formato TemporalAsset.
Aquí tienes un mensaje de Pub/Sub de ejemplo para el tipo de contenido RESOURCE
.
{
"asset":{
"ancestors":[
"projects/000000000000",
"folders/000000000000",
"organizations/000000000000"
],
"assetType":"storage.googleapis.com/Bucket",
"name":"//storage.googleapis.com/my-bucket",
"resource":{
"data":{
LATEST_ASSET_METADATA
},
"discoveryDocumentUri":"https://www.googleapis.com/discovery/v1/apis/storage/v1/rest",
"discoveryName":"Bucket",
"location":"us",
"parent":"//cloudresourcemanager.googleapis.com/projects/000000000000",
"version":"v1"
},
"updateTime":"2024-01-30T00:00:00.000000Z"
},
"priorAsset":{
"ancestors":[
"projects/000000000000",
"folders/000000000000",
"organizations/000000000000"
],
"assetType":"storage.googleapis.com/Bucket",
"name":"//storage.googleapis.com/my-bucket",
"resource":{
"data":{
PREVIOUS_ASSET_METADATA
},
"discoveryDocumentUri":"https://www.googleapis.com/discovery/v1/apis/storage/v1/rest",
"discoveryName":"Bucket",
"location":"us",
"parent":"//cloudresourcemanager.googleapis.com/projects/000000000000",
"version":"v1"
},
"updateTime":"2024-01-29T00:00:00.000000Z"
},
"priorAssetState":"PRESENT",
"window":{
"startTime":"2024-01-30T00:00:00.000000Z"
}
}
Para obtener más información sobre Pub/Sub o sobre cómo configurar suscripciones, consulta la documentación de Pub/Sub.
Antes de empezar
Habilita la API Cloud Asset Inventory en el proyecto desde el que ejecutas los comandos de Cloud Asset Inventory.
Asegúrate de que tu cuenta tiene el rol correcto para llamar a la API Cloud Asset Inventory. Para ver los permisos individuales de cada tipo de llamada, consulta la sección Permisos.
Crea un tema de Pub/Sub si aún no tienes ninguno.
Limitaciones
La creación, actualización o eliminación de un feed puede tardar hasta 10 minutos en aplicarse.
El proyecto en el que se crea un feed debe durar más que el feed. Esto se debe a que la cuenta de servicio utilizada para publicar en el tema de Pub/Sub de destino se encuentra en ese proyecto. Un feed deja de funcionar y se elimina en cuanto se elimina el proyecto de forma permanente.
Puede crear hasta 200 feeds en una cuenta principal. Este límite solo se aplica a los feeds que siguen directamente a un feed principal y no tiene en cuenta los feeds de sus elementos secundarios. Por ejemplo, si tienes 10 proyectos en una organización, cada proyecto puede tener hasta 200 feeds y la organización también puede tener hasta 200 feeds.
Crear feeds
gcloud
gcloud asset feeds create FEED_ID \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --pubsub-topic=projects/TOPIC_PROJECT_ID/topics/TOPIC_ID \ --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --content-type=CONTENT_TYPE \ --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --condition-title="CONDITION_TITLE" \ --condition-description="CONDITION_DESCRIPTION" \ --condition-expression="CONDITION_EXPRESSION"
Proporciona los siguientes valores:
-
SCOPE
: usa uno de los siguientes valores:-
project=PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto en el que se va a crear el feed. -
folder=FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta en la que se creará el feed.Cómo encontrar el ID de una Google Cloud carpeta
Google Cloud consola
Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
CLI de gcloud
Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"
Donde TOP_LEVEL_FOLDER_NAME es una coincidencia parcial o completa de la cadena del nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas 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 en la que se va a crear el feed.Cómo encontrar el ID de una Google Cloud organización
Google Cloud consola
Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.
CLI de gcloud
Puedes obtener el ID de una Google Cloud organización con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
FEED_ID
: Identificador único del feed de recursos.-
BILLING_PROJECT_ID
: opcional. El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Cloud Asset Inventory que tiene permisos para gestionar tu tema de Pub/Sub. Consulta más información sobre cómo definir el proyecto de facturación. -
TOPIC_PROJECT_ID
: ID del proyecto en el que se encuentra el tema de Pub/Sub. -
TOPIC_ID
: ID del tema de Pub/Sub al que se enviarán las notificaciones. - Al menos una de las siguientes definiciones de recurso:
ASSET_NAME_#
: opcional. Lista separada por comas de nombres completos de recursos.ASSET_TYPE_#
: opcional. Lista separada por comas 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 recurso admitido, se devuelve un errorINVALID_ARGUMENT
. Si no se especifica--asset-types
, se devuelven todos los tipos de recursos.
CONTENT_TYPE
: opcional. El tipo de contenido de los metadatos que quieras obtener. Si no se especifica--content-type
, solo se devuelve información básica, como los nombres de los recursos, la última vez que se actualizaron y los proyectos, las carpetas y las organizaciones a los que pertenecen.-
RELATIONSHIP_TYPE_#
: opcional. Se requiere acceso al nivel Premium o Enterprise de Security Command Center o a Gemini Cloud Assist. Lista separada por comas de tipos de relaciones de recursos que quieras obtener. Para que funcione, debes asignar el valorRELATIONSHIP
aCONTENT_TYPE
. - Si añades una condición de feed opcional, incluye los siguientes detalles
en el comando:
CONDITION_TITLE
: título que se asignará a la condición del feed.-
CONDITION_DESCRIPTION
: descripción que se asignará a la condición del feed. CONDITION_EXPRESSION
: la expresión condicional que se aplicará al feed.
Consulta la referencia de la CLI de gcloud para ver todas las opciones.
Ejemplo
Ejecuta el siguiente comando para crear un feed en el tema de Pub/Sub my-topic
que envía notificaciones cuando se hacen cambios en los siguientes recursos del proyecto my-project
.
- Segmento de Cloud Storage
my-bucket
- Cualquier tabla de BigQuery
gcloud asset feeds create my-feed \ --project=my-project \ --pubsub-topic=projects/my-project/topics/my-topic \ --asset-names=//storage.googleapis.com/my-bucket \ --asset-types=bigquery.googleapis.com/Table \ --content-type=resource
Respuesta de ejemplo
assetNames: - //storage.googleapis.com/my-bucket assetTypes: - bigquery.googleapis.com/Table condition: {} contentType: RESOURCE feedOutputConfig: pubsubDestination: topic: projects/my-project/topics/my-topic name: projects/000000000000/feeds/my-feed
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds
Encabezados:
X-Goog-User-Project: BILLING_PROJECT_ID
Cuerpo JSON de la solicitud:
{ "feedId": "FEED_ID", "feed": { "assetNames": [ "ASSET_NAME_1", "ASSET_NAME_2", "..." ], "assetTypes": [ "ASSET_TYPE_1", "ASSET_TYPE_2", "..." ], "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "feedOutputConfig": { "pubsubDestination": { "topic": "projects/TOPIC_PROJECT_ID/topics/TOPIC_ID" } }, "condition": { "title": "CONDITION_TITLE", "description": "CONDITION_DESCRIPTION", "expression": "CONDITION_EXPRESSION" } } }
Proporciona los siguientes valores:
-
SCOPE_PATH
: usa uno de los siguientes valores:Los valores permitidos son:
-
projects/PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto en el que se va a crear el feed. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto en el que se va a crear el feed.Cómo encontrar el Google Cloud número de proyecto
Google Cloud consola
Para encontrar un número de proyecto de Google Cloud , sigue estos pasos:
-
Ve a la página Bienvenida de la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
-
Selecciona tu organización en el cuadro de lista y, a continuación, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.
Se muestran hasta 4000 recursos. Si no ves el proyecto que buscas, ve a la página Gestionar recursos y filtra la lista por el nombre de ese proyecto.
CLI de gcloud
Puedes obtener un Google Cloud número de proyecto con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta en la que se creará el feed.Cómo encontrar el ID de una Google Cloud carpeta
Google Cloud consola
Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
CLI de gcloud
Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"
Donde TOP_LEVEL_FOLDER_NAME es una coincidencia parcial o completa de la cadena del nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas 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 en la que se va a crear el feed.Cómo encontrar el ID de una Google Cloud organización
Google Cloud consola
Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.
CLI de gcloud
Puedes obtener el ID de una Google Cloud organización con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Inventario de Recursos de Cloud que tiene permisos para gestionar tu tema de Pub/Sub. Consulta más información sobre cómo definir el proyecto de facturación. FEED_ID
: Identificador único del feed de recursos.- Al menos una de las siguientes definiciones de recurso:
ASSET_NAME_#
: opcional. Matriz de nombres completos de recursos.ASSET_TYPE_#
: opcional. Una matriz 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 recurso admitido, se devuelve un errorINVALID_ARGUMENT
. Si no se especificaassetTypes
, se devuelven todos los tipos de recursos.
CONTENT_TYPE
: opcional. El tipo de contenido de los metadatos que quieras obtener. Si no se especificacontentType
, solo se devuelve información básica, como los nombres de los recursos, la última vez que se actualizaron y los proyectos, las carpetas y las organizaciones a los que pertenecen.-
RELATIONSHIP_TYPE_#
: opcional. Se requiere acceso al nivel Premium o Enterprise de Security Command Center o a Gemini Cloud Assist. Lista separada por comas de tipos de relaciones de recursos que quieras obtener. Para que funcione, debes asignar el valorRELATIONSHIP
aCONTENT_TYPE
. -
TOPIC_PROJECT_ID
: ID del proyecto en el que se encuentra el tema de Pub/Sub. -
TOPIC_ID
: ID del tema de Pub/Sub al que se enviarán las notificaciones. - Si añades una condición de feed opcional, incluye los siguientes detalles
en el comando:
CONDITION_TITLE
: título que se asignará a la condición del feed.-
CONDITION_DESCRIPTION
: descripción que se asignará a la condición del feed. CONDITION_EXPRESSION
: la expresión condicional que se aplicará al feed.
Consulta la referencia de REST para ver todas las opciones.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para crear un feed en el tema de my-topic
Pub/Sub
que avise cuando se hagan cambios en los siguientes recursos del proyecto my-project
.
- Segmento de Cloud Storage
my-bucket
- Cualquier tabla de BigQuery
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 '{ "feedId": "my-feed", "feed": { "assetNames": [ "//storage.googleapis.com/my-bucket" ], "assetTypes": [ "bigquery.googleapis.com/Table" ], "contentType": "RESOURCE", "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project/feeds
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "feedId": "my-feed", "feed": { "assetNames": [ "//storage.googleapis.com/my-bucket" ], "assetTypes": [ "bigquery.googleapis.com/Table" ], "contentType": "RESOURCE", "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds" | Select-Object -Expand Content
Respuesta de ejemplo
{ "name": "projects/000000000000/feeds/my-feed", "assetNames": [ "//storage.googleapis.com/my-bucket" ], "assetTypes": [ "bigquery.googleapis.com/Table" ], "contentType": "RESOURCE", "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } }
Go
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Ruby
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Obtener feeds
gcloud
gcloud asset feeds describe FEED_ID \ --SCOPE \ --billing-project=BILLING_PROJECT_ID
Proporciona los siguientes valores:
-
SCOPE
: usa uno de los siguientes valores:-
project=PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto en el que se encuentra el feed. -
folder=FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta en la que se encuentra el feed.Cómo encontrar el ID de una Google Cloud carpeta
Google Cloud consola
Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
CLI de gcloud
Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"
Donde TOP_LEVEL_FOLDER_NAME es una coincidencia parcial o completa de la cadena del nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas 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 en la que se encuentra el feed.Cómo encontrar el ID de una Google Cloud organización
Google Cloud consola
Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.
CLI de gcloud
Puedes obtener el ID de una Google Cloud organización con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Inventario de Recursos de Cloud que tiene permisos para gestionar tu tema de Pub/Sub. Consulta más información sobre cómo definir el proyecto de facturación. FEED_ID
: Identificador único del feed de recursos.
Consulta la referencia de la CLI de gcloud para ver todas las opciones.
Respuesta de ejemplo
assetNames: - //storage.googleapis.com/my-bucket assetTypes: - bigquery.googleapis.com/Table condition: {} contentType: RESOURCE feedOutputConfig: pubsubDestination: topic: projects/my-project/topics/my-topic name: projects/000000000000/feeds/my-feed
REST
Método HTTP y URL:
GET https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds/FEED_ID
Encabezados:
X-Goog-User-Project: BILLING_PROJECT_ID
Proporciona los siguientes valores:
-
SCOPE_PATH
: usa uno de los siguientes valores:Los valores permitidos son:
-
projects/PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto en el que se encuentra el feed. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto en el que se encuentra el feed.Cómo encontrar el Google Cloud número de proyecto
Google Cloud consola
Para encontrar un número de proyecto de Google Cloud , sigue estos pasos:
-
Ve a la página Bienvenida de la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
-
Selecciona tu organización en el cuadro de lista y, a continuación, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.
Se muestran hasta 4000 recursos. Si no ves el proyecto que buscas, ve a la página Gestionar recursos y filtra la lista por el nombre de ese proyecto.
CLI de gcloud
Puedes obtener un Google Cloud número de proyecto con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta en la que se encuentra el feed.Cómo encontrar el ID de una Google Cloud carpeta
Google Cloud consola
Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
CLI de gcloud
Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"
Donde TOP_LEVEL_FOLDER_NAME es una coincidencia parcial o completa de la cadena del nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas 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 en la que se encuentra el feed.Cómo encontrar el ID de una Google Cloud organización
Google Cloud consola
Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.
CLI de gcloud
Puedes obtener el ID de una Google Cloud organización con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Cloud Asset Inventory, que tiene permisos para gestionar tus conjuntos de datos y tablas de BigQuery. Consulta más información sobre cómo definir el proyecto de facturación. FEED_ID
: Identificador único del feed de recursos.
Consulta la referencia de REST para ver todas las opciones.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para obtener un feed específico.
curl (Linux, macOS o Cloud Shell)
curl -X GET \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed" | Select-Object -Expand Content
Respuesta de ejemplo
{ "name": "projects/000000000000/feeds/my-feed", "assetNames": [ "//storage.googleapis.com/my-bucket" ], "assetTypes": [ "bigquery.googleapis.com/Table" ], "contentType": "RESOURCE", "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } }
Go
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Mostrar feeds
Para enumerar todos los feeds de un proyecto, una carpeta o una organización, haz una de las siguientes solicitudes.
gcloud
gcloud asset feeds list \ --SCOPE \ --billing-project=BILLING_PROJECT_ID
Proporciona los siguientes valores:
-
SCOPE
: usa uno de los siguientes valores:-
project=PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto en el que se encuentran los feeds. -
folder=FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta en la que se encuentran los feeds.Cómo encontrar el ID de una Google Cloud carpeta
Google Cloud consola
Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
CLI de gcloud
Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"
Donde TOP_LEVEL_FOLDER_NAME es una coincidencia parcial o completa de la cadena del nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas 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 en la que se encuentran los feeds.Cómo encontrar el ID de una Google Cloud organización
Google Cloud consola
Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.
CLI de gcloud
Puedes obtener el ID de una Google Cloud organización con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Inventario de Recursos de Cloud que tiene permisos para gestionar tu tema de Pub/Sub. Consulta más información sobre cómo definir el proyecto de facturación.
Consulta la referencia de la CLI de gcloud para ver todas las opciones.
Respuesta de ejemplo
- assetNames: - //storage.googleapis.com/my-bucket assetTypes: - bigquery.googleapis.com/Table condition: {} contentType: RESOURCE feedOutputConfig: pubsubDestination: topic: projects/my-project/topics/my-topic name: projects/000000000000/feeds/my-feed
REST
Método HTTP y URL:
GET https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds
Encabezados:
X-Goog-User-Project: BILLING_PROJECT_ID
Proporciona los siguientes valores:
-
SCOPE_PATH
: usa uno de los siguientes valores:Los valores permitidos son:
-
projects/PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto en el que se encuentran los feeds. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto en el que se encuentran los feeds.Cómo encontrar el Google Cloud número de proyecto
Google Cloud consola
Para encontrar un número de proyecto de Google Cloud , sigue estos pasos:
-
Ve a la página Bienvenida de la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
-
Selecciona tu organización en el cuadro de lista y, a continuación, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.
Se muestran hasta 4000 recursos. Si no ves el proyecto que buscas, ve a la página Gestionar recursos y filtra la lista por el nombre de ese proyecto.
CLI de gcloud
Puedes obtener un Google Cloud número de proyecto con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta en la que se encuentran los feeds.Cómo encontrar el ID de una Google Cloud carpeta
Google Cloud consola
Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
CLI de gcloud
Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"
Donde TOP_LEVEL_FOLDER_NAME es una coincidencia parcial o completa de la cadena del nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas 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 en la que se encuentran los feeds.Cómo encontrar el ID de una Google Cloud organización
Google Cloud consola
Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.
CLI de gcloud
Puedes obtener el ID de una Google Cloud organización con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Cloud Asset Inventory, que tiene permisos para gestionar tus conjuntos de datos y tablas de BigQuery. Consulta más información sobre cómo definir el proyecto de facturación.
Consulta la referencia de REST para ver todas las opciones.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para enumerar todos los feeds del proyecto my-project
.
curl (Linux, macOS o Cloud Shell)
curl -X GET \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/projects/my-project/feeds
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds" | Select-Object -Expand Content
Respuesta de ejemplo
{ "feeds": [ { "name": "projects/000000000000/feeds/my-feed", "assetNames": [ "//storage.googleapis.com/my-bucket" ], "assetTypes": [ "bigquery.googleapis.com/Table" ], "contentType": "RESOURCE", "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } } ] }
Go
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Actualizar feeds
Puede actualizar los atributos de un feed de las siguientes formas:
Añadir o quitar nombres de recursos específicos, o bien borrar todos los nombres del feed.
Añadir o quitar tipos de recursos específicos, o bien borrar todos los recursos del feed.
Sobrescribir las condiciones o eliminarlas del feed.
gcloud
gcloud asset feeds update FEED_ID \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --pubsub-topic=projects/TOPIC_PROJECT_ID/topics/TOPIC_ID \ --clear-asset-names \ --add-asset-names=ASSET_NAME_1,ASSET_NAME_2,... \ --remove-asset-names=ASSET_NAME_3,ASSET_NAME_4,... \ --clear-asset-types \ --add-asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --remove-asset-types=ASSET_TYPE_3,ASSET_TYPE_4,... \ --clear-content-type \ --content-type=CONTENT_TYPE \ --clear-relationship-types \ --remove-relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --add-relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --clear-condition-title \ --condition-title="CONDITION_TITLE" \ --clear-condition-description \ --condition-description="CONDITION_DESCRIPTION" \ --clear-condition-expression --condition-expression="CONDITION_EXPRESSION"
Proporciona los siguientes valores:
-
SCOPE
: usa uno de los siguientes valores:-
project=PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto en el que se va a actualizar el feed. -
folder=FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta en la que se va a actualizar el feed.Cómo encontrar el ID de una Google Cloud carpeta
Google Cloud consola
Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
CLI de gcloud
Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"
Donde TOP_LEVEL_FOLDER_NAME es una coincidencia parcial o completa de la cadena del nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas 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 en la que se va a actualizar el feed.Cómo encontrar el ID de una Google Cloud organización
Google Cloud consola
Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.
CLI de gcloud
Puedes obtener el ID de una Google Cloud organización con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
FEED_ID
: Identificador único del feed de recursos.-
BILLING_PROJECT_ID
: opcional. El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Cloud Asset Inventory que tiene permisos para gestionar tu tema de Pub/Sub. Consulta más información sobre cómo definir el proyecto de facturación. -
TOPIC_PROJECT_ID
: ID del proyecto en el que se encuentra el tema de Pub/Sub. -
TOPIC_ID
: ID del tema de Pub/Sub al que se enviarán las notificaciones. - Al menos una de las siguientes definiciones de recurso:
ASSET_NAME_#
: opcional. Lista separada por comas de nombres completos de recursos.ASSET_TYPE_#
: opcional. Lista separada por comas 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 recurso admitido, se devuelve un errorINVALID_ARGUMENT
. Si no se especifica--asset-types
, se devuelven todos los tipos de recursos.
CONTENT_TYPE
: opcional. El tipo de contenido de los metadatos que quieras obtener. Si no se especifica--content-type
, solo se devuelve información básica, como los nombres de los recursos, la última vez que se actualizaron y los proyectos, las carpetas y las organizaciones a los que pertenecen.-
RELATIONSHIP_TYPE_#
: opcional. Se requiere acceso al nivel Premium o Enterprise de Security Command Center o a Gemini Cloud Assist. Lista separada por comas de tipos de relaciones de recursos que quieras obtener. Para que funcione, debes asignar el valorRELATIONSHIP
aCONTENT_TYPE
. - Si añades una condición de feed opcional, incluye los siguientes detalles
en el comando:
CONDITION_TITLE
: título que se asignará a la condición del feed.-
CONDITION_DESCRIPTION
: descripción que se asignará a la condición del feed. CONDITION_EXPRESSION
: la expresión condicional que se aplicará al feed.
Consulta la referencia de la CLI de gcloud para ver todas las opciones.
Ejemplo
Ejecuta el siguiente comando para actualizar el tema de Pub/Sub my-topic
en el proyecto my-project
. Esta solicitud quita todos los nombres de recursos de la monitorización y añade el tipo de recurso gkemulticloud.googleapis.com/AttachedCluster
.
gcloud asset feeds update my-feed \ --project=my-project \ --pubsub-topic=projects/my-project/topics/my-topic \ --clear-asset-names \ --add-asset-types=gkemulticloud.googleapis.com/AttachedCluster
Respuesta de ejemplo
assetTypes: - bigquery.googleapis.com/Table - gkemulticloud.googleapis.com/AttachedCluster condition: {} contentType: RESOURCE feedOutputConfig: pubsubDestination: topic: projects/my-project/topics/my-topic name: projects/000000000000/feeds/my-feed
Para actualizar los atributos de un feed, debe especificar la ruta del atributo en update_mask
y el valor de ese atributo.
REST
Método HTTP y URL:
PATCH https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds/FEED_ID
Encabezados:
X-Goog-User-Project: BILLING_PROJECT_ID
Cuerpo JSON de la solicitud:
{ "feed": { "assetNames": [ "ASSET_NAME_1", "ASSET_NAME_2", "..." ], "assetTypes": [ "ASSET_TYPE_1", "ASSET_TYPE_2", "..." ], "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "feedOutputConfig": { "pubsubDestination": { "topic": "projects/TOPIC_PROJECT_ID/topics/TOPIC_ID" } } }, "condition": { "title": "CONDITION_TITLE", "description": "CONDITION_DESCRIPTION", "expression": "CONDITION_EXPRESSION" }, "update_mask": { "paths": [ "feed_output_config.pubsub_destination.topic", ATTRIBUTE_PATH_1, ATTRIBUTE_PATH_2, ... ] } }
Proporciona los siguientes valores:
-
SCOPE_PATH
: usa uno de los siguientes valores:Los valores permitidos son:
-
projects/PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto en el que se va a actualizar el feed. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto en el que se va a actualizar el feed.Cómo encontrar el Google Cloud número de proyecto
Google Cloud consola
Para encontrar un número de proyecto de Google Cloud , sigue estos pasos:
-
Ve a la página Bienvenida de la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
-
Selecciona tu organización en el cuadro de lista y, a continuación, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.
Se muestran hasta 4000 recursos. Si no ves el proyecto que buscas, ve a la página Gestionar recursos y filtra la lista por el nombre de ese proyecto.
CLI de gcloud
Puedes obtener un Google Cloud número de proyecto con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta en la que se va a actualizar el feed.Cómo encontrar el ID de una Google Cloud carpeta
Google Cloud consola
Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
CLI de gcloud
Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"
Donde TOP_LEVEL_FOLDER_NAME es una coincidencia parcial o completa de la cadena del nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas 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 en la que se va a actualizar el feed.Cómo encontrar el ID de una Google Cloud organización
Google Cloud consola
Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.
CLI de gcloud
Puedes obtener el ID de una Google Cloud organización con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Inventario de Recursos de Cloud que tiene permisos para gestionar tu tema de Pub/Sub. Consulta más información sobre cómo definir el proyecto de facturación. FEED_ID
: Identificador único del feed de recursos.- Al menos una de las siguientes definiciones de recurso:
ASSET_NAME_#
: opcional. Matriz de nombres completos de recursos.ASSET_TYPE_#
: opcional. Una matriz 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 recurso admitido, se devuelve un errorINVALID_ARGUMENT
. Si no se especificaassetTypes
, se devuelven todos los tipos de recursos.
CONTENT_TYPE
: opcional. El tipo de contenido de los metadatos que quieras obtener. Si no se especificacontentType
, solo se devuelve información básica, como los nombres de los recursos, la última vez que se actualizaron y los proyectos, las carpetas y las organizaciones a los que pertenecen.-
RELATIONSHIP_TYPE_#
: opcional. Se requiere acceso al nivel Premium o Enterprise de Security Command Center o a Gemini Cloud Assist. Lista separada por comas de tipos de relaciones de recursos que quieras obtener. Para que funcione, debes asignar el valorRELATIONSHIP
aCONTENT_TYPE
. -
TOPIC_PROJECT_ID
: ID del proyecto en el que se encuentra el tema de Pub/Sub. -
TOPIC_ID
: ID del tema de Pub/Sub al que se enviarán las notificaciones. - Si añades una condición de feed opcional, incluye los siguientes detalles
en el comando:
CONDITION_TITLE
: título que se asignará a la condición del feed.-
CONDITION_DESCRIPTION
: descripción que se asignará a la condición del feed. CONDITION_EXPRESSION
: la expresión condicional que se aplicará al feed.
Consulta la referencia de REST para ver todas las opciones.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para actualizar el tema de Pub/Sub my-topic
en el proyecto my-project
. Esta solicitud quita todos los nombres de recursos de la monitorización y añade el tipo de recurso gkemulticloud.googleapis.com/AttachedCluster
.
curl (Linux, macOS o Cloud Shell)
curl -X PATCH \ -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 '{ "feed": { "assetNames": [], "assetTypes": [ "gkemulticloud.googleapis.com/AttachedCluster" ], "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } }, "update_mask": { "paths": ["feed_output_config.pubsub_destination.topic", "asset_names", "asset_types"] } }' \ https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "feed": { "assetNames": [], "assetTypes": [ "gkemulticloud.googleapis.com/AttachedCluster" ], "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } }, "update_mask": { "paths": ["feed_output_config.pubsub_destination.topic", "asset_names", "asset_types"] } } "@ Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed" | Select-Object -Expand Content
Respuesta de ejemplo
{ "feeds": [ { "name": "projects/000000000000/feeds/my-feed", "assetTypes": [ "bigquery.googleapis.com/Table", "gkemulticloud.googleapis.com/AttachedCluster" ], "contentType": "RESOURCE", "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } } ] }
Go
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Eliminar feeds
Si ya no quieres recibir notificaciones sobre los cambios en los recursos, haz una de las siguientes solicitudes para eliminar un feed.
gcloud
gcloud asset feeds delete FEED_ID \ --SCOPE \ --billing-project=BILLING_PROJECT_ID
Proporciona los siguientes valores:
-
SCOPE
: usa uno de los siguientes valores:-
project=PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto en el que se encuentra el feed. -
folder=FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta en la que se encuentra el feed.Cómo encontrar el ID de una Google Cloud carpeta
Google Cloud consola
Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
CLI de gcloud
Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"
Donde TOP_LEVEL_FOLDER_NAME es una coincidencia parcial o completa de la cadena del nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas 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 en la que se encuentra el feed.Cómo encontrar el ID de una Google Cloud organización
Google Cloud consola
Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.
CLI de gcloud
Puedes obtener el ID de una Google Cloud organización con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Inventario de Recursos de Cloud que tiene permisos para gestionar tu tema de Pub/Sub. Consulta más información sobre cómo definir el proyecto de facturación.
Consulta la referencia de la CLI de gcloud para ver todas las opciones.
Respuesta de ejemplo
Si la eliminación se realiza correctamente, no se devuelve ninguna respuesta.
REST
Método HTTP y URL:
DELETE https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds/FEED_ID
Encabezados:
X-Goog-User-Project: BILLING_PROJECT_ID
Proporciona los siguientes valores:
-
SCOPE_PATH
: usa uno de los siguientes valores:Los valores permitidos son:
-
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto en el que se encuentra el feed.Cómo encontrar el Google Cloud número de proyecto
Google Cloud consola
Para encontrar un número de proyecto de Google Cloud , sigue estos pasos:
-
Ve a la página Bienvenida de la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
-
Selecciona tu organización en el cuadro de lista y, a continuación, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.
Se muestran hasta 4000 recursos. Si no ves el proyecto que buscas, ve a la página Gestionar recursos y filtra la lista por el nombre de ese proyecto.
CLI de gcloud
Puedes obtener un Google Cloud número de proyecto con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta en la que se encuentra el feed.Cómo encontrar el ID de una Google Cloud carpeta
Google Cloud consola
Para encontrar el ID de una carpeta de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
CLI de gcloud
Puedes obtener el ID de una Google Cloud carpeta que se encuentre a nivel de 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)"
Donde TOP_LEVEL_FOLDER_NAME es una coincidencia parcial o completa de la cadena del nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas 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 en la que se encuentra el feed.Cómo encontrar el ID de una Google Cloud organización
Google Cloud consola
Para encontrar el ID de una organización de Google Cloud , sigue estos pasos:
-
Ve a la Google Cloud consola.
- En la barra de menús, haz clic en el cuadro de lista del selector.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todas. El ID de la organización se muestra junto al nombre de la organización.
CLI de gcloud
Puedes obtener el ID de una Google Cloud organización con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Inventario de Recursos de Cloud que tiene permisos para gestionar tu tema de Pub/Sub. Consulta más información sobre cómo definir el proyecto de facturación.
Consulta la referencia de REST para ver todas las opciones.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para eliminar un feed específico.
curl (Linux, macOS o Cloud Shell)
curl -X DELETE \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/projects/000000000000/feeds/my-feed
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method DELETE ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/projects/000000000000/feeds/my-feed" | Select-Object -Expand Content
Respuesta de ejemplo
{}
Go
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Inventario de Recursos de Cloud, consulta Bibliotecas de cliente de Inventario de Recursos de Cloud.
Para autenticarte en Inventario de Recursos de Cloud, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Condiciones de los feeds
Para ver solo determinados tipos de cambios de un recurso concreto, puede añadir una condición a su feed. Las condiciones se escriben en lenguaje de expresión común (CEL).
La compatibilidad con las condiciones es limitada. En algunos casos, crear o actualizar feeds con condiciones puede provocar un retraso.
Limitaciones
Las expresiones de condición tienen un límite de 3000 caracteres.
La mayoría de los nombres de las variables de las expresiones de condición se representan en minúsculas con guiones bajos entre cada palabra. Por ejemplo,
example_variable
.La excepción son los nombres de las variables de los subcampos de
data
en el objeto Resource. No tienen separadores de palabras y la primera letra de cada palabra después de la primera se escribe en mayúscula. Por ejemplo,exampleVariable
.Algunas validaciones de expresiones de condición se realizan durante la creación o la actualización del feed. Sin embargo, estas validaciones no son exhaustivas, sobre todo en el caso de las condiciones definidas en el campo
temporal_asset.asset.resource.data
, que tiene un tipo dinámico. Siempre que sea posible, filtre su feed usando los parámetros adecuados de la CLI de gcloud o de la API REST.Las notificaciones no se envían si se producen errores durante el tiempo de evaluación, pero los errores se registran.
En
temporal_asset.asset.resource.data
, los tipos dinámicos y las condiciones especificadas en campos que no están presentes activan errores de tiempo de ejecución y no se publican notificaciones. Por ejemplo, en la condicióntemporal_asset.asset.resource.data.name != "my_name"
, si falta el camponame
en una actualización, la evaluación falla y no recibes notificaciones. Si tu condición solo funciona cuando hay determinados campos, añade una comprobación de existencia a la condición para asegurarte de que se evalúa correctamente.Los tipos de enumeración estáticos se pueden representar como nombres de ruta completos o como números enteros sin formato. Por ejemplo, las siguientes expresiones son válidas para
prior_asset_state
:temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST
y
temporal_asset.prior_asset_state == 3
Los tipos de enumeración dinámicos de
temporal_asset.asset.resource.data
se representan como cadenas sin formato. Por ejemplo, la siguiente expresión es válida para el tipo de recursocloudresourcemanager.googleapis.com/Project
:temporal_asset.asset.resource.data.lifecycleState == "ACTIVE"
Crear una expresión de condición con CEL
En una condición de feed, se usa el lenguaje de expresión común (CEL) para tomar decisiones booleanas basadas en datos de atributos. Una expresión condicional
consta de una o varias instrucciones unidas mediante operadores lógicos. Cada instrucción expresa una regla de control basada en atributos que se aplica al TemporalAsset
para determinar si se envía una notificación.
Las siguientes funciones de CEL son las más importantes para las condiciones de los feeds:
Variables: las condiciones usan variables para expresar un atributo determinado, como
temporal_asset.deleted
(Boolean
) otemporal_asset.asset.name
(String
). Estas variables se rellenan con valores basados en el contexto en tiempo de ejecución.Operadores: cada tipo de datos, como
String
, admite un conjunto de operadores que se pueden usar para crear una expresión lógica. Lo más habitual es que los operadores se usen para comparar el valor contenido en una variable con un valor literal, comotemporal_asset.asset.name == "//cloudresourcemanager.googleapis.com/projects/12345"
. En este ejemplo, si el valor de entrada detemporal_asset.asset.name
es//cloudresourcemanager.googleapis.com/projects/12345
, la expresión se evalúa comotrue
.Funciones: una función es un operador compuesto para tipos de datos que admiten operaciones más complejas. En las expresiones de condición, hay funciones predefinidas que se pueden usar junto con un tipo de datos concreto. Por ejemplo,
temporal_asset.asset.name.contains("keyword")
usa una función llamadacontains
para comprobar si el valor detemporal_asset.asset.name
contiene"keyword"
. Si es así, se evalúa comotrue
.Operadores lógicos: las condiciones admiten operadores lógicos que se pueden usar para crear expresiones lógicas complejas a partir de instrucciones de expresiones básicas:
&&
(Y) y||
(O). Estos operadores lógicos permiten usar varias variables de entrada en una expresión condicional. Por ejemplo:temporal_asset.deleted && temporal_asset.window.start_time.getFullYear() > 2020
combina dos instrucciones básicas y requiere que se cumplan ambas para producir un resultado de evaluacióntrue
.
Para obtener más información sobre las funciones de CEL, consulta la definición del lenguaje.
Usar variables de condición
Las variables de condición te permiten crear condiciones en diferentes atributos. Las variables de condición admitidas son las siguientes:
- temporal_asset el cambio de recurso más reciente en formato TemporalAsset. Si la condición se evalúa como verdadera, se envía el
TemporalAsset
al destino configurado.
Ejemplos de expresiones de condición
La siguiente expresión de condición envía notificaciones sobre eventos de creación:
temporal_asset.deleted == false &&
temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST
La siguiente expresión de condición envía notificaciones de los recursos que se encuentran en las carpetas 12345
y 23456
:
"folders/12345" in temporal_asset.asset.ancestors ||
"folders/23456" in temporal_asset.asset.ancestors
La siguiente expresión de condición envía notificaciones cuando se añaden nuevas reglas permitidas a los cortafuegos, siempre que el tipo de recurso ya se haya definido como compute.googleapis.com/Firewall
en el feed:
size(temporal_asset.asset.resource.data.allowed) >
size(temporal_asset.prior_asset.resource.data.allowed)
La siguiente expresión de condición envía notificaciones de instancias de VM con el tipo de máquina n1-standard-1
, suponiendo que el tipo de recurso ya se ha definido como compute.googleapis.com/Instance
en el feed:
temporal_asset.asset.resource.data.machineType.endsWith('/machineTypes/n1-standard-1')
La siguiente expresión de condición envía notificaciones de los segmentos de almacenamiento que tengan políticas de gestión de identidades y accesos de allUsers
, siempre que el tipo de recurso sea storage.googleapis.com/Bucket
y el tipo de contenido sea IAM_POLICY
en el feed:
temporal_asset.asset.iam_policy.bindings.exists(b, b.members.exists(m, m == "allUsers"))
La siguiente expresión de condición envía una notificación cuando se elimina un contenedor de almacenamiento con la clave test
en su etiqueta:
temporal_asset.deleted == true && temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.PRESENT && "test" in temporal_asset.prior_asset.resource.data.labels
Solución de problemas
Si no recibes notificaciones sobre las actualizaciones de recursos o de políticas de gestión de identidades y accesos, sigue estos pasos para solucionar el problema:
Asegúrate de que los metadatos de tus recursos han cambiado. La feed en tiempo real solo envía actualizaciones cuando cambian los metadatos de los tipos de recursos admitidos. Las operaciones como la subida de un archivo nuevo a tu segmento de Cloud Storage no activan un cambio de metadatos.
Asegúrate de que tus recursos coincidan con uno de los nombres o tipos de recursos que hayas especificado en el feed.
En el caso de las eliminaciones de proyectos, ten en cuenta que, cuando cierras un proyecto, tienes 30 días para deshacer la operación. Por este motivo, el campo
deleted
de los metadatos del recurso no se define hasta que el proyecto se elimina de forma permanente. Para monitorizar los proyectos cuya eliminación está pendiente, puedes definir una condición en el campolifecycleState
del proyecto. Por ejemplo:temporal_asset.asset.resource.data.lifecycleState == "DELETE_REQUESTED"
.Consulta los registros para ver si hay errores al publicar actualizaciones en tu tema.
Cloud Logging
Cuando los feeds en tiempo real no pueden enviar recursos o actualizaciones de políticas de gestión de identidades y accesos a través de Pub/Sub, el inventario de recursos de Cloud registra el estado y el mensaje de error en Logging. El registro está habilitado de forma predeterminada y pertenece a Google Cloud Observability. Consulta los precios de Google Cloud Observability.
Ver registros de feeds en tiempo real
El registro de feed en tiempo real se indexa por un tema de Pub/Sub. Para ver todos los registros:
Ve a la página Explorador de registros de la consola de Google Cloud .
Haz clic en la lista Recurso, que está cerca del cuadro Buscar en todos los campos.
Busca
Cloud Pub/Sub Topic
y, a continuación, haz clic en el tipo de recurso Tema de Cloud Pub/Sub.Haga clic en el ID del tema que quiera ver.
Haz clic en Aplicar.
La codificación UTF-8 es obligatoria para los campos de registro. Los caracteres que no son caracteres UTF-8 se sustituyen por signos de interrogación.
Información registrada
Las entradas de registro de feeds en tiempo real contienen los siguientes tipos de información:
Información general que se muestra en la mayoría de los registros, como la gravedad, el ID del proyecto, el número del proyecto o la marca de tiempo. Google Cloud
Campos de registro de feeds en tiempo real de
jsonPayload
, que contiene el nombre del recurso, la configuración de salida del feed y el estado del error al publicar actualizaciones de recursos o de políticas de gestión de identidades y accesos.
En la siguiente tabla se muestra el tipo de información que contiene cada campo.
Campo | Tipo y descripción |
---|---|
name |
Nombre completo del feed. El formato es uno de los siguientes:
|
asset_name |
Nombre completo del recurso del que quieres recibir novedades. Por ejemplo:
Para obtener más información, consulta Nombres de recursos . |
condition |
Condición del feed que determina si se debe publicar una actualización de un recurso. |
error_status |
Estado cuando no se pueden publicar las actualizaciones de recursos en un feed. |
feed_output_config |
Configuración de la salida del feed que define dónde se publican las actualizaciones de los recursos. |