Descripción general de las recomendaciones de funciones

Las recomendaciones de funciones te ayudan a identificar y quitar el exceso de permisos de tus principales, lo que mejora la configuración de seguridad de tus recursos.

Descripción general de las recomendaciones de funciones

El recomendador de IAM genera las recomendaciones de roles. El recomendador de IAM es uno de los recomendadores que ofrece Recomendador.

Cada recomendación de función sugiere que quites o reemplaces una función que otorgue permisos excesivos a los miembros. A gran escala, estas recomendaciones te ayudan a aplicar el principio de privilegio mínimo, ya que garantizan que las principales solo tengan los permisos que en verdad necesitan.

El recomendador de IAM identifica los permisos excesivos con las estadísticas de las políticas. Las observaciones de políticas son hallazgos basados en el AA sobre el uso de permisos de una principal.

Algunas recomendaciones también se asocian con las estadísticas de movimiento lateral. Estas estadísticas identifican funciones que permiten que las cuentas de servicio de un proyecto actúen en nombre de otra en otro proyecto. Para obtener más información, consulta Cómo se generan estadísticas de movimiento lateral.

Cómo se generan las estadísticas de políticas

Las observaciones de políticas destacan los permisos en los roles de una principal que esta no usa.

El recomendador de IAM genera estadísticas de políticas comparando la cantidad total de permisos de una principal con los permisos que usó la principal en los últimos 90 días. Si el rol se otorgó hace menos de 90 días, el Recomendador de IAM analiza el uso de permisos del principal desde que se le otorgó el rol.

Un principal puede usar un permiso de las siguientes maneras:

  • De forma directa, si llama a una API que requiere el permiso

    Por ejemplo, el método roles.list en la API de REST de IAM requiere el permiso iam.roles.list. Cuando llamas al método roles.list, usas el permiso iam.roles.list.

    De manera similar, cuando llamas al método testIamPermissions de un recurso, usas todos los permisos que estás probando.

  • De forma indirecta, si usas la consola de Google Cloud para trabajar con recursos de Google Cloud

    Por ejemplo, en la consola de Google Cloud , puedes editar una instancia de máquina virtual (VM) de Compute Engine, lo que requiere permisos diferentes en función de los parámetros de configuración que modifiques. Sin embargo, la consola de Google Cloud también muestra la configuración existente, para lo que se requiere el permiso compute.instances.get.

    Como resultado, cuando editas una instancia de VM en la consola de Google Cloud , debes usar el permiso compute.instances.get.

Para determinar los permisos que usó la principal, el Recomendador de IAM usa datos de acceso agregados de IAM. Para obtener información sobre cómo exportar los datos que usa el recomendador de IAM para generar estas estadísticas, consulta Exporta datos para obtener recomendaciones de roles.

El Recomendador de IAM también usa el aprendizaje automático para identificar permisos en el rol actual de una principal que es probable que necesite en el futuro, incluso si la principal no usó esos permisos recientemente. Para obtener más información, consulta Aprendizaje automático para obtener estadísticas de políticas en esta página.

Las estadísticas de políticas no se generan para todos los roles de IAM que se otorgan a los principales. Para obtener más información sobre por qué un rol podría no tener una sugerencia de política, consulta la sección Disponibilidad en esta página.

Para obtener información sobre cómo administrar las estadísticas de políticas, consulta Administra las estadísticas de políticas para proyectos, carpetas y organizaciones o Administra las estadísticas de políticas para buckets de Cloud Storage.

Aprendizaje automático para estadísticas de políticas

En algunos casos, es probable que una principal necesite ciertos permisos que están incluidos en sus funciones actuales, pero que no usó recientemente. Para identificar estos permisos, el recomendador de IAM usa un modelo de aprendizaje automático (AA) cuando genera estadísticas de políticas.

Este modelo de aprendizaje automático se entrena en función de varios conjuntos de indicadores:

  • Patrones de coocurrencia comunes en el historial observado: El hecho de que un usuario haya usado los permisos A, B y C en el pasado proporciona una pista de que A, B y C podrían estar relacionados de alguna manera y que se necesitan juntos para llevar a cabo una tarea en Google Cloud. Si el modelo de AA detecta este patrón con suficiente frecuencia, la próxima vez que un usuario diferente use los permisos A y B, el modelo sugerirá que es probable que el usuario también necesite el permiso C.

  • Conocimiento del dominio como se lo codificó en las definiciones de las funciones: IAM proporciona cientos de funciones predefinidas diferentes que son específicas de un servicio. Si un rol predefinido contiene un conjunto de permisos, es un indicador sólido de que esos permisos se deben otorgar juntos.

Además de estos indicadores, el modelo también usa embeddings de palabras para calcular la similitud semántica de los permisos. Los permisos similares en términos de la semántica estarán “relacionados” entre sí después de la incorporación y tendrán más probabilidades de ser otorgados en conjunto. Por ejemplo, bigquery.datasets.get y bigquery.tables.list estarán muy cerca entre sí después de la incorporación.

