Aplica los privilegios mínimos con recomendaciones

En esta página, se proporciona una descripción general del recomendador de IAM. El recomendador de IAM te ayuda a aplicar el principio de privilegio mínimo, ya que garantiza que los miembros solo tengan los permisos que en verdad necesitan.

Cómo funciona el recomendador de IAM

IAM usa el recomendador para comparar las asignaciones de funciones con los permisos que cada miembro usó durante los últimos 90 días. Si otorgas una función a un miembro y este no usa todos los permisos de esa función, es probable que el recomendador de IAM te sugiera revocar la función. Si es necesario, el recomendador de IAM también sugerirá funciones menos permisivas como alternativa. 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 las cuentas de servicio administradas por Google, el recomendador de IAM nunca sugerirá un cambio que aumente el nivel de acceso de un miembro.

Además, este servicio usa el aprendizaje automático para identificar permisos en la función actual de un miembro que puede necesitar en el futuro, incluso si el miembro no usó esos permisos en los últimos 90 días.

El recomendador de IAM no aplica recomendaciones de forma automática. En su lugar, debes revisar cada recomendación y, luego, aplicarla o descartarla.

El recomendador de IAM solo evalúa las asignaciones de funciones que se realizaron a nivel de proyecto, carpeta u organización, y que existen desde hace al menos 90 días. No evalúa ninguno de los siguientes elementos:

Permisos que usó cada miembro

Para crear recomendaciones, el recomendador de IAM identifica los permisos que usó cada miembro en los últimos 90 días. Existen varias formas en las que un miembro puede usar un permiso:

  • 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 Google Cloud Console para trabajar con recursos de Google Cloud

    Por ejemplo, en Cloud Console, puedes editar una instancia de máquina virtual (VM) de Compute Engine, lo que requiere permisos diferentes en función de las opciones de configuración que modifiques. Sin embargo, Cloud Console 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 Cloud Console, debes usar el permiso compute.instances.get.

Aprendizaje automático

En algunos casos, es probable que un miembro necesite ciertos permisos que están incluidos en sus funciones actuales, pero que no usó en los últimos 90 días. Para identificar estos permisos, el recomendador de IAM usa un modelo de aprendizaje automático (AA).

El modelo de aprendizaje automático del recomendador de IAM se entrena en función de varios conjuntos de indicadores:

  • Patrones de simultaneidad comunes en el historial observado: el hecho de que un usuario haya usado los permisos A, B y C en el pasado proporciona un indicio de que A, B y C pueden estar relacionados de alguna manera y de que se necesitan en conjunto 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 una función predefinida contiene un conjunto de permisos, esto indica con claridad que esos permisos deban otorgarse en conjunto.

Además de estos indicadores, el modelo también usa la incorporación de palabras para calcular qué tan similares son los permisos en términos de la semántica. 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 relacionados 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 aparezcan con suficiente frecuencia 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.

Prioridad de recomendación

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

Las recomendaciones de IAM pueden tener niveles de prioridad de P2 o P4. Las recomendaciones para las vinculaciones de funciones con funciones básicas (propietario, editor y visualizador) tienen una prioridad de P2. Estas recomendaciones tienen una prioridad alta, ya que las funciones básicas son muy permisivas y la aplicación de recomendaciones para estas funciones puede reducir en gran medida los permisos excesivos. Todas las demás recomendaciones tienen una prioridad de P4.

Puedes ver los niveles de prioridad de las recomendaciones si enumeras las recomendaciones mediante la herramienta de gcloud o la API de REST.

Subtipos de recomendaciones

Las recomendaciones que genera el recomendador de IAM se dividen en varios subtipos diferentes. Si usas la herramienta de gcloud o la API de REST, puedes usar estos subtipos para filtrar tus recomendaciones.

Subtipo Descripción
REMOVE_ROLE Una recomendación para quitar la función del miembro.
REPLACE_ROLE Una recomendación para reemplazar la función del miembro por una función menos permisiva.
SERVICE_AGENT_WITH_DEFAULT_ROLE Una recomendación para reemplazar la función de propietario, editor o visualizador de una cuenta de servicio administrada por Google por la función que se otorgó de forma automática a la cuenta de servicio cuando se la creó. Para obtener más información, consulta Recomendaciones para las cuentas de servicio administradas por Google.
SERVICE_AGENT_WITHOUT_DEFAULT_ROLE Una recomendación para reemplazar la función de propietario, editor o visualizador de una cuenta de servicio administrada por Google por una función menos permisiva. Para obtener más información, consulta Recomendaciones para las cuentas de servicio administradas por Google.

Recomendaciones para las cuentas de servicio administradas por Google

En el caso de las cuentas de servicio administradas por Google, el recomendador de IAM solo proporciona recomendaciones para las vinculaciones de funciones con funciones básicas (propietario, editor o visualizador). Estas recomendaciones se dividen en dos subtipos de recomendaciones.

