Mostrar recursos

En esta página, se muestra cómo usar el servicio de lista de activos de Cloud Asset Inventory. Puedes usar la API de Cloud Asset Inventory para ver una lista paginada de los elementos en una marca de tiempo determinada.

Antes de comenzar

gcloud

  1. Habilita la API de Cloud Asset antes de poder usar la herramienta de línea de comandos 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 organización o proyecto en la que enumerarás los recursos.
    • roles/cloudasset.viewer
    • roles/cloudasset.owner

Configura una cuenta

Para llamar a la API de Cloud Asset, tu cuenta debe tener el permiso correspondiente en el recurso raíz (superior), que es una organización o un proyecto que contiene los recursos que deseas enumerar. A continuación, se muestra el permiso requerido para cada ContentType en la solicitud:

  • CONTENT_TYPE_UNSPECIFIED: cloudasset.assets.listResource
  • RESOURCE: cloudasset.assets.listResource
  • IAM_POLICY: cloudasset.assets.listIamPolicy
  • ORG_POLICY: cloudasset.assets.listOrgPolicy
  • ACCESS_POLICY: cloudasset.assets.listAccessPolicy
  • OS_INVENTORY: cloudasset.assets.listOSInventories

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.

Enumerar recursos

Para enumerar los recursos de un proyecto dentro de un período determinado mediante la API de Cloud Asset, sigue los pasos que se indican a continuación.

gcloud

Los comandos que se muestran en esta sección enumeran los elementos de un proyecto. Para enumerar los elementos de una organización, usa la marca --organization=ORGANIZATION_ID en el comando.

En el siguiente ejemplo, se enumeran los recursos dentro de un proyecto.

Ten en cuenta que el primer snapshot-time posible es la hora actual menos 35 días.

  1. Asegúrate de que puedes llamar a la API de Cloud Asset mediante el paso Configura una cuenta.
  2. Determina los tipos de recursos de los elementos que deseas enumerar. Esta es la variable asset-types en los ejemplos que se muestran a continuación.
  3. Determina la hora en la que deseas enumerar los elementos. Este es el snapshot-time en el comando de gcloud, en formato RFC 3339 UTC.

Ten en cuenta que puedes especificar el proyecto de facturación con la marca --billing-project, que es el proyecto que usas para enviar la solicitud. Puedes especificar el proyecto de destino que deseas enumerar con la marca --project cuando enumeras elementos de un proyecto, especificar la organización de destino con la marca --organization o especificar la carpeta de destino con la marca --folder.

Para ver una lista completa de marcas y opciones, ejecuta gcloud alpha asset list --help.

Enumera los recursos de un proyecto, incluidos todos los metadatos del recurso:

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --project='PROJECT_ID' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW \
  --content-type='resource'

Muestra los recursos de un proyecto sin los metadatos de los recursos:

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --project='PROJECT_ID' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW

Enumera los recursos de una organización, incluidos todos los metadatos del recurso:

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --organization='ORGANIZATION_NUMBER' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW \
  --content-type='resource'

Muestra los recursos de una organización sin los metadatos de los recursos:

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --organization='ORGANIZATION_NUMBER' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW

Enumera los recursos de una carpeta, incluidos todos los metadatos del recurso:

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --folder='FOLDER_NUMBER' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW \
  --content-type='resource'

Muestra los recursos de una carpeta sin los metadatos de los recursos:

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --folder='FOLDER_NUMBER' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW

API

Con los comandos que se muestran en esta sección, se enumeran los recursos de un proyecto, una organización o una carpeta.

  1. Asegúrate de que puedes llamar a la API de Cloud Asset mediante el paso Configura una cuenta.
  2. Determina la hora en la que deseas enumerar los elementos. Este es el parámetro readTime en el siguiente comando, en formato RFC 3339 UTC.
  3. Determina los tipos de recursos del elemento que deseas enumerar. En el siguiente ejemplo, se usa compute.googleapis.com/Instance.

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

Enumera los recursos de un proyecto, incluidos todos los metadatos del recurso:

El parámetro pageToken no se debe configurar para la primera página y se debe configurar en el valor del token de página como respuesta a una solicitud de página anterior. Ten en cuenta que pageToken es diferente de Token, que se mencionó anteriormente.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"contentType":"RESOURCE", \
          "assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER/assets

Enumerar los recursos de un proyecto sin metadatos de los recursos

El parámetro pageToken no se debe configurar para la primera página y se debe configurar en el valor del token de página como respuesta a una solicitud de página anterior.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER/assets

Enumera los recursos de una organización, incluidos todos los metadatos del recurso:

El parámetro pageToken no se debe configurar para la primera página y se debe configurar en el valor del token de página como respuesta a una solicitud de página anterior. Ten en cuenta que pageToken es diferente de Token, que se mencionó anteriormente.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"contentType":"RESOURCE", \
          "assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_NUMBER/assets

Enumera los recursos de una organización sin metadatos de los recursos

El parámetro pageToken no se debe configurar para la primera página y se debe configurar en el valor del token de página como respuesta a una solicitud de página anterior.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/ogranizations/ORGANIZATION_NUMBER/assets

Enumera los recursos de una carpeta, incluidos todos los metadatos del recurso:

El parámetro pageToken no se debe configurar para la primera página y se debe configurar en el valor del token de página como respuesta a una solicitud de página anterior. Ten en cuenta que pageToken es diferente de Token, que se mencionó anteriormente.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"contentType":"RESOURCE", \
          "assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/folders/FOLDER_NUMBER/assets

Enumera los recursos de una carpeta sin metadatos de los recursos

El parámetro pageToken no se debe configurar para la primera página y se debe configurar en el valor del token de página como respuesta a una solicitud de página anterior.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/folders/FOLDER_NUMBER/assets

Referencia de la API