Todos los datos que se usaron en la canalización de aprendizaje automático del recomendador de IAM cuentan con k-anonimato, lo que significa que las personas del conjunto de datos anonimizado no se pueden volver a identificar. Para lograr este nivel de anonimato, descartamos toda la información de identificación personal (PII), como el ID del usuario relacionado con cada patrón de uso de permisos. Luego, descartamos todos los patrones de uso que no aparecen con la frecuencia suficiente en Google Cloud. El modelo global se entrena en función de estos datos anonimizados.

El modelo global se puede personalizar aún más para cada organización mediante el aprendizaje federado, un proceso de aprendizaje automático mediante el cual se entrenan modelos de aprendizaje automático sin exportar datos.

Cómo se generan las recomendaciones de funciones

Si una sugerencia de política indica que una principal no necesita todos los permisos de su rol, el recomendador de IAM evalúa el rol para determinar si se puede revocar o si hay otro rol que se ajuste mejor. Si se puede revocar el rol, el recomendador de IAM genera una recomendación para revocarlo. Si hay otro rol que se ajuste mejor, el recomendador de IAM generará una recomendación de rol para reemplazar el rol por uno sugerido. Este reemplazo sugerido podría ser una función personalizada nueva o existente, o una o más funciones predefinidas. Excepto en el caso de las recomendaciones para agentes de servicio, una recomendación de rol nunca sugiere un cambio que aumente el nivel de acceso de una principal.

Las recomendaciones de funciones se generan solo en función de los controles de acceso de IAM. No tienen en cuenta otros tipos de controles de acceso, como las listas de control de acceso (LCA) y el control de acceso según la función (RBAC) de Kubernetes. Si usas otros tipos de controles de acceso, debes tener especial cuidado a la hora de revisar las recomendaciones y debes considerar cómo se relacionan esos controles de acceso con tus políticas de permisos.

Además, las recomendaciones de roles no se generan para todos los roles de IAM que se otorgan a las entidades principales. Para obtener más información sobre por qué un rol podría no tener una recomendación, consulta la sección Disponibilidad en esta página.

Período de observación

El período de observación de una recomendación de rol es la cantidad de días de datos de uso de permisos en los que se basa la recomendación.

El período de observación máximo para las recomendaciones de roles es de 90 días. Esto significa que el recomendador de IAM utiliza, como máximo, los datos de uso de permisos de los últimos 90 días para generar recomendaciones de roles.

El recomendador de IAM tampoco comienza a generar recomendaciones de roles hasta que tiene una cierta cantidad de días de datos de uso de permisos. Esta duración se denomina período de observación mínimo. De forma predeterminada, el período de observación mínimo es de 90 días, pero, para las recomendaciones de roles a nivel del proyecto, puedes establecerlo manualmente en 30 o 60 días. Para obtener más información, consulta Cómo configurar la generación de recomendaciones de roles. Si estableces el período de observación mínimo en menos de 90 días, recibirás recomendaciones antes, pero es posible que se vea afectada la exactitud de las recomendaciones.

Si transcurrió más tiempo que el período de observación mínimo, pero menos de 90 días desde que se otorgó el rol, el período de observación será el tiempo transcurrido desde que se otorgó el rol.

Nuevas funciones personalizadas en las recomendaciones de funciones

Cuando el recomendador de IAM sugiere reemplazos para un rol, siempre sugiere un rol personalizado existente o uno o más roles predefinidos que parecen ser más adecuados para las necesidades de la principal.

Si el Recomendador de IAM identifica un patrón de uso de permisos común en tu organización que no se asigna a un rol predefinido o personalizado existente, también podría recomendarte que crees un nuevo rol personalizado a nivel del proyecto. Esta función personalizada incluye solo los permisos recomendados. Para modificar la recomendación de la función personalizada, puedes agregar o quitar permisos.

Si quieres aplicar el principio de privilegio mínimo de la manera más estricta posible, elige la nueva función personalizada. El recomendador de IAM crea la función personalizada a nivel de proyecto. Eres responsable de mantener y actualizar las funciones personalizadas de tus proyectos.

Si prefieres usar un rol que se mantenga para ti, elige el rol predefinido. Google Cloud actualiza estos roles periódicamente agregando o quitando permisos. Para recibir notificaciones sobre estas actualizaciones, suscríbete al feed de noticias del registro de cambios de permisos. Cuando eliges el rol predefinido, la principal sigue teniendo al menos algunos permisos, y potencialmente una gran cantidad de permisos, que no ha usado.

El Recomendador de IAM recomienda roles personalizados nuevos solo para los roles otorgados en un proyecto. No recomienda roles personalizados nuevos para los roles otorgados en otros recursos, como carpetas u organizaciones.

