Exporta metadatos de los recursos con Cloud Asset Inventory

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

Antes de comenzar

Antes de comenzar a trabajar con Cloud Asset Inventory, debes habilitar la API de Cloud Asset Inventory, Google Cloud CLI y asignar permisos. Google Cloud CLI interactúa con Cloud Asset Inventory y otros servicios de Google Cloud. Obtén más información sobre la CLI de gcloud.

Habilita la API de Cloud Asset Inventory y Google Cloud CLI

  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 la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Habilita la API necesaria.

    Habilita la API

  4. Instala Google Cloud CLI.
  5. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  6. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  7. Habilita la API necesaria.

    Habilita la API

  8. Instala Google Cloud CLI.
  9. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init

Configurar permisos

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

Buscar recursos

Para buscar metadatos de recursos, ejecuta el siguiente comando.

gcloud asset search-all-resources \
    --scope=SCOPE \
    --query="QUERY" \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --order-by="ORDER_BY" \
    --read-mask="READ_MASK"

Ingresa los siguientes valores:

  • SCOPE: Opcional Un alcance puede ser un proyecto, una carpeta o una organización. La búsqueda se limita a los recursos de Google Cloud en este alcance. El emisor debe tener el permiso cloudasset.assets.searchAllResources en el permiso deseado. Si no se especifica, se usa la propiedad del proyecto configurada.

    Los valores permitidos son los siguientes:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Cómo encontrar un número de proyecto de Google Cloud

      Consola

      Para encontrar un número de proyecto de Google Cloud, completa los siguientes pasos:

      1. Ve a la página Panel en la consola de Google Cloud.

        Ir al panel

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Elige tu organización en el cuadro Seleccionar una opción y, luego, busca el nombre del proyecto.
      4. Haz clic en el nombre del proyecto para cambiarlo. El número de proyecto se muestra en la tarjeta Información del proyecto.

      gcloud CLI

      Puedes recuperar el número de proyecto de Google Cloud con el siguiente comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Cómo encontrar un ID de carpeta de Google Cloud

      Consola

      Para encontrar un ID de carpeta de Google Cloud, completa los siguientes pasos:

      1. Ve a la consola de Google Cloud.

        Ir a la consola de Google Cloud

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
      4. Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

      gcloud CLI

      Puedes recuperar un ID de carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente comando:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME puede ser una coincidencia completa o parcial de strings. Quita la opción --format para ver más información sobre las carpetas encontradas.

      Para obtener el ID de una carpeta dentro de otra, enumera las subcarpetas:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Cómo encontrar un ID de organización de Google Cloud

      Consola

      Para encontrar un ID de organización de Google Cloud, completa los siguientes pasos:

      1. Ve a la consola de Google Cloud.

        Ir a la consola de Google Cloud

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
      4. Haga clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

      gcloud CLI

      Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • QUERY: Opcional Es la instrucción de la consulta. Consulta Sintaxis de consulta para obtener más información. Si no se especifica o está vacío, Cloud Asset Inventory busca en todos los recursos del scope especificado.

    Ejemplos:

    • name:Important para encontrar recursos de Google Cloud cuyos nombres contengan Important como una palabra

    • name=Important para encontrar el recurso de Google Cloud cuyo nombre es exactamente Important.

    • displayName:Impor* para encontrar recursos de Google Cloud cuyo nombre visible contenga 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 recursos de Google Cloud que tengan una etiqueta env y su valor sea “prod”.

    • labels.env:* para encontrar recursos de Google Cloud que tengan una etiqueta env.

    • kmsKeys:key para encontrar recursos de Google Cloud encriptados con claves de encriptación administradas por el cliente cuyo nombre contenga key como palabra

    • sccSecurityMarks.key=value para encontrar recursos de Google Cloud que están conectados con un par de marcas de seguridad cuya clave es key y su valor es value.

    • sccSecurityMarks.key:* para encontrar recursos de Google Cloud conectados con un par de marcas de seguridad cuya clave es key.

    • state:ACTIVE para encontrar recursos de Google Cloud cuyo estado contenga ACTIVE como una palabra

    • NOT state:ACTIVE para encontrar recursos de Google Cloud cuyo estado no contenga ACTIVE como una palabra.

    • createTime<1609459200, createTime<2021-01-01 o createTime<"2021-01-01T00:00:00" para encontrar recursos de Google Cloud que se crearon antes del 1 de enero de 2021 a las 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 del 1 de enero de 2021 a las 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 pertenecen a un proyecto de Google Cloud con el número 12,345. No se admite el ID del proyecto.

    • folders:(123 or 456) para encontrar recursos de Google Cloud que son descendientes de una carpeta de Google Cloud con números 123 o 456.

    • organization:123 para encontrar recursos de Google Cloud que sean descendientes 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 elemento superior 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 recursos de Google Cloud que contengan Impor como prefijo en cualquiera de los campos de búsqueda.

    • Important location:(us-west1 OR global) para encontrar recursos de Google Cloud que contengan la palabra “Importante” en cualquiera de los campos de búsqueda y que también se encuentren en la región us-west1 o la ubicación global.

  • ASSET_TYPE: Opcional Una lista separada por comas de los tipos de elementos que se pueden buscar. Se admiten las expresiones regulares compatibles con RE2. Si la expresión regular no coincide con ningún tipo de elemento compatible, se mostrará un error INVALID_ARGUMENT.

  • ORDER_BY: Opcional Una lista de campos separados por comas que especifica 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. Los caracteres de espacio redundantes se ignoran. Ejemplo: "location DESC, name". Solo se puede ordenar los campos primitivos singulares de la respuesta:

    • name

    • assetType

    • project

    • displayName

    • description

    • location

    • createTime

    • updateTime

    • state

    • parentFullResourceName

    • parentAssetType

    No se admiten los demás campos, como los campos repetidos (por ejemplo, networkTags y kmsKeys), los campos de asignación (por ejemplo, labels) y los campos de estructura (por ejemplo, additionalAttributes).

  • READ_MASK: Opcional Una lista de campos separados por comas que especifica qué campos se mostrarán en los resultados. Si no se especifica, se muestran todos los campos, excepto versionedResources. Si solo se especifica "*", se muestran todos los campos. Ejemplos: "name,location", "name,versionedResources" y "*".

