En este tema, se muestra cómo usar las estadísticas de recursos para detectar posibles riesgos en la configuración de tus elementos y ayudarte a mejorar tu posición de seguridad.
Descripción general
Las estadísticas de Cloud Asset proporcionan estadísticas basadas en las políticas de IAM asociadas con los recursos de tu organización. Es parte del servicio del Recomendador y se proporciona como el tipo de estadística google.cloudasset.asset.Insight
. Las estadísticas son anomalías específicas que requieren un análisis más detallado para determinar la acción adecuada. Se generan a diario, en función de una instantánea de los datos almacenados en Cloud Asset Inventory.
Antes de comenzar
Antes de comenzar a usar las estadísticas de recurso, debes completar los siguientes pasos.
Asegúrate de que tu cuenta tenga los siguientes permisos.
recommender.cloudAssetInsights.get
recommender.cloudAssetInsights.list
recommender.cloudAssetInsights.update
Puedes otorgar estos permisos de forma individual o puedes otorgar una de las siguientes funciones.
- Función de visualizador de estadísticas de Cloud Asset (
roles/recommender.cloudAssetInsightsViewer
) - Función de administrador de Cloud Asset Insights (
roles/recommender.cloudAssetInsightsAdmin
)
Solicita estadísticas de recurso
Para solicitar estadísticas de recursos, la forma más fácil es enumerar las estadísticas como se muestra en los siguientes pasos. Para otros tipos de interacciones de estadísticas, consulta la guía de estadísticas de la API del recomendador.
Solicita estadísticas de proyecto
Para solicitar estadísticas para un proyecto, completa los siguientes pasos.
gcloud
Ejecuta el siguiente comando de la CLI de gcloud.
gcloud recommender insights list \ --project=PROJECT \ --billing-project=BILLING_PROJECT \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --filter="insightSubtype:SUBTYPE" \ --format=FORMAT
Donde:
- BILLING_PROJECT es el proyecto que habilitó la API del recomendador. Como alternativa, si estableces un proyecto como
billing/quota_project
en la configuración de la CLI de gcloud, este parámetro no es obligatorio. --filter
es opcional, pero se puede usar para filtrar los resultados por subtipo de estadística.- FORMAT es un formato de salida compatible para la CLI de gcloud. Por ejemplo, para enumerar el contenido de las estadísticas como una tabla compactada, haz lo siguiente:
gcloud recommender insights list \ --project=PROJECT \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --flatten="content.matchedPolicies[].matchedBindings[].matchedMembers[]" \ --format="table(insightSubtype, name, content.matchedPolicies.matchedBindings.matchedMembers, content.matchedPolicies.matchedBindings.role, content.matchedPolicies.resource)"
API
Ejecuta el siguiente comando de curl:
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: WHITELISTED_PROJECT" \ "https://recommender.googleapis.com/v1/projects/PROJECT/locations/global/insightTypes/google.cloudasset.asset.Insight/insights"
Solicita estadísticas de carpeta
Para solicitar estadísticas para una carpeta, completa los siguientes pasos.
gcloud
Ejecuta el siguiente comando de la CLI de gcloud.
gcloud recommender insights list \ --folder=FOLDER_NUMBER \ --billing-project=BILLING_PROJECT \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --filter="insightSubtype:SUBTYPE" \ --format=FORMAT
Donde:
- BILLING_PROJECT es el proyecto que habilitó la API del recomendador. Como alternativa, si estableces un proyecto como
billing/quota_project
en la configuración de la CLI de gcloud, este parámetro no es obligatorio. --filter
es opcional, pero se puede usar para filtrar los resultados por subtipo de estadística.- FORMAT es un formato de salida compatible para la CLI de gcloud. Por ejemplo, para enumerar el contenido de las estadísticas como una tabla plana, haz lo siguiente:
gcloud recommender insights list \ --folder=FOLDER_NUMBER \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --flatten="content.matchedPolicies[].matchedBindings[].matchedMembers[]" \ --format="table(insightSubtype, name, content.matchedPolicies.matchedBindings.matchedMembers, content.matchedPolicies.matchedBindings.role, content.matchedPolicies.resource)"
API
Ejecuta el siguiente comando de curl:
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT" \ "https://recommender.googleapis.com/v1/folders/FOLDER_NUMBER/locations/global/insightTypes/google.cloudasset.asset.Insight/insights"
Solicita estadísticas de organización
Si deseas solicitar estadísticas para una organización, completa los siguientes pasos.
gcloud
Ejecuta el siguiente comando de la CLI de gcloud.
gcloud recommender insights list \ --organization=ORGANIZATION \ --billing-project=BILLING_PROJECT \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --filter="insightSubtype:SUBTYPE" \ --format=FORMAT
Donde:
- BILLING_PROJECT es el proyecto que habilitó la API del recomendador. Como alternativa, si estableces un proyecto como
billing/quota_project
en la configuración de la CLI de gcloud, este parámetro no es obligatorio. --filter
es opcional, pero se puede usar para filtrar los resultados por subtipo de estadística.- FORMAT es un formato de salida compatible para la CLI de gcloud. Por ejemplo, para enumerar el contenido de las estadísticas como una tabla plana, haz lo siguiente:
gcloud recommender insights list \ --organization=ORGANIZATION \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --flatten="content.matchedPolicies[].matchedBindings[].matchedMembers[]" \ --format="table(insightSubtype, name, content.matchedPolicies.matchedBindings.matchedMembers, content.matchedPolicies.matchedBindings.role, content.matchedPolicies.resource)"
API
Ejecuta el siguiente comando de curl:
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT" \ "https://recommender.googleapis.com/v1/organizations/ORGANIZATION
Interpreta las respuestas de las estadísticas
Además de los atributos de estadísticas estándar, Asset Insights proporciona varios subtipos y campos especializados.
Subtipos de estadísticas
Existen siete subtipos de Asset Insights distintos.
EXTERNAL_MEMBER
: Detecta políticas de IAM que contienen usuarios o grupos que pertenecen a un dominio fuera de los dominios de tu organización.EXTERNAL_POLICY_EDITOR
: Detecta políticas de IAM que contienen usuarios o grupos fuera de los dominios de tu organización a los que se les otorga permiso para modificar las políticas de IAM.EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER
: Detecta políticas de IAM que contienen usuarios o grupos fuera de los dominios de tu organización a los que se les otorga permiso para obtener o enumerar objetos de almacenamiento (storage.objects.list
ostorage.objects.get permission
).EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR
: Detecta políticas de IAM que contienen usuarios o grupos fuera de los dominios de tu organización a los que se les otorga permiso para actuar en nombre de cuentas de servicio.TERMINATED_MEMBER
: Detecta políticas de IAM que contienen usuarios o grupos con cuentas desactivadas, borradas o purgadas.PUBLIC_IAM_POLICY
: Detecta políticas de IAM que contienen todos los usuarios o todos los usuarios autenticados.OWNER_TERMINATED_PROJECT
: Detecta proyectos que no contienen ningún usuario o grupo activo dentro de la política de IAM del proyecto.
Campos content
adicionales
Además de los campos estándar de la respuesta, Asset Insights proporciona varios campos especializados en el campo content
.
user
: La dirección de correo electrónico específica del usuario que se detecta dentro de los miembros de las vinculaciones de políticas para esta estadística en particular. Este campo se incluye en el subtipoTERMINATED_MEMBER
.domain
: El dominio específico detectado dentro de los miembros de las vinculaciones de políticas de esta estadística en particular. Este campo se incluye en los subtiposEXTERNAL_MEMBER
,EXTERNAL_POLICY_EDITOR
,EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER
yEXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR
.assetName
: El nombre del recurso para el que se detectó el acceso con esta estadística en particular. Este campo se incluirá en los subtiposOWNER_TERMINATED_PROJECT
yPUBLIC_IAM_POLICY
.policyCount
: La cantidad total de políticas de IAM distintas en las que se detectaron miembros coincidentes para esta estadística en particular. Este campo se incluye en todos los subtipos de Estadísticas de recursos.matchedPolicies
: Un muestreo de las políticas de IAM que coinciden con la estadística detectada. Las políticas de coincidencia solo incluirán el subconjunto de vinculaciones y miembros de vinculación que coinciden con la estadística detectada. Este campo se incluye en todos los subtipos de estadísticas de recursos.policySearchQuery
: Una consulta que se puede usar con la API de búsqueda de políticas de IAM de Cloud Asset Inventory para recuperar todas las políticas relevantes en tiempo real.
Respuesta de muestra
En el siguiente fragmento, se muestra el formato de una respuesta de muestra.
[{ "name":"organizations/1234567/locations/global/insightTypes/google.cloudasset.asset.Insight/insights/0ab35ae7-afa8-42a3-a173-92da8771a489", "description":"Domain example.com detected in 1 IAM policies", "content":{ "domain":"example.com", "policyCount":1, "policySearchQuery":"policy: example.com", "matchedPolicies":[ { "resource":"//cloudresourcemanager.googleapis.com/projects/5678910", "project":"projects/5678910", "matchedBindings":[ { "role":"roles/viewer", "matchedMembers":[ "user:example@example.com" ] } ] } ] }, "lastRefreshTime":"2020-12-04T06:59:04Z", "observationPeriod":"0s", "stateInfo":{ "state":"ACTIVE" }, "category":"SECURITY", "targetResources":[ "//cloudresourcemanager.googleapis.com/organizations/1234567" ], "insightSubtype":"EXTERNAL_MEMBER", "etag":"\"00000000000\"", "initialRefreshTime":"2020-12-01T06:58:03Z" }]
Limitaciones
- Estas estadísticas no consideran las membresías de grupo como parte de sus hallazgos y no deben considerarse una lista exhaustiva de vulnerabilidades coincidentes.
- Las estadísticas individuales incluyen una muestra de políticas de IAM coincidentes, que tiene un límite de 100 políticas distintas. Para recuperar todas las políticas coincidentes, llama a la búsqueda de políticas de Cloud Asset Inventory.
- Las estadísticas de elementos no consideran las cuentas de servicio para la generación de estadísticas.