Además, el recomendador de IAM no recomienda roles personalizados nuevos en los siguientes casos:

  • Tu organización ya tiene 100 funciones personalizadas o más.
  • Tu proyecto ya tiene 25 funciones personalizadas o más.

El Recomendador de IAM recomienda no más de 5 roles personalizados nuevos por día en cada proyecto y no más de 15 roles personalizados nuevos en toda la organización.

Cómo se generan las estadísticas de movimiento lateral

El movimiento posterior es cuando una cuenta de servicio en un proyecto tiene permiso para actuar en nombre de una cuenta de servicio en otro proyecto. Por ejemplo, es posible que se haya creado una cuenta de servicio en el proyecto A, pero que tenga permisos para actuar en nombre de una cuenta de servicio en el proyecto B.

Estos permisos pueden generar una cadena de robo de identidad en todos los proyectos que les otorga a las principales acceso no deseado a los recursos. Por ejemplo, si un principal actúa en nombre de la cuenta de servicio del proyecto A, puede usarla para actuar en nombre de la cuenta de servicio del proyecto B. Si la cuenta de servicio en el proyecto B tiene permiso para actuar en nombre de otras cuentas en otros proyectos de tu organización, la principal podría seguir usando el robo de identidad de la cuenta de servicio para moverse de un proyecto a otro, lo que le permite obtener permisos a medida que avanzan.

El recomendador de IAM genera estadísticas de movimientos laterales identificando roles que cumplen con los siguientes criterios:

  • La principal a la que se otorgó el rol es una cuenta de servicio que no se creó en el proyecto.
  • La función incluye uno de los siguientes permisos, que permiten que una principal actúe en nombre de una cuenta de servicio:

    • iam.serviceAccounts.actAs
    • iam.serviceAccounts.getAccessToken
    • iam.serviceAccounts.getOpenIdToken
    • iam.serviceAccounts.implicitDelegation
    • iam.serviceAccounts.signBlob
    • iam.serviceAccounts.signJwt

Si un rol cumple con estos criterios, el Recomendador de IAM genera una estadística de movimiento lateral para el rol. Esta estadística incluye información sobre las capacidades de suplantación de identidad de la cuenta de servicio, incluidas las cuentas de servicio que puede suplantar y si usó algún permiso de suplantación en los últimos 90 días.

El recomendador de IAM no usa las estadísticas de movimiento lateral por sí solas para generar recomendaciones de roles nuevos. Esto se debe a que, si una cuenta de servicio usa sus permisos de suplantación, el Recomendador de IAM no puede sugerir de forma segura que se quiten. Sin embargo, si una recomendación de rol sugiere quitar estos permisos porque no se usan, el Recomendador de IAM vinculará la estadística de movimiento lateral a esa recomendación. Esta vinculación te ayuda a priorizar las recomendaciones de funciones para las cuentas de servicio que tienen permisos de uso de identidad potentes y sin usar en todos los proyectos.

Para obtener información sobre cómo administrar las estadísticas de movimiento lateral, consulta Administra las estadísticas de movimiento lateral.

Disponibilidad

Las estadísticas de políticas, las estadísticas de movimiento lateral y las recomendaciones de roles no se generan para todos los roles que se otorgan a las principales. Lee las siguientes secciones para comprender los roles para los que se generan las estadísticas de políticas, las estadísticas de movimiento lateral y las recomendaciones.

Disponibilidad de estadísticas de la política

Para que el Recomendador de IAM genere una estadística de política para un rol, se deben cumplir las siguientes condiciones:

  • La política de permiso de IAM que otorga el rol debe estar adjunta a uno de los siguientes recursos:

    • Bucket de Cloud Storage
    • Conjunto de datos de BigQuery
    • Proyecto
    • Carpeta
    • Organización

    El recomendador de IAM solo genera estadísticas de políticas para los roles que se otorgan en estos recursos.

  • La vinculación de rol que otorga el rol no debe tener una condición. El recomendador de IAM no genera estadísticas de políticas para las vinculaciones de roles condicionales.

  • El principal al que se le otorga el rol debe ser uno de los siguientes tipos de principal:

    • Usuario
    • Cuenta de servicio
    • Grupo
    • allUsers
    • allAuthenticatedUsers
    • Valores de conveniencia de Cloud Storage
    • Membresía de grupos especiales de BigQuery
    • Uno de los siguientes tipos de identidades federadas:

      • Todas las identidades en un grupo de identidades para cargas de trabajo
      • Una identidad única en un grupo de identidades para cargas de trabajo
      • Todas las identidades en un grupo de identidades de personal
      • Una identidad única en un grupo de identidades de personal
      • Todos los Pods de Google Kubernetes Engine que usan una cuenta de servicio de Kubernetes específica

    Para obtener detalles sobre el formato del identificador de cada tipo de principal, consulta Identificadores de principal.

