Ver el historial de recursos

En esta página, se explica cómo ver el historial de recursos. La API de Cloud Asset te permite ver el historial de cambios de eventos de varios recursos cuyo período se superpone con un período determinado en las últimas cinco semanas. El historial de cambios de eventos te muestra todos los eventos de creación, eliminación y actualización de los recursos especificados a lo largo del tiempo.

Antes de comenzar

gcloud

  1. Debes habilitar la API de Cloud Asset antes de poder usar la herramienta de gcloud para acceder a Cloud Asset Inventory. Ten en cuenta que solo es necesario habilitar la API en el proyecto en el que ejecutarás los comandos de la API de Cloud Asset.
    Habilita la API de Cloud Asset Inventory
  2. Instala el SDK de Cloud en tu cliente local.

api

  1. Instala oauth2l en tu máquina local para interactuar con el sistema Google OAuth.
  2. Confirma que tienes acceso al comando curl de Unix.
  3. Asegúrate de que tu cuenta tenga una de las siguientes funciones en tu proyecto, organización o carpeta:

    • Visualizador de Cloud Asset (roles/cloudasset.viewer)
    • Función básica de propietario (roles/owner)

Configura una cuenta

Según el parámetro contentType de la solicitud a la API, para llamar a la API de Cloud Asset, se debe otorgar a tu cuenta una función que contenga los siguientes permisos en el recurso raíz/superior (proyecto o organización) que contiene los recursos de los que deseas obtener el historial:

  • cloudasset.assets.exportResource
  • cloudasset.assets.exportIamPolicy
  • cloudasset.assets.exportOrgPolicy
  • cloudasset.assets.exportAccessPolicy

Si a tu cuenta se le otorgó la función de visualizador de recursos de Cloud (roles/cloudasset.viewer), la función de propietario de Cloud Asset (roles/cloudasset.owner) o la función básica de propietario (roles/owner) en recurso raíz, ya cuenta con los permisos necesarios para llamar a la API de Cloud Asset. De lo contrario, sigue los pasos de la página Configura permisos.

Obtén el historial de recursos

Para obtener el historial de creación, eliminación y actualización de los recursos especificados en un proyecto cuyo período se superpone con un período determinado mediante la API de Cloud Asset, sigue el proceso que se muestra a continuación.

gcloud

Para comenzar a usar la herramienta de gcloud, revisa la documentación del SDK de Cloud. Puedes obtener ayuda para la herramienta, los recursos y los comandos mediante la marca --help:

gcloud asset --help

El texto de ayuda que se muestra con la marca --help también está disponible en la referencia del SDK de Cloud para gcloud asset.

El gcloud asset get-history que se muestra en esta sección obtiene el historial de un proyecto. Para obtener el historial de una organización, usa la marca --organization=ORGANIZATION_ID en tu comando.

En el siguiente ejemplo, se obtiene el historial de recursos dentro de un proyecto.

Ten en cuenta que la start-time debe ser posterior a la hora actual menos 35 días.

  1. Asegúrate de que puedas llamar a la API de Cloud Asset mediante la sección Configura una cuenta.
  2. Determina el nombre completo del recurso del elemento cuyo historial deseas buscar. Consulta la lista de nombres con formato de API de Cloud Asset aquí. Esta es la variable asset-names en los siguientes ejemplos.
  3. Determina una hora de inicio y de finalización para tu período con el formato RFC 3339 UTC. Solo se requiere una hora de inicio. Consulta TimeWindow para obtener más información.
  4. Determine en qué nivel desea obtener el historial de recursos. Los siguientes comandos de ejemplo demuestran cómo obtener el historial de varios tipos de recursos.

Obtén el historial de los recursos especificados en un proyecto, incluidos todos los metadatos de los recursos:

YESTERDAY=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ" -d "yesterday")
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset get-history --project='PROJECT_ID' \
  --asset-names='//compute.googleapis.com/projects/test-project/zo\
nes/us-central1-f/instances/instance1' \
  --start-time=$YESTERDAY \
  --end-time=$NOW --content-type='resource'

Obtén el historial de todas las políticas de IAM de los recursos especificados en un proyecto:

YESTERDAY=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ" -d "yesterday")
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset get-history --project='PROJECT_ID' \
  --asset-names='//cloudresourcemanager.googleapis.com/projects/10\
179387634' --start-time=$YESTERDAY \
  --end-time=$NOW \
  --content-type='iam-policy'
 

api

Los comandos que se muestran en esta sección obtienen el historial de un proyecto. Para obtener el historial de una organización, usa el método https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_NUMBER:batchGetAssetsHistory de REST en el comando gcurl.

  1. Asegúrate de que puedas llamar a la API de Cloud Asset mediante la sección Configura una cuenta.
  2. Determina el nombre completo del recurso del elemento cuyo historial deseas buscar. Consulta la lista de nombres con formato de API de Cloud Asset aquí. En el siguiente ejemplo, se usa //compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall.
  3. Determina una hora de inicio y de finalización para tu período con el formato RFC 3339 UTC. Solo se requiere una hora de inicio. Consulta TimeWindow para obtener más información.
  4. Determine en qué nivel desea obtener el historial de recursos. Los siguientes comandos de ejemplo demuestran cómo obtener el historial de varios tipos de recursos.

Establecer var TOKEN

Para obtener el token de acceso, ejecuta el siguiente comando con el archivo ~/credentials.json.

oauth2l header --json ~/credentials.json cloud-platform

Deberías ver un resultado similar al siguiente, con y29.xxxxxx como el token de acceso:

Authorization: Bearer y29.xxxxxxx

Configura la variable TOKEN en el token de acceso:

TOKEN=y29.xxxxxxx

Obtener el historial de los recursos especificados en un proyecto, incluidos todos los metadatos de los recursos

YESTERDAY=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ" -d "yesterday")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
     -d '{"contentType":"RESOURCE", \
          "assetNames": \
            "//compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall", \
          "readTimeWindow": {"startTime": "'$YESTERDAY'"}}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:batchGetAssetsHistory

Obtener el historial de los recursos especificados en un proyecto, sin metadatos de recursos

YESTERDAY=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ" -d "yesterday")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
     -d '{"assetNames": \
            "//compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall", \
          "readTimeWindow": {"startTime": "'$YESTERDAY'"}}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:batchGetAssetsHistory

Obtén el historial de todas las políticas de IAM de los recursos especificados en un proyecto:

YESTERDAY=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ" -d "yesterday")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
     -d '{"contentType":"IAM_POLICY", \
          "assetNames": \
            "//compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall", \
          "readTimeWindow": {"startTime": "'$YESTERDAY'"}}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:batchGetAssetsHistory