Si quieres obtener más información para buscar recursos, consulta Busca recursos.

Buscar políticas de IAM

Para buscar políticas de Identity and Access Management (IAM), ejecuta el siguiente comando.

gcloud asset search-all-iam-policies \
  --scope=SCOPE \
  --query="QUERY" \
  --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
  --order-by="ORDER_BY"

Ingresa los siguientes valores:

  • SCOPE: Opcional Un alcance puede ser un proyecto, una carpeta o una organización. La búsqueda se limita a los recursos de IAM en este alcance. El emisor debe tener el permiso cloudasset.assets.searchAllIamPolicies en el alcance deseado. Si no se especifica, se usa la propiedad del proyecto configurada.

    Los valores permitidos son los siguientes:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Cómo encontrar un número de proyecto de Google Cloud

      Consola

      Para encontrar un número de proyecto de Google Cloud, completa los siguientes pasos:

      1. Ve a la página Panel en la consola de Google Cloud.

        Ir al panel

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Elige tu organización en el cuadro Seleccionar una opción y, luego, busca el nombre del proyecto.
      4. Haz clic en el nombre del proyecto para cambiarlo. El número de proyecto se muestra en la tarjeta Información del proyecto.

      gcloud CLI

      Puedes recuperar el número de proyecto de Google Cloud con el siguiente comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Cómo encontrar un ID de carpeta de Google Cloud

      Consola

      Para encontrar un ID de carpeta de Google Cloud, completa los siguientes pasos:

      1. Ve a la consola de Google Cloud.

        Ir a la consola de Google Cloud

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
      4. Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

      gcloud CLI

      Puedes recuperar un ID de carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente comando:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME puede ser una coincidencia completa o parcial de strings. Quita la opción --format para ver más información sobre las carpetas encontradas.

      Para obtener el ID de una carpeta dentro de otra, enumera las subcarpetas:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Cómo encontrar un ID de organización de Google Cloud

      Consola

      Para encontrar un ID de organización de Google Cloud, completa los siguientes pasos:

      1. Ve a la consola de Google Cloud.

        Ir a la consola de Google Cloud

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
      4. Haga clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

      gcloud CLI

      Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • QUERY: Opcional Es la instrucción de la consulta. Consulta Sintaxis de consulta para obtener más información. Si no se especifica o está vacío, Cloud Asset Inventory busca en todas las políticas de IAM en el scope especificado. La cadena de consulta se compara con cada vinculación de política de IAM, incluidas las principales, las funciones y las condiciones de IAM. Las políticas de IAM que se muestran solo contienen las vinculaciones que coinciden con tu consulta. Para obtener más información sobre la estructura de políticas de IAM, consulta Estructura de políticas.

    Ejemplos:

    • policy:amy@gmail.com para encontrar vinculaciones de políticas de IAM que especifican el usuario amy@gmail.com.

    • policy:roles/compute.admin para encontrar vinculaciones de políticas de IAM que especifican la función de administrador de Compute.

    • policy:comp* para encontrar vinculaciones de políticas de IAM que contienen comp como prefijo de cualquier palabra en 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. Si los emisores no tienen acceso iam.roles.get a los permisos incluidos de una función, las vinculaciones de políticas que especifican esta función se descartará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 prefijo de cualquier palabra en el permiso de función. Ten en cuenta que si los emisores no tienen acceso iam.roles.get a los permisos incluidos de una función, las vinculaciones de políticas que especifican esta función se descartarán de los resultados de la búsqueda.

    • resource:organizations/123456 para encontrar vinculaciones de políticas de IAM configuradas en “organizations/123456”.

    • resource=//cloudresourcemanager.googleapis.com/projects/myproject para encontrar vinculaciones de políticas de IAM configuradas en el proyecto llamado myproject.

    • Important para encontrar vinculaciones de políticas de IAM que contengan Important como una palabra 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 que también especifican el usuario amy.

    • roles:roles/compute.admin para encontrar vinculaciones de políticas de IAM que especifican la función de administrador de Compute.

    • memberTypes:user para encontrar vinculaciones de políticas de IAM que contienen el tipo de principal user.

  • ASSET_TYPE: Opcional Una lista separada por comas de los tipos de elementos que se pueden buscar a los que se adjuntan las políticas de IAM. Si está vacío, Cloud Asset Inventory busca las políticas de IAM adjuntas a todos los tipos de recursos que se pueden buscar. Se admiten las expresiones regulares. Si la expresión regular no coincide con ningún tipo de elemento compatible, se mostrará un error INVALID_ARGUMENT.

  • ORDER_BY: Opcional Una lista de campos separados por comas que especifica 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. Los caracteres de espacio redundantes se ignoran. Ejemplo: "location DESC, name". Solo se puede ordenar los campos primitivos singulares de la respuesta:

    • resource

    • assetType

    • project

    No se admiten los demás campos, como los repetidos (por ejemplo, folders) y los que no son primitivos (por ejemplo, policy).

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 de elementos en una marca de tiempo determinada a un archivo en un bucket de Cloud Storage, completa los siguientes pasos.

  1. Crea un bucket nuevo si aún no tienes uno.

  2. Para exportar metadatos de elementos en tu proyecto, ejecuta el siguiente comando. Este comando almacena la instantánea exportada en un archivo en gs://BUCKET_NAME/FILENAME.

    Proyectos

    gcloud asset export \
        --project=PROJECT_ID \
        --billing-project=BILLING_PROJECT_ID \
        --content-type=CONTENT_TYPE \
        --snapshot-time="SNAPSHOT_TIME" \
        --output-path="gs://BUCKET_NAME/FILENAME"
    

    Ingresa los siguientes valores:

    • PROJECT_ID por el ID del proyecto cuyos metadatos deseas exportar.

    • BILLING_PROJECT_ID: Opcional El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Cloud Asset Inventory y que tiene permiso para escribir en tu bucket de Cloud Storage. No es obligatorio si ya cambiaste al proyecto de facturación con gcloud config set project. Obtén más información sobre los proyectos de facturación.

    • CONTENT_TYPE: Opcional El tipo de contenido del elemento que se exportará. Si no se especifica un tipo de contenido, solo se muestra el nombre del elemento. Obtén más información sobre los tipos de contenido.

    • SNAPSHOT_TIME: Opcional El momento en el que quieres tomar una instantánea de tus elementos. El valor debe ser la hora actual o una hora de no más de 35 días de antigüedad. Cuando no se proporciona, se toma una instantánea en la hora actual. Para obtener información sobre los formatos de hora, consulta gcloud topic datetimes.

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage en el que se escribirá.

    • FILENAME: Es el archivo del bucket de Cloud Storage en el que se escribirá.

    Carpetas

    gcloud asset export \
        --folder=FOLDER_ID \
        --billing-project=BILLING_PROJECT_ID \
        --content-type=CONTENT_TYPE \
        --snapshot-time="SNAPSHOT_TIME" \
        --output-path="gs://BUCKET_NAME/FILENAME"
    

    Ingresa los siguientes valores:

    • FOLDER_ID: El ID de la carpeta cuyos metadatos deseas exportar.

      Cómo encontrar un ID de carpeta de Google Cloud

      Consola

      Para encontrar un ID de carpeta de Google Cloud, completa los siguientes pasos:

      1. Ve a la consola de Google Cloud.

        Ir a la consola de Google Cloud

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
      4. Busca el nombre de la carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

      gcloud CLI

      Puedes recuperar un ID de carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente comando:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME puede ser una coincidencia completa o parcial de strings. Quita la opción --format para ver más información sobre las carpetas encontradas.

      Para obtener el ID de una carpeta dentro de otra, enumera las subcarpetas:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • BILLING_PROJECT_ID: Opcional El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Cloud Asset Inventory y que tiene permiso para escribir en tu bucket de Cloud Storage. No es obligatorio si ya cambiaste al proyecto de facturación con gcloud config set project. Obtén más información sobre los proyectos de facturación.

    • CONTENT_TYPE: Opcional El tipo de contenido del elemento que se exportará. Si no se especifica un tipo de contenido, solo se muestra el nombre del elemento. Obtén más información sobre los tipos de contenido.

    • SNAPSHOT_TIME: Opcional El momento en el que quieres tomar una instantánea de tus elementos. El valor debe ser la hora actual o una hora de no más de 35 días de antigüedad. Cuando no se proporciona, se toma una instantánea en la hora actual. Para obtener información sobre los formatos de hora, consulta gcloud topic datetimes.

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage en el que se escribirá.

    • FILENAME: Es el archivo del bucket de Cloud Storage en el que se escribirá.

    Organizaciones

    gcloud asset export \
        --organization=ORGANIZATION_ID \
        --billing-project=BILLING_PROJECT_ID \
        --content-type=CONTENT_TYPE \
        --snapshot-time="SNAPSHOT_TIME" \
        --output-path="gs://BUCKET_NAME/FILENAME"
    

    Ingresa los siguientes valores:

    • ORGANIZATION_ID: El ID de la organización cuyos metadatos deseas exportar.

      Cómo encontrar un ID de organización de Google Cloud

      Consola

      Para encontrar un ID de organización de Google Cloud, completa los siguientes pasos:

      1. Ve a la consola de Google Cloud.

        Ir a la consola de Google Cloud

      2. Haz clic en el cuadro de cambio en la barra de menú.
      3. Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
      4. Haga clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

      gcloud CLI

      Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

    • BILLING_PROJECT_ID: Opcional El ID del proyecto en el que se encuentra el agente de servicio predeterminado de Cloud Asset Inventory y que tiene permiso para escribir en tu bucket de Cloud Storage. No es obligatorio si ya cambiaste al proyecto de facturación con gcloud config set project. Obtén más información sobre los proyectos de facturación.

    • CONTENT_TYPE: Opcional El tipo de contenido del elemento que se exportará. Si no se especifica un tipo de contenido, solo se muestra el nombre del elemento. Obtén más información sobre los tipos de contenido.

    • SNAPSHOT_TIME: Opcional El momento en el que quieres tomar una instantánea de tus elementos. El valor debe ser la hora actual o una hora de no más de 35 días de antigüedad. Cuando no se proporciona, se toma una instantánea en la hora actual. Para obtener información sobre los formatos de hora, consulta gcloud topic datetimes.

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage en el que se escribirá.

    • FILENAME: Es el archivo del bucket de Cloud Storage en el que se escribirá.

  3. Opcional: Para verificar el estado de la exportación, ejecuta el siguiente comando. Se muestra en gcloud CLId después de ejecutar el comando de exportación.

    gcloud asset operations describe OPERATION_PATH
    

Visualiza el resumen de elementos

Para ver la instantánea del recurso después de haberla exportado a Cloud Storage, completa los siguientes pasos.

  1. Ve a la página Buckets de Cloud Storage en la consola de Google Cloud.

    Ir a Buckets

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

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

¿Qué sigue?