El Recomendador de IAM puede tardar hasta 15 días en generar estadísticas de políticas para un rol recién otorgado.

Disponibilidad de estadísticas de movimiento lateral

Las estadísticas de movimientos laterales se generan para los roles que se otorgan en los siguientes recursos:

  • Organizaciones
  • Carpetas
  • Proyectos
  • Cuentas de servicio

Disponibilidad de la recomendación de función

Para que el Recomendador de IAM genere una recomendación de rol, se deben cumplir las siguientes condiciones:

  • El rol debe tener una sugerencia de política asociada. Esta estadística de la política sirve como base para la recomendación.
  • Debe haber transcurrido un período superior al período de observación mínimo desde que se otorgó el rol. Esto garantiza que el recomendador de IAM tenga suficientes datos de uso para hacer una recomendación. De forma predeterminada, el período de observación mínimo es de 90 días, pero puedes establecerlo manualmente en 30 o 60 días. Para obtener más información, consulta Cómo configurar la generación de recomendaciones de roles.
  • Si la principal a la que se le otorga el rol es un agente de servicio, el rol debe ser Propietario, Editor o Visualizador. El recomendador de IAM no genera recomendaciones de roles para los agentes de servicio con otros roles. Para obtener más información, consulta Recomendaciones de roles para agentes de servicio.

Si un rol se otorgó hace poco o no tiene ninguna estadística, la columna Permisos analizados en la consola de Google Cloud muestra un ícono de.

Hay algunos casos en los que el Recomendador de IAM no genera recomendaciones de roles para un rol, aunque haya pasado suficiente tiempo y el rol tenga una estadística asociada. Esto puede suceder por los siguientes motivos:

  • No hay roles predefinidos de IAM que sean más adecuados que el rol actual. Si una principal ya tiene un rol predefinido que minimiza sus permisos o que incluye menos permisos que otros roles predefinidos, el Recomendador de IAM no puede recomendar un rol predefinido diferente.

    Es posible que seas capaz de reducir los permisos de la principal si creas una función personalizada para la principal.

  • El principal es un agente de servicio y el rol no es un rol básico. El Recomendador de IAM solo genera recomendaciones de roles para los agentes de servicio que tienen un rol básico (propietario, editor o visualizador). Para obtener más información, consulta Recomendaciones de roles para agentes de servicio.

  • Ninguna otra principal tiene el rol básico de propietario para el proyecto. En cada proyecto debe haber al menos una principal que tenga la función de propietario (roles/owner). Si solo una principal tiene este rol, el recomendador de IAM no recomendará revocarlo ni reemplazarlo.

En estos casos, en la columna Permisos analizados de laGoogle Cloud consola, se muestra el uso de permisos de la principal, pero no tiene un ícono de Recomendación disponible .

Prioridad y gravedad

La prioridad de las recomendaciones y la gravedad de las estadísticas te ayudan a comprender la urgencia de una recomendación o estadística, y a priorizarla según corresponda.

Prioridad de recomendación de funciones

A las recomendaciones se les asignan niveles de prioridad según la urgencia percibida. Los niveles de prioridad varían de P1 (prioridad más alta) a P4 (prioridad más baja).

La prioridad de una recomendación de rol depende del rol para el que se realiza la recomendación:

Detalles de la recomendación Prioridad Explicación
Recomendaciones para los roles que otorgan acceso público a los buckets de Cloud Storage P1 Cualquier persona puede acceder a los buckets accesibles públicamente. Quitar el acceso público te brinda más control sobre tus datos.
Recomendaciones para roles que otorgan acceso público a conjuntos de datos de BigQuery P1 Cualquier persona puede acceder a los conjuntos de datos disponibles públicamente desde Internet. Quitar el acceso público te brinda más control sobre tus datos.
Recomendaciones para roles básicos (propietario, editor y visualizador) que se otorgan en un proyecto, una carpeta o una organización P2 Los roles básicos son muy permisivos, y aplicar recomendaciones para estos roles puede reducir en gran medida los permisos excesivos.
Recomendaciones que no otorgan acceso público ni roles básicos P4 Si bien estas recomendaciones te ayudan a reducir los permisos excesivos, no quitan el acceso público ni los roles básicos altamente permisivos, por lo que tienen una prioridad más baja.

Gravedad de la estadística

A las estadísticas se les asignan niveles de gravedad según la urgencia percibida. Los niveles de gravedad pueden ser LOW, MEDIUM, HIGH o CRITICAL.

La gravedad de una estadística de política depende del rol para el que se proporciona la estadística:

