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
- Habilita la API de Cloud Asset antes de poder usar la CLI de Google Cloud 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 - Instala la CLI de Google Cloud en tu cliente local.
API
- Instala oauth2l en tu máquina local para interactuar con el sistema Google OAuth.
- Confirma que tienes acceso al comando
curl
de Unix. - 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.
- Asegúrate de que puedes llamar a la API de Cloud Asset mediante el paso Configura una cuenta.
- 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.
- 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 usarás para enviar la solicitud. Puedes especificar el proyecto de destino que deseas enumerar con la marca --project
cuando enumeras elementos de un proyecto, especificas la organización de destino con la marca --organization
o especificas la carpeta de destino con la marca --folder
.
Para ver una lista completa de marcas y opciones, ejecuta gcloud 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 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 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 asset list --organization='ORGANIZATION_NUMBER' \ --billing-project='BILLING_PROJECT_ID' \ --asset-types='compute.googleapis.com/Instance' \ --snapshot-time=$NOW \ --content-type='resource'
Enumera los recursos de una organización sin metadatos de los recursos:
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud 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 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 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.
- Asegúrate de que puedes llamar a la API de Cloud Asset mediante el paso Configura una cuenta.
- 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.
- 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