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
Cloud Asset Insights proporciona estadísticas basadas en las políticas de IAM asociadas con los recursos de tu organización. Es parte del servicio de Recommender 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 profundo 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 de un proyecto, realiza una de las siguientes solicitudes.
gcloud
Ejecuta los siguientes comandos de gcloud CLI para obtener una lista de las estadísticas de tu proyecto, organización o carpeta.
Proyectos
gcloud recommender insights list \
--project=PROJECT_ID \
--location=global \
--insight-type=google.cloudasset.asset.Insight \
--filter="insightSubtype:SUBTYPE" \
--format="FORMAT"
Ingresa los siguientes valores:
PROJECT_ID
: El ID del proyecto del que deseas obtener las estadísticas
Otras marcas:
--filter
: Opcional Filtra los resultados por subtipo de estadística.--format
: Opcional Un formato de salida compatible con gcloud CLI Por ejemplo, para enumerar el contenido de las estadísticas en una tabla acoplada, usa el siguiente código:gcloud recommender insights list \ --project=PROJECT_ID \ --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)"
Carpetas
gcloud recommender insights list \
--folder=FOLDER_ID \
--location=global \
--insight-type=google.cloudasset.asset.Insight \
--filter="insightSubtype:SUBTYPE" \
--format="FORMAT"
Ingresa los siguientes valores:
FOLDER_ID
: El ID de la carpeta de la que deseas obtener estadísticas.Cómo encontrar un ID de carpeta de Google Cloud
Consola
Para encontrar un ID de carpeta de Google Cloud, completa los siguientes pasos:
-
Ve a la consola de Google Cloud.
- Haz clic en el cuadro de cambio en la barra de menú.
- Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
- 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
-
Otras marcas:
--filter
: Opcional Filtra los resultados por subtipo de estadística.--format
: Opcional Un formato de salida compatible con gcloud CLI Por ejemplo, para enumerar el contenido de las estadísticas en una tabla acoplada, usa el siguiente código:gcloud recommender insights list \ --folder=FOLDER_ID \ --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)"
Organizaciones
gcloud recommender insights list \
--organization=ORGANIZATION_ID \
--location=global \
--insight-type=google.cloudasset.asset.Insight \
--filter="insightSubtype:SUBTYPE" \
--format="FORMAT"
Ingresa los siguientes valores:
ORGANIZATION_ID
: El ID de la organización para la que deseas obtener estadísticas.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:
-
Ve a la consola de Google Cloud.
- Haz clic en el cuadro de cambio en la barra de menú.
- Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
- 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))"
-
Otras marcas:
--filter
: Opcional Filtra los resultados por subtipo de estadística.--format
: Opcional Un formato de salida compatible con gcloud CLI Por ejemplo, para enumerar el contenido de las estadísticas en una tabla acoplada, usa el siguiente código:gcloud recommender insights list \ --organization=ORGANIZATION_ID \ --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)"
REST
Ejecuta el siguiente comando de curl
para enumerar estadísticas de tu proyecto, organización o carpeta.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://recommender.googleapis.com/v1/SCOPE/locations/global/insightTypes/google.cloudasset.asset.Insight/insights
Ingresa los siguientes valores:
SCOPE
: El alcance puede ser un proyecto, una carpeta o una organización.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:
-
Ve a la página Panel en la consola de Google Cloud.
- Haz clic en el cuadro de cambio en la barra de menú.
- Elige tu organización en el cuadro Seleccionar una opción y, luego, busca el nombre del proyecto.
- 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:
-
Ve a la consola de Google Cloud.
- Haz clic en el cuadro de cambio en la barra de menú.
- Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
- 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:
-
Ve a la consola de Google Cloud.
- Haz clic en el cuadro de cambio en la barra de menú.
- Haz clic en el cuadro Seleccionar una opción y, luego, selecciona tu organización.
- 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))"
-
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 usuarios o grupos activos en la política de IAM del proyecto.
Campos de contenido adicionales
Además de los campos estándar en la respuesta, Asset Insights proporciona varios especializados en el campo content
.
user
: La dirección de correo electrónico del usuario específica detectada en los miembros de las vinculaciones de la política para esta estadística en particular. Este campo se incluye en el subtipoTERMINATED_MEMBER
.domain
: El dominio específico detectado en 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 incluye 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 coincidencias solo incluyen el subconjunto de vinculaciones y miembros de vinculación que coinciden con la estadística detectada. Este campo se incluye para todos los subtipos de Asset Insights.policySearchQuery
: Es 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 de código, 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. Todas las políticas que coincidan se pueden recuperar con una llamada 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.