Detalles de la estadística Gravedad Explicación
Sugerencias sobre los roles que otorgan acceso público a los buckets de Cloud Storage CRITICAL Cualquier persona puede acceder a los buckets accesibles públicamente. Quitar el acceso público te brinda más control sobre tus datos.
Estadísticas sobre los roles que otorgan acceso público a los conjuntos de datos de BigQuery CRITICAL Cualquier persona puede acceder a los conjuntos de datos disponibles públicamente desde Internet. Quitar el acceso público te brinda más control sobre tus datos.
Estadísticas sobre los roles básicos (propietario, editor y visualizador) que se otorgan en un proyecto, una carpeta o una organización HIGH Los roles básicos son muy permisivos, y abordar las estadísticas de estos roles puede reducir en gran medida los permisos no utilizados.
Estadísticas que no otorgan acceso público ni roles básicos LOW Si bien estas estadísticas destacan los permisos excesivos, no involucran el acceso público ni los roles básicos demasiado permisivos, lo que las convierte en una prioridad más baja.

Todas las estadísticas de movimiento lateral tienen una gravedad de LOW.

Cómo se aplican las recomendaciones de funciones

El recomendador de IAM no aplica recomendaciones de forma automática. En su lugar, debes revisar tus recomendaciones y decidir si las aplicas o las descartas.

Puedes abordar las recomendaciones de varias maneras:

Registros de auditoría

Cuando aplicas o descartas una recomendación, el recomendador de IAM crea una entrada de registro. Puedes ver estas entradas en tu historial de recomendaciones o verlas en tus registros de auditoría de Google Cloud .

Subtipos de recomendación de función

Las recomendaciones de funciones se dividen en varios subtipos diferentes según la acción que recomiendan. Si usas la gcloud CLI o la API de REST, puedes usar estos subtipos para filtrar las recomendaciones.

Subtipo Descripción
REMOVE_ROLE Es una recomendación para quitar el rol de la principal a nivel del proyecto, la carpeta o la organización.
REMOVE_ROLE_BIGQUERY_DATASET Es una recomendación para quitar el rol a nivel del conjunto de datos de la principal.
REMOVE_ROLE_STORAGE_BUCKET Es una recomendación para quitar el rol a nivel del bucket de la principal.
REPLACE_ROLE Es una recomendación para reemplazar el rol de la principal a nivel del proyecto, la carpeta o la organización por un rol menos permisivo. El reemplazo recomendado podría ser un rol personalizado existente o uno o más roles predefinidos.
REPLACE_ROLE_CUSTOMIZABLE Es una recomendación para reemplazar el rol de la principal por un nuevo rol personalizado que sea menos permisivo que el rol actual.
REPLACE_ROLE_BIGQUERY_DATASET Es una recomendación para reemplazar el rol a nivel del conjunto de datos de la principal por uno menos permisivo. El reemplazo recomendado podría ser un rol personalizado existente o uno o más roles predefinidos.
REPLACE_ROLE_STORAGE_BUCKET Es una recomendación para reemplazar el rol a nivel del bucket de la principal por un rol menos permisivo. El reemplazo recomendado podría ser un rol personalizado existente o uno o más roles predefinidos.
SERVICE_AGENT_WITH_DEFAULT_ROLE Recomendación para reemplazar el rol de propietario, editor o visualizador de un agente de servicio por el rol que se otorgó automáticamente a la cuenta de servicio cuando se creó. Para obtener más información, consulta Recomendaciones de roles para agentes de servicio.
SERVICE_AGENT_WITHOUT_DEFAULT_ROLE Recomendación para reemplazar el rol de propietario, editor o visualizador de un agente de servicio por un rol menos permisivo. Para obtener más información, consulta Recomendaciones de roles para agentes de servicio.

Recomendaciones de roles para agentes de servicio

En el caso de los agentes de servicio, el recomendador de IAM solo proporciona recomendaciones para los roles básicos (propietario, editor o visualizador).

Las recomendaciones para los agentes de servicio se dividen en dos subtipos.

SERVICE_AGENT_WITH_DEFAULT_ROLE

Cuando se crean, a algunos agentes de servicio se les otorga automáticamente un rol de agente de servicio para garantizar que tus servicios de Google Cloud funcionen correctamente. Si reemplazas este rol por uno básico (propietario, editor o visualizador), es posible que una recomendación de rol sugiera que restablezcas el rol original del agente de servicio para quitar los permisos excesivos, incluso si el rol del agente de servicio tiene permisos que no están en el rol básico. Estas recomendaciones tienen el subtipo SERVICE_AGENT_WITH_DEFAULT_ROLE. Te ayudan a quitar de forma segura los permisos innecesarios y, al mismo tiempo, garantizan que todos los servicios de Google Cloud funcionen correctamente.

Las recomendaciones de SERVICE_AGENT_WITH_DEFAULT_ROLE son el único tipo de recomendación que podría sugerir funciones con permisos que no están en la función actual.

SERVICE_AGENT_WITHOUT_DEFAULT_ROLE

