Comienza a usar Cloud Asset Inventory

En esta guía de inicio rápido, se muestra cómo exportar los metadatos de los elementos en un momento determinado con Cloud Asset Inventory y los comandos gcloud asset del SDK de Cloud.

Antes de comenzar

Antes de que puedas comenzar a trabajar con Cloud Asset Inventory, debes habilitar la API de Cloud Asset Inventory, el SDK de Cloud y asignar permisos. El SDK de Cloud proporciona la herramienta de línea de comandos de gcloud para interactuar con Cloud Asset Inventory y otros servicios de Google Cloud. Obtén más información sobre la herramienta de gcloud.

Habilita la API de Cloud Asset Inventory y el SDK de Cloud

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Habilita la API necesaria.

    Habilita la API

  4. Instala e inicializa el SDK de Cloud.
  5. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Habilita la API necesaria.

    Habilita la API

  7. Instala e inicializa el SDK de Cloud.

Configurar permisos

Para llamar a la API de Cloud Asset Inventory, primero debes configurar los permisos.

Buscar recursos

  1. Para buscar metadatos de recursos, ejecuta el siguiente comando de gcloud asset search-all-resources.

     gcloud asset search-all-resources \
        --scope SCOPE \
        --query QUERY \
        --asset-types ASSET_TYPES,… \
        --order-by ORDER_BY \
        --read-mask READ_MASK
    

    Todas las siguientes marcas son opcionales:

    • (Opcional) SCOPE: Un permiso puede ser un proyecto, una carpeta o una organización. La búsqueda se limita a los recursos de Google Cloud dentro de este permiso. El emisor debe tener el permiso cloudasset.assets.searchAllResources en el alcance deseado. Si no se especifica, se usará la propiedad del proyecto configurado. Para encontrar el proyecto configurado, ejecuta gcloud config get-value project. Para cambiar la configuración, ejecuta gcloud config set project PROJECT_ID.

      Los valores permitidos son los siguientes:

      • projects/PROJECT_ID (p. ej., "projects/foo-bar")
      • projects/PROJECT_NUMBER (p. ej., "projects/12345678")
      • folders/FOLDER_NUMBER (p. ej., "folders/1234567")
      • organizations/ORGANIZATION_NUMBER (p. ej., "organizations/123456")
    • QUERY: la declaración de la consulta (opcional). Consulta cómo construir una consulta para obtener más información. Si no se especifica o está vacía, buscará todos los recursos dentro del scope especificado.

      Ejemplos:

      • name:Important para encontrar los recursos de Google Cloud cuyo nombre contenga "Important" como palabra.
      • name=Important para encontrar el recurso de Google Cloud cuyo nombre es exactamente “Important”.
      • displayName:Impor* para encontrar los recursos de Google Cloud cuyo nombre visible contiene "Impor" como prefijo.
      • location:us-west* para encontrar recursos de Google Cloud cuya ubicación contenga “us” y “west” como prefijos.
      • labels:prod para encontrar recursos de Google Cloud cuyas etiquetas contengan “prod” como clave o valor.
      • labels.env:prod para encontrar los recursos de Google Cloud que tengan la etiqueta “env” y su valor es “prod”.
      • labels.env:* para encontrar recursos de Google Cloud que tengan la etiqueta “env”.
      • kmsKey:key para encontrar los recursos de Google Cloud encriptados con una clave de encriptación administrada por el cliente cuyo nombre contenga “key” como palabra.
      • state:ACTIVE para encontrar los recursos de Google Cloud cuyo estado contenga "ACTIVE" como palabra.
      • NOT state:ACTIVE para encontrar los recursos de Google Cloud cuyo estado no contenga "ACTIVE" como palabra.
      • createTime<1609459200, createTime<2021-01-01 o createTime<"2021-01-01T00:00:00" para encontrar los recursos de Google Cloud que se crearon antes de “2021-01-01 00:00:00 UTC”. 1609459200 es la marca de tiempo de época de “2021-01-01 00:00:00 UTC” en segundos.
      • updateTime>1609459200, updateTime>2021-01-01 o updateTime>"2021-01-01T00:00:00" para encontrar recursos de Google Cloud que se actualizaron después de “2021-01-01 00:00:00 UTC”. 1609459200 es la marca de tiempo de época de “2021-01-01 00:00:00 UTC” en segundos.
      • project:12345 para encontrar recursos de Google Cloud que pertenezcan a un proyecto de Google Cloud con el número 12345. No se admite el ID del proyecto.
      • folders:(123 or 456) para encontrar recursos de Google Cloud que descendientes de la carpeta de Google Cloud con números 123 o 456.
      • organization:123 para encontrar recursos de Google Cloud que descendienten de la organización de Google Cloud con el número 123.
      • parentFullResourceName:ImportantName para encontrar recursos de Google Cloud cuyo nombre superior contenga ImportantName.
      • parentAssetType:Project para encontrar recursos de Google Cloud cuyo tipo de recurso principal contenga Project.
      • Important para encontrar recursos de Google Cloud que contengan "Important" como palabra en cualquiera de los campos de búsqueda.
      • Impor* para encontrar los recursos de Google Cloud que contienen "Impor" como prefijo en cualquiera de los campos de búsqueda.
      • Important location:(us-west1 OR global) para encontrar los recursos de Google Cloud que contienen "Important" como palabra en cualquiera de los campos de búsqueda y también se encuentran en la región "us-west1" o en la ubicación "global".
    • (Opcional) ASSET_TYPES: Una lista de tipos de elementos que busca esta solicitud. Si está vacío, buscará todos los tipos de recursos que se pueden buscar. También se admiten expresiones regulares. Por ejemplo:

      • Recursos de instantáneas "compute.googleapis.com.*" cuyo tipo de recurso comienza con "compute.googleapis.com".
      • Recursos de instantáneas ".*Instance" cuyo tipo de recurso termina con "Instance".
      • Recursos de instantáneas ".*Instance.*" cuyo tipo de recurso contiene "Instance".

      Consulta RE2 para ver toda la sintaxis de expresión regular admitida. Si la expresión regular no coincide con ningún tipo de elemento compatible, se mostrará un error INVALID_ARGUMENT.

    • ORDER_BY (opcional): Es una lista de campos separados por comas que especifican el orden de clasificación de los resultados. El orden predeterminado es ascendente. Agrega " DESC" después del nombre del campo para indicar el orden descendente. Se ignoran los caracteres de espacio redundantes. Ejemplo: "location DESC, name". Solo se pueden ordenar los campos primitivos singulares en la respuesta:

      • name
      • assetType
      • project
      • displayName
      • description
      • location
      • kmsKey
      • createTime
      • updateTime
      • state
      • parentFullResourceName
      • parentAssetType

      Todos los demás campos, como los campos repetidos (p. ej., networkTags, campos de mapa (p. ej., labels) y campos struct (p. ej., additionalAttributes) no se admiten.

    • READ_MASK (opcional): Es una lista de campos separados por comas que especifican qué campos se deben mostrar en los resultados. Si no se especifica, se mostrarán todos los campos excepto versionedResources. Si solo se especifica "*", se mostrarán todos los campos. Ejemplos: "name,location", "name,versionedResources", "*".

    Para obtener más información sobre cómo buscar recursos, consulta Busca recursos.

  2. Para buscar políticas de IAM, ejecuta el siguiente comando de gcloud asset search-all-iam-policies.

     gcloud asset search-all-iam-policies \
        --scope SCOPE \
        --query QUERY \
        --asset-types ASSET_TYPES,… \
        --order-by ORDER_BY
    

    Aquí:

    • (Opcional) SCOPE: Un permiso puede ser un proyecto, una carpeta o una organización. La búsqueda se limita a las políticas de administración de identidades y accesos (IAM) dentro de este permiso. El emisor debe tener el permiso cloudasset.assets.searchAllIamPolicies en el alcance deseado. Si no se especifica, se usará la propiedad del proyecto configurado. Para encontrar el proyecto configurado, ejecuta gcloud config get-value project. Para cambiar la configuración, ejecuta gcloud config set project PROJECT_ID.

      Los valores permitidos son los siguientes:

      • projects/PROJECT_ID (p. ej., "projects/foo-bar")
      • projects/PROJECT_NUMBER (p. ej., "projects/12345678")
      • folders/FOLDER_NUMBER (p. ej., "folders/1234567")
      • organizations/ORGANIZATION_NUMBER (p. ej., "organizations/123456")
    • QUERY: la declaración de la consulta (opcional). Consulta cómo construir una consulta para obtener más información. Si no se especifica o está vacía, buscará todas las políticas de IAM dentro del scope especificado. Ten en cuenta que la string de consulta se compara con cada vinculación de política de IAM, incluidos sus principales, funciones y condiciones de IAM. Las políticas de IAM que se muestran solo contendrán las vinculaciones que coinciden con tu consulta. Para obtener más información sobre la estructura de las políticas de IAM, consulta la documentación sobre las políticas de IAM.

      Ejemplos:

      • policy:amy@gmail.com para buscar vinculaciones de políticas de IAM que especifiquen el usuario “amy@gmail.com”.
      • policy:roles/compute.admin para encontrar vinculaciones de políticas de IAM que especifiquen la función de administrador de Compute.
      • policy:comp* para encontrar vinculaciones de políticas de IAM que contengan “comp” como un prefijo de cualquier palabra de la vinculación.
      • policy.role.permissions:storage.buckets.update para encontrar vinculaciones de políticas de IAM que especifiquen una función que contenga el permiso “storage.buckets.update”. Ten en cuenta que, si los emisores no tienen acceso iam.roles.get a los permisos incluidos en una función, las vinculaciones de política que especifican esta función se quitarán de los resultados de la búsqueda.
      • policy.role.permissions:upd* para encontrar vinculaciones de políticas de IAM que especifiquen una función que contenga “upd” como un prefijo de cualquier palabra en el permiso de la función. Ten en cuenta que, si los emisores no tienen acceso iam.roles.get a los permisos incluidos en una función, las vinculaciones de política que especifican esta función se quitarán de los resultados de la búsqueda.
      • resource:organizations/123456 para encontrar vinculaciones de políticas de IAM que se establecen en "organizations/123456".
      • resource=//cloudresourcemanager.googleapis.com/projects/myproject para encontrar vinculaciones de políticas de IAM que se establecen en el proyecto llamado “myproject”.
      • Important para encontrar vinculaciones de políticas de IAM que contengan la palabra “Important” en cualquiera de los campos de búsqueda (excepto los permisos incluidos).
      • resource:(instance1 OR instance2) policy:amy para encontrar vinculaciones de políticas de IAM que se establecen en los recursos “instance1” o “instance2” y también especifican el usuario “amy”.
      • roles:roles/compute.admin para encontrar vinculaciones de políticas de IAM que especifiquen la función de administrador de Compute.
      • memberTypes:user para encontrar vinculaciones de políticas de IAM que contengan el tipo principal “user”.
    • ASSET_TYPES (opcional): Es una lista de tipos de recursos a los que se adjuntan las políticas de administración de identidades y accesos. Si está vacío, buscará las políticas de administración de identidades y accesos que se adjuntan a todos los tipos de recursos que se pueden buscar. También se admiten expresiones regulares. Por ejemplo:

      • Las políticas de IAM de instantáneas "compute.googleapis.com.*" vinculadas al tipo de recurso comienzan con "compute.googleapis.com".
      • Las políticas de IAM de instantáneas ".*Instance" vinculadas al tipo de recurso terminan con "Instance".
      • Las políticas de IAM de instantáneas ".*Instance.*" vinculadas al tipo de recurso contienen "Instance".

      Consulta RE2 para ver toda la sintaxis de expresión regular admitida. Si la expresión regular no coincide con ningún tipo de elemento compatible, se mostrará un error INVALID_ARGUMENT.

    • ORDER_BY (opcional): Es una lista de campos separados por comas que especifican el orden de clasificación de los resultados. El orden predeterminado es ascendente. Agrega " DESC" después del nombre del campo para indicar el orden descendente. Se ignoran los caracteres de espacio redundantes. Ejemplo: "assetType DESC, resource". Solo se pueden ordenar los campos primitivos singulares en la respuesta:

      • resource
      • assetType
      • project

      Todos los demás campos, como los campos repetidos (p. ej., folders) y campos no primitivos (p. ej., policy) no se admiten.

    Para obtener más información sobre cómo buscar políticas de IAM, consulta Busca políticas de IAM.

Exportar una instantánea de recursos a Cloud Storage

Para exportar todos los metadatos del elemento en una marca de tiempo determinada a un archivo de Cloud Storage, completa los siguientes pasos.

  1. Crea un depósito nuevo si tu proyecto no tiene un depósito de Cloud Storage existente que esté disponible para almacenar datos exportados.

  2. Para exportar metadatos de elementos dentro de tu proyecto, ejecuta el siguiente comando. Este comando almacena la instantánea exportada en un depósito de Cloud Storage en gs://YOUR_BUCKET/NEW_FILE.

    gcloud asset export \
       --content-type CONTENT_TYPE \
       --project PROJECT_ID \
       --snapshot-time SNAPSHOT_TIME \
       --output-path "gs://YOUR_BUCKET/NEW_FILE"
    

    Aquí:

    • CONTENT_TYPE: El tipo de contenido del recurso que se exportará (opcional). Si no se especifica ningún tipo de contenido, solo se mostrará el nombre del recurso. Los tipos de ejemplo incluyen resource, que exporta metadatos de recursos; iam-policy, que exporta la política de IAM para cada activo dependiente del recurso especificado, y así sucesivamente. Otras opciones incluyen org-policy, access-policy y os-inventory. Consulta la sección de marcas opcionales gcloud asset export para obtener más información.
    • PROJECT_ID: El ID del proyecto a partir del cual se exportan los metadatos. Este proyecto puede ser el proyecto en el que está habilitada la API de Cloud Asset Inventory y en el que ejecutas la exportación, o bien un proyecto diferente.
    • SNAPSHOT_TIME (opcional): El valor debe ser la hora actual o una hora pasada a partir de la que deseas tomar una instantánea de tus elementos. De forma predeterminada, se toma una instantánea a la hora actual. Consulta gcloud topic datetime para obtener más información sobre los formatos de hora, por ejemplo: --snapshot-time 2021-05-25T10:49:41Z Nota: Si especificas una hora de instantánea, no puede exceder los 35 días en el pasado.
  3. Para exportar los elementos de una organización o carpeta, puedes usar una de las siguientes marcas en lugar de la marca --project:

    • --organization=ORGANIZATION_ID
    • --folder=FOLDER_ID
  4. (Opcional) Para verificar el estado de la exportación, ejecuta el siguiente comando. Se muestra en la herramienta de gcloud después de ejecutar el comando de exportación.

    gcloud asset operations describe projects/PROJECT_ID/operations/ExportAssets/CONTENT_TYPE/OPERATION_NUMBER
    

Visualiza la instantánea de un recurso

Para ver una instantánea de elementos después de exportarla a Cloud Storage, completa los siguientes pasos.

  1. Ir a la página Navegador de Cloud Storage
    Abrir la página Navegador de Cloud Storage

  2. Abre el archivo en el que exportaste los metadatos.

El archivo de exportación enumera los activos y sus nombres de recursos.

¿Qué sigue?