SERVICE_AGENT_WITH_DEFAULT_ROLE

Durante la creación, a algunas cuentas de servicio administradas por Google se les otorga automáticamente una función de agente de servicio para garantizar que los servicios de Google Cloud funcionen correctamente. Si reemplazas esta función por una función básica (propietario, editor o visualizador), el recomendador de IAM podría sugerir que restablezcas la función de agente de servicio original para quitar el exceso de permisos, incluso si la función de agente de servicio tiene permisos que no se encuentran en la función básica. Estas recomendaciones tienen el subtipo SERVICE_AGENT_WITH_DEFAULT_ROLE. Te ayudan a quitar de forma segura los permisos no usados, al tiempo que se garantiza que todos los servicios de Google Cloud funcionen de forma correcta.

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 a una cuenta de servicio administrada por Google no se le asigna una función de forma automática durante la creación, las recomendaciones para la cuenta de servicio se basan exclusivamente en los permisos que usa la cuenta de servicio. Estas recomendaciones tienen el subtipo SERVICE_AGENT_WITHOUT_DEFAULT_ROLE.

Estadísticas

Las recomendaciones se crean según una o más estadísticas de IAM. Las estadísticas de la política de IAM son resultados basados en el AA sobre el uso de permisos.

A diferencia de las recomendaciones, se pueden generar estadísticas de la política de IAM para las vinculaciones de funciones que existen durante menos de 90 días.

Algunas estadísticas proporcionan evidencia para las recomendaciones. Sin embargo, puedes usar las estadísticas independientemente de las recomendaciones. Para obtener información sobre cómo usar las estadísticas, consulta Usa estadísticas.

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.

Las estadísticas de las políticas de IAM pueden tener un nivel de gravedad de LOW o HIGH. Las estadísticas de las vinculaciones de funciones con funciones básicas (propietario, editor y visualizador) tienen un nivel de gravedad de HIGH. Estas estadísticas tienen una gravedad alta, porque las funciones básicas son muy permisivas, y abordar estadísticas para estas funciones puede reducir en gran medida tus permisos excesivos. Todas las demás estadísticas tienen un nivel de gravedad de LOW.

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 el recomendador de IAM o puedes verlas en tus registros de auditoría de Google Cloud.

Otros tipos de controles de acceso

Algunos servicios de Google Cloud proporcionan controles de acceso independientes de IAM. Por ejemplo, Cloud Storage proporciona listas de control de acceso (LCA), y Google Kubernetes Engine (GKE) es compatible con el control de acceso basado en funciones (RBAC) de Kubernetes.

El recomendador de IAM solo analiza los controles de acceso de IAM. 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 IAM.

Revisa las recomendaciones

Cuando haces clic en una recomendación en Cloud Console, esta muestra una lista de los permisos codificada por colores y símbolos. En esta lista, se indica cómo cambiarán los permisos del miembro si aplicas la recomendación.

Los tipos de permisos asociados con cada color y símbolo son los siguientes:

  • Color gris sin símbolo: Son permisos que se encuentran en la función actual del miembro y en las funciones recomendadas.

  • Color rojo con un signo menos : Son permisos que se encuentran en la función actual del miembro, pero no en las funciones recomendadas, ya que el miembro no las usó en los últimos 90 días.

  • Color verde con un signo más : son permisos que no se encuentran en la función actual del miembro, pero que están en las funciones recomendadas. Este tipo de permiso solo aparece en las recomendaciones para las cuentas de servicio administradas por Google.

  • Color azul con un ícono de aprendizaje automático : Son permisos que se encuentran en la función actual del miembro y en las funciones recomendadas, no porque el miembro los haya usado en los últimos 90 días, sino porque el recomendador determinó mediante el aprendizaje automático que es probable que el miembro necesite esos permisos en el futuro. En esta página, se muestra una situación de ejemplo en la que puede que veas un permiso sugerido por el AA.

Recomendaciones para las funciones personalizadas

Cuando el recomendador de IAM sugiere reemplazos para una función, siempre sugiere una función personalizada existente, o una o más funciones predefinidas, que parece ser la opción más adecuada para las necesidades del miembro.

En el caso de algunas recomendaciones a nivel de proyecto, también proporciona la opción de crear una función personalizada nueva que incluya 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 una función administrada por Google, elige la función predefinida. Google Cloud agrega o quita permisos para actualizar estas funciones con regularidad. Para recibir notificaciones sobre estas actualizaciones, suscríbete al feed de noticias del registro de cambios de los permisos. Si eliges la función predefinida, el miembro seguirá teniendo por lo menos algunos permisos y es posible que tenga una gran cantidad de ellos que no haya usado.

El recomendador de IAM no recomienda funciones personalizadas nuevas en los siguientes casos:

  • La recomendación es para una función a nivel de carpeta u organización.
  • Tu organización ya tiene 100 funciones personalizadas o más.
  • Tu proyecto ya tiene 25 funciones personalizadas o más.