Si no se otorga automáticamente un rol a un agente de servicio cuando se crea, las recomendaciones para el agente de servicio se basan exclusivamente en los permisos que usa el agente de servicio. Estas recomendaciones tienen el subtipo SERVICE_AGENT_WITHOUT_DEFAULT_ROLE.

Recomendaciones de roles en Security Command Center

Si tienes el nivel Premium o Enterprise de Security Command Center, puedes ver algunos subtipos de recomendaciones de roles como resultados en Security Command Center. Cada subtipo está asociado a un detector:

Subtipo de recomendación Categoría
REMOVE_ROLE Unused IAM role
REPLACE_ROLE IAM role has excessive permissions
SERVICE_AGENT_WITH_DEFAULT_ROLE Service agent role replaced with basic role
SERVICE_AGENT_WITHOUT_DEFAULT_ROLE Service agent granted basic role

Para obtener más información sobre cómo ver las recomendaciones de roles en Security Command Center, consulta Recomendador de IAM en la documentación de Security Command Center.

Precios

Las recomendaciones de roles a nivel de proyecto, carpeta y organización para los roles básicos están disponibles sin cargo.

Las siguientes funciones avanzadas del Recomendador de IAM están disponibles con las activaciones a nivel del proyecto o de la organización del nivel Premium o Enterprise de Security Command Center:

  • Recomendaciones para roles no básicos
  • Recomendaciones para los roles otorgados en recursos que no sean organizaciones, carpetas ni proyectos (por ejemplo, recomendaciones para los roles otorgados en buckets de Cloud Storage)
  • Recomendaciones que sugieren roles personalizados
  • Estadísticas de políticas
  • Estadísticas de movimiento lateral

Para obtener más información, consulta Preguntas sobre la facturación.

Ejemplos de recomendaciones de funciones

En los siguientes ejemplos, se muestran los tipos de recomendaciones que puedes recibir.

Revoca una función existente

Al usuario my-user@example.com se le otorgó la función de navegador en un proyecto. La función de navegador incluye seis permisos que le permiten al usuario ver los recursos del proyecto. Sin embargo, durante los últimos 90 días, my-user@example.com no vio ningún recurso.

Por lo tanto, el recomendador de IAM genera una recomendación de rol que sugiere que revoques el rol de navegador de my-user@example.com:

Console

gcloud

{
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/86c14538-dcfd-4326-afe5-ee8ac921e06a"
    }
  ],
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "remove",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/browser"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project"
          }
        ]
      }
    ],
    "overview": {
      "member": "user:my-user@example.com",
      "removedRole": "roles/browser",
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012"
    }
  },
  "description": "This role has not been used during the observation window.",
  "etag": "\"9fc3241da8bfab51\"",
  "lastRefreshTime": "2022-05-20T07:00:00Z",
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fe512038-5455-49g1-8f9c-752e31c8c154",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 6
      }
    }
  },
  "priority": "P4",
  "recommenderSubtype": "REMOVE_ROLE",
  "stateInfo": {
    "state": "ACTIVE"
  }
}

REST

{
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fe512038-5455-49g1-8f9c-752e31c8c154",
  "description": "This role has not been used during the observation window.",
  "lastRefreshTime": "2022-05-20T07:00:00Z",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 6
      }
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "remove",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/browser"
            }
          }
        ]
      }
    ],
    "overview": {
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
      "member": "user:my-user@example.com",
      "removedRole": "roles/browser"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  },
  "etag": "\"9fc3241da8bfab51\"",
  "recommenderSubtype": "REMOVE_ROLE",
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/86c14538-dcfd-4326-afe5-ee8ac921e06a"
    }
  ],
  "priority": "P4"
}

Reemplaza una función existente

A una cuenta de servicio se le otorgó la función de editor (roles/editor) en un proyecto. Este rol básico incluye más de 3,000 permisos y otorga acceso extenso al proyecto. Sin embargo, durante los últimos 90 días, la cuenta de servicio solo usó algunos de esos permisos.

Por lo tanto, el recomendador de IAM genera una recomendación de rol que sugiere que revoques el rol de editor y lo reemplaces por una combinación de otros dos roles, lo que quita miles de permisos excesivos:

Console

gcloud

{
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/3d4ef3d6-bdf0-4330-975d-c65cb929c44d"
    }
  ],
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "path": "/iamPolicy/bindings/*/members/-",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/iam.serviceAccountUser"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "value": "user:my-user@example.com"
          },
          {
            "action": "add",
            "path": "/iamPolicy/bindings/*/members/-",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/storage.objectAdmin"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "value": "user:my-user@example.com"
          },
          {
            "action": "remove",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/editor"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project"
          }
        ]
      }
    ],
    "overview": {
      "addedRoles": [
        "roles/iam.serviceAccountUser",
        "roles/storage.objectAdmin"
      ],
      "member": "user:my-user@example.com",
      "minimumObservationPeriodInDays": "0",
      "removedRole": "roles/editor",
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012"
    }
  },
  "description": "Replace the current role with smaller predefined roles to cover the permissions needed.",
  "etag": "\"0da9a354c2a83d96\"",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/4637db3d-dba5-45eb-95ac-b4ee4b4cd14e",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 2998
      }
    }
  },
  "priority": "P2",
  "recommenderSubtype": "REPLACE_ROLE",
  "stateInfo": {
    "state": "ACTIVE"
  }
}

