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 a nivel de proyecto con los permisos que cada miembro usó durante los últimos 90 días. Si otorgas una función a nivel de proyecto 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. 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 y que existen desde hace al menos 90 días. No evalúa ninguno de los siguientes elementos:

Los 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.

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 descubrimientos basados en el AA sobre el uso de permisos dentro del proyecto.

Algunas estadísticas se vinculan a recomendaciones y proporcionan evidencia para las recomendaciones asociadas. Sin embargo, puedes usar las estadísticas independientemente de las recomendaciones. Para obtener información sobre cómo usar las estadísticas, consulta Usa las estadísticas de políticas.

Registro 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 se incluyen de forma implícita en la función actual del miembro, pero que se deben incluir de forma explícita en las funciones recomendadas para mantener el nivel de acceso actual.

    Este tipo de permiso solo aparecerá cuando se reemplace una función básica. Algunos servicios de Google Cloud, incluidos Cloud Storage y BigQuery, proporcionan permisos adicionales de forma implícita a cualquier miembro que tenga una función básica. Si un miembro usó estos permisos implícitos en los últimos 90 días, se incluirán los permisos explícitos equivalentes en las funciones recomendadas para que el miembro conserve su nivel de acceso existente. El recomendador de IAM nunca agregará permisos que el miembro aún no tiene.

  • 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 de una función existente, siempre sugiere funciones predefinidas que parecen ser más adecuadas para las necesidades del miembro. En algunos casos, también proporciona la opción de crear una función personalizada nueva que incluya solo los permisos recomendados. Puedes agregar o quitar permisos para modificar la recomendación de la función personalizada.

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:

  • 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 fuyo@example.com se le otorgó una función personalizada en un proyecto. La función personalizada incluye un permiso, iam.serviceAccounts.actAs, que le otorga a fuyo@example.com la capacidad de actuar como una cuenta de servicio. Sin embargo, durante los últimos 90 días, fuyo@example.com no actuó como una cuenta de servicio en ese proyecto.

Por lo tanto, el recomendador de IAM sugiere revocar la función personalizada de fuyo@example.com:

Reemplaza una función existente

A una cuenta de servicio se le otorgó la función de propietario (roles/owner) en un proyecto. Esta función básica incluye más de 2,500 permisos y otorga acceso casi ilimitado a un proyecto. Sin embargo, durante los últimos 90 días, la cuenta de servicio solo usó unos cientos de permisos.

Por lo tanto, el recomendador de IAM sugiere revocar la función de propietario y reemplazarla por una combinación de otras cuatro funciones, lo que quita miles de permisos excesivos:

Crea una función personalizada

Al usuario nelson@example.com se le otorgó la función de visualizador de datos de BigQuery (roles/bigquery.dataViewer) en un proyecto. La función incluye más de 10 permisos, pero, durante los últimos 90 días, nelson@example.com usó solo 3 de esos permisos.

Por lo tanto, el recomendador de IAM sugiere crear una función personalizada que incluya solo los permisos que nelson@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 visualizador de metadatos de BigQuery (roles/bigquery.metadataViewer). Esta función predefinida incluye unos pocos permisos menos que la función de visualizador de datos de BigQuery.

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 2,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 depósito de Cloud Storage. Mediante este cambio, se quitan miles de permisos excesivos.

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 . 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.

Cuando las recomendaciones no están disponibles, Cloud Console muestra el ícono de recomendación no disponible . Para averiguar a qué se debe la falta de disponibilidad, mantén el cursor sobre el ícono.

Es normal que algunos miembros de tu proyecto tengan pocas recomendaciones o ninguna. Existen varios motivos por los que puede que un miembro no tenga una recomendación para una función específica:

  • 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.

  • 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 sus funciones.

    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. Para garantizar que las cuentas de servicio administradas por Google puedan acceder a tus recursos cuando sea necesario, el recomendador de IAM no analiza las funciones que se les otorgaron a ellas.

  • La vinculación de la función 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.

  • 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á revocarla ni reemplazarla.

  • 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 anterior.

    Puedes ver las recomendaciones descartadas y revertidas en el registro 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.

Permisos de IAM obligatorios

En esta sección, se describen los permisos de IAM que necesitas para trabajar con el recomendador de IAM.

Visualiza las recomendaciones

Si deseas ver las recomendaciones del recomendador de IAM, debes tener los siguientes permisos en el proyecto que estás viendo:

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • resourcemanager.projects.getIamPolicy

Para obtener estos permisos y seguir el principio de privilegio mínimo, pídele a tu administrador que te otorgue las siguientes funciones predefinidas:

  • Visualizador de funciones (roles/iam.roleViewer)
  • Visualizador del recomendador de IAM (roles/recommender.iamViewer) o revisor de seguridad de IAM (roles/iam.securityReviewer)

Como alternativa, el administrador puede otorgarte una función diferente que incluya los permisos necesarios, como una función personalizada o una función predefinida con más permisos.

Aplica y descarta las recomendaciones

Si deseas aplicar y descartar las recomendaciones del recomendador de IAM, debes tener los siguientes permisos en el proyecto que administras:

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • recommender.iamPolicyRecommendations.update
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

Para obtener estos permisos y seguir el principio de privilegio mínimo, pídele a tu administrador que te otorgue las siguientes funciones predefinidas:

  • Visualizador de funciones (roles/iam.roleViewer)
  • Administrador del recomendador de IAM (roles/recommender.iamAdmin)
  • Administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin)

Como alternativa, el administrador puede otorgarte una función diferente que incluya los permisos necesarios, como una función personalizada o una función predefinida con más permisos.

Próximos pasos