Además, el recomendador de IAM no recomienda más de 5 funciones personalizadas por día en cada proyecto ni más de 15 funciones personalizadas nuevas en toda la organizació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 sugiere revocar la función de navegador de my-user@example.com:

Reemplaza una función existente

A una cuenta de servicio se le otorgó la función de editor (roles/editor) en un proyecto. Esta función básica incluye más de 3,000 permisos y otorga amplio acceso 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 sugiere que revoques la función de editor y la reemplaces por una combinación de otras dos funciones, lo que quita miles de permisos excedentes:

Crea una función personalizada

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, durante los últimos 90 días, my-user@example.com usó solo 4 de esos permisos.

Por lo tanto, el recomendador de IAM sugiere crear una función personalizada que incluya solo los permisos que my-user@example.com usó:

El recomendador de IAM también sugiere otra opción, que consiste en reemplazar la función existente por la función de usuario de Cloud Trace (roles/cloudtrace.user). Esta función predefinida incluye unos pocos permisos menos que la función 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. Esta función básica incluye más de 3,000 permisos y otorga amplio acceso a un proyecto. Sin embargo, durante los últimos 90 días, la cuenta de servicio usó menos de 10 permisos.

El recomendador de IAM sugiere que se revoque la función de editor y se reemplace por la función de administrador de objetos de almacenamiento (roles/storage.objectAdmin), que otorga control total de los objetos en un bucket de Cloud Storage. Mediante este cambio, se quitan miles de permisos no usados.

Esta función incluye varios permisos de la función de editor que la cuenta de servicio no usó en los últimos 90 días. Sin embargo, mediante el aprendizaje automático, el recomendador de IAM predice que la cuenta de servicio necesitará estos permisos en el futuro.

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

Disponibilidad de las recomendaciones

En Cloud Console, en la página IAM, se muestran todos los miembros de tu proyecto y se enumeran las funciones que cada uno tiene en el proyecto. También se indica si hay una recomendación disponible para cada función.

Cuando las recomendaciones están disponibles, Cloud Console muestra un ícono de recomendación disponible en la columna Permisos analizados junto con el uso de permisos del miembro. Este ícono indica que el miembro tiene permisos que es probable que no necesite. Haz clic en el ícono para revisar y aplicar la recomendación.

Es normal que algunas funciones no tengan recomendaciones. En estos casos, la columna Permisos analizados muestra un ícono , o el uso de permisos del miembro sin el ícono Recomendación disponible :

  • En la columna Permisos analizados, se muestra un ícono en los siguientes casos:

    • No hay suficientes datos de uso del miembro. Si el recomendador de IAM no tiene suficiente información sobre cómo el miembro usa Google Cloud, no puede hacer recomendaciones sobre las funciones de ese miembro.

      Es posible que veas recomendaciones para el miembro en el futuro, luego de que el recomendador de IAM recopile más datos.

    • El miembro es una cuenta de servicio administrada por Google y la función no es una función básica. Para las cuentas de servicio administradas por Google, el recomendador de IAM proporciona recomendaciones solo para las funciones básicas (propietario, editor o visualizador). No analiza otras vinculaciones de funciones para las cuentas de servicio administradas por Google.

    • La vinculación de funciones es condicional. Si la vinculación de la función incluye una condición, la función se otorgará solo si se cumplen ciertos permisos. El recomendador de IAM no hace recomendaciones para estas vinculaciones de funciones.

    • Se descartó la recomendación actual para la vinculación de la función o se aplicó y, luego, se revirtió. Si descartas una recomendación de cambio de la función de un miembro, o si la aplicas y la reviertes, Cloud Console no volverá a mostrar esa recomendación.

      En el futuro, si el recomendador de IAM hace una recomendación nueva que sugiere cambiar la función del miembro, Cloud Console mostrará la recomendación nueva incluso si descartaste o revertiste la recomendación anterior.

      Puedes ver las recomendaciones descartadas y revertidas en el historial de recomendaciones. Las recomendaciones descartadas estarán disponibles hasta que la recomendación se vuelva obsoleta. Las recomendaciones revertidas estarán disponibles durante 90 días.

  • En la columna Permisos analizados, se muestra el uso de permisos del miembro sin el ícono Recomendación disponible en los siguientes casos:

    • No hay funciones predefinidas de IAM que sean más apropiadas que la función actual. Si un miembro ya tiene una función predefinida que minimiza sus permisos o que incluye menos permisos que otras funciones predefinidas, el recomendador de IAM no puede recomendar una función predefinida diferente.

      Es posible que seas capaz de reducir los permisos del miembro mediante la creación de una función personalizada para él.

    • Ningún otro miembro tiene la función básica de propietario para el proyecto. En cada proyecto debe haber al menos un miembro que tenga la función de propietario (roles/owner). Si solo un miembro tiene esta función, el recomendador de IAM no recomendará que revoques ni reemplaces la función.

¿Qué sigue?