REST

{
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/4637db3d-dba5-45eb-95ac-b4ee4b4cd14e",
  "description": "Replace the current role with smaller predefined roles to cover the permissions needed.",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 2998
      }
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/-",
            "value": "user:my-user@example.com",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/iam.serviceAccountOwner"
            }
          },
          {
            "action": "add",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/-",
            "value": "user:my-user@example.com",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/storage.objectAdmin"
            }
          },
          {
            "action": "remove",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/editor"
            }
          }
        ]
      }
    ],
    "overview": {
      "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
      "member": "user:my-user@example.com",
      "removedRole": "roles/editor",
      "addedRoles": [
        "roles/iam.serviceAccountUser",
        "roles/storage.objectAdmin"
      ],
      "minimumObservationPeriodInDays": "0"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  },
  "etag": "\"0da9a354c2a83d96\"",
  "recommenderSubtype": "REPLACE_ROLE",
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/3d4ef3d6-bdf0-4330-975d-c65cb929c44d"
    }
  ],
  "priority": "P2"
}

Crea un rol personalizado

Al usuario my-user@example.com se le otorgó la función de administrador de Cloud Trace (roles/cloudtrace.admin) en un proyecto. La función incluye más de 10 permisos, pero una estadística de la política indica que, durante los últimos 90 días, my-user@example.com solo utilizó 4 de esos permisos.

Por lo tanto, el recomendador de IAM genera una recomendación de rol en la que se sugiere que crees un rol personalizado que incluya solo los permisos que my-user@example.com usó en realidad:

Console

gcloud

El subtipo REPLACE_ROLE_CUSTOMIZABLE indica que el recomendador de IAM recomienda crear un rol personalizado con los permisos utilizados. Para ver los permisos utilizados, obtén la sugerencia de política asociada.

{
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/2799dc04-b12e-4cf6-86aa-d81907d31f58"
    }
  ],
  "associatedResourceNames": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "path": "/iamPolicy/bindings/*/members/-",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.user"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "value": "user:my-user@example.com"
          },
          {
            "action": "remove",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.admin"
            },
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "resourceType": "cloudresourcemanager.googleapis.com/Project"
          }
        ]
      }
    ],
    "overview": {
      "minimumObservationPeriodInDays": "0"
    }
  },
  "description": "Replace the current role with a smaller role to cover the permissions needed.",
  "etag": "\"c7f57a4725d32d66\"",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/ba1fc977-fddd-3856-a829-f69649ae8075",
  "originalContent": {},
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {},
      "revokedIamPermissionsCount": 1
    }
  },
  "priority": "P4",
  "recommenderSubtype": "REPLACE_ROLE_CUSTOMIZABLE",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ]
}

REST

El subtipo REPLACE_ROLE_CUSTOMIZABLE indica que el recomendador de IAM recomienda crear un rol personalizado con los permisos utilizados. Para ver los permisos utilizados, obtén la sugerencia de política asociada.

{
  "name": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/ba1fc977-fddd-3856-a829-f69649ae8075",
  "description": "Replace the current role with a smaller role to cover the permissions needed.",
  "lastRefreshTime": "2022-06-22T07:00:00Z",
  "primaryImpact": {
    "category": "SECURITY",
    "securityProjection": {
      "details": {
        "revokedIamPermissionsCount": 1
      }
    }
  },
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "add",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/-",
            "value": "user:my-user@example.com",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.user"
            }
          },
          {
            "action": "remove",
            "resourceType": "cloudresourcemanager.googleapis.com/Project",
            "resource": "//cloudresourcemanager.googleapis.com/projects/123456789012",
            "path": "/iamPolicy/bindings/*/members/*",
            "pathFilters": {
              "/iamPolicy/bindings/*/condition/expression": "",
              "/iamPolicy/bindings/*/members/*": "user:my-user@example.com",
              "/iamPolicy/bindings/*/role": "roles/cloudtrace.admin"
            }
          }
        ]
      }
    ],
    "overview": {
      "minimumObservationPeriodInDays": "0"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  },
  "etag": "\"c7f57a4725d32d66\"",
  "recommenderSubtype": "REPLACE_ROLE_CUSTOMIZABLE",
  "associatedInsights": [
    {
      "insight": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/2799dc04-b12e-4cf6-86aa-d81907d31f58"
    }
  ],
  "priority": "P4"
}

La recomendación de rol también sugiere otra opción, que es reemplazar el rol existente por el rol de usuario de Cloud Trace (roles/cloudtrace.user). Este rol predefinido incluye un poco menos permisos que el rol de administrador de Cloud Trace.

Reemplazo de funciones por permisos que sugiere el aprendizaje automático

A una cuenta de servicio se le otorgó la función de editor (roles/editor) en un proyecto. Este rol básico incluye más de 3,000 permisos y otorga acceso extenso a un proyecto. Sin embargo, una estadística de políticas indica que, durante los últimos 90 días, la cuenta de servicio usó menos de 10 permisos.

Las estadísticas de la política también destacan varios permisos que es probable que la cuenta de servicio necesite en el futuro. El recomendador de IAM identificó estos permisos con aprendizaje automático.

El Recomendador de IAM genera una recomendación de rol que sugiere que revoques el rol de Editor y lo reemplaces por el rol de Administrador de objetos de almacenamiento (roles/storage.objectAdmin), que otorga control total de los objetos en un bucket de Cloud Storage. Este cambio quita miles de permisos innecesarios y, al mismo tiempo, incluye los permisos que usó la cuenta de servicio y los que es probable que necesite en el futuro:

Console

El recomendador de IAM usa un ícono de aprendizaje automático para identificar los permisos que se agregaron en función del aprendizaje automático del recomendador de IAM, en lugar del uso de permisos. En este ejemplo, el permiso resourcemanager.projects.get se recomendó en función del aprendizaje automático:

gcloud

Los permisos que se agregaron en función del aprendizaje automático del recomendador de IAM y no del uso de permisos no se incluyen en la recomendación. En cambio, se enumeran en las estadísticas de la política asociadas a la recomendación. Todos los permisos basados en AA se enumeran en el campo inferredPermissions de la estadística. En este ejemplo, el permiso resourcemanager.projects.get se recomendó en función del aprendizaje automático:

associatedRecommendations:
- recommendation: projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0573b702-96a5-4622-a916-c762e7b0731f
category: SECURITY
content:
  condition:
    description: ''
    expression: ''
    location: ''
    title: ''
  currentTotalPermissionsCount: '5069'
  exercisedPermissions:
  - permission: storage.objects.create
  - permission: storage.objects.delete
  - permission: storage.objects.get
  - permission: storage.objects.list
  inferredPermissions:
  - permission: resourcemanager.projects.get
  member: serviceAccount:my-service-account@my-project.iam.gserviceaccount.com
  role: roles/editor
description: 4 of the permissions in this role binding were used in the past 90 days.
etag: '"d3cdec23cc712bd0"'
insightSubtype: PERMISSIONS_USAGE
lastRefreshTime: '2020-07-11T07:00:00Z'
name: projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/0d3ce433-f067-4e78-b6ae-03d7d1f6f040
observationPeriod: 7776000s
stateInfo:
  state: ACTIVE
targetResources:
- //cloudresourcemanager.googleapis.com/projects/123456789012
severity: HIGH

Para obtener información sobre cómo obtener una sugerencia de política, consulta uno de los siguientes recursos:

REST

Los permisos que se agregaron en función del aprendizaje automático del recomendador de IAM y no del uso de permisos no se incluyen en la recomendación. En cambio, se enumeran en las estadísticas de la política asociadas a la recomendación. Todos los permisos basados en AA se enumeran en el campo inferredPermissions de la estadística. En este ejemplo, el permiso resourcemanager.projects.get se recomendó en función del aprendizaje automático:

{
  "name": "projects/123456789012/locations/global/insightTypes/google.iam.policy.Insight/insights/07841f74-02ce-4de8-bbe6-fc4eabb68568",
  "description": "4 of the permissions in this role binding were used in the past 90 days.",
  "content": {
    "role": "roles/editor",
    "member": "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com",
    "condition": {
      "expression": "",
      "title": "",
      "description": "",
      "location": ""
    },
    "exercisedPermissions": [
      {
        "permission": "storage.objects.create"
      },
      {
        "permission": "storage.objects.delete"
      },
      {
        "permission": "storage.objects.get"
      },
      {
        "permission": "storage.objects.list"
      }
    ],
    "inferredPermissions": [
      {
        "permission": "resourcemanager.projects.get"
      }
    ],
    "currentTotalPermissionsCount": "5069"
  },
  "lastRefreshTime": "2020-07-12T07:00:00Z",
  "observationPeriod": "7776000s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "associatedRecommendations": [
    {
      "recommendation": "projects/123456789012/locations/global/recommenders/google.iam.policy.Recommender/recommendations/b1932220-867d-43d1-bd74-fb95876ab656"
    }
  ],
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "insightSubtype": "PERMISSIONS_USAGE",
  "etag": "\"d3cdec23cc712bd0\"",
  "severity": "HIGH"
}

Para obtener información sobre cómo obtener una sugerencia de política, consulta uno de los siguientes recursos:

¿Qué sigue?