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 roles
El recomendador de IAM genera las recomendaciones de roles. El recomendador de IAM es uno de los recomendadores que ofrece el 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 mediante las estadísticas de políticas. Las estadísticas de políticas son resultados 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 estadísticas de políticas destacan qué permisos en una vinculación de función determinada usó realmente una principal.
El recomendador de IAM genera estadísticas de políticas mediante la comparación de la cantidad total de permisos de una principal con los que esta usó en los últimos 90 días. Si la vinculación de función se creó hace menos de 90 días, el recomendador de IAM observa el uso de permisos de la principal en el tiempo transcurrido desde que se creó la vinculación.
Una 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 permisoiam.roles.list
. Cuando llamas al métodoroles.list
, usas el permisoiam.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, que requiere permisos diferentes según la configuración que cambies. Sin embargo, la consola de Google Cloud también muestra la configuración existente, que 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
.
El recomendador de IAM también usa el aprendizaje automático para identificar permisos en la función actual de una principal que esta pueda necesitar en el futuro, incluso si la principal no usó esos permisos recientemente. Si deseas obtener más información, consulta Aprendizaje automático para estadísticas de políticas en esta página.
No se generan estadísticas de políticas para todas las vinculaciones de funciones de IAM. Para obtener más información sobre por qué una vinculación de función puede no tener estadísticas de política, consulta Disponibilidad en esta página.
Si quieres 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 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 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 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.
Cómo se generan las recomendaciones de funciones
Si las estadísticas de una política indican que una principal no necesita todos los permisos en su función, el recomendador de IAM evalúa la función para determinar si se puede revocar o si hay otra función que se adapte mejor. Si la función se puede revocar, el recomendador de IAM genera una recomendación de función para revocarla. Si hay otra función que se adapte mejor, el recomendador de IAM genera una recomendación de función para reemplazarla por una sugerida. 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, una recomendación de función 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 función no se generan para todas las vinculaciones de funciones de IAM. Para obtener más información sobre por qué una vinculación de función puede no tener una recomendación de función, consulta Disponibilidad en esta página.
Período de observación
El período de observación de una recomendación de función es la cantidad de días de datos de uso de permisos en los que se basa la recomendación.
El período máximo de observación para las recomendaciones de funciones es de 90 días. Esto significa que el recomendador de IAM usa, como máximo, los 90 días más recientes de datos de uso de permisos para generar recomendaciones de funciones.
El recomendador de IAM tampoco comenzará a generar recomendaciones de funciones hasta que tenga 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 funciones a nivel de proyecto, puedes establecerlo de forma manual en 30 o 60 días. Para obtener más detalles, consulta Configura la generación de recomendaciones de funciones. Si estableces el período mínimo de observación en menos de 90 días, recibirás recomendaciones antes, pero es posible que la precisión de las recomendaciones se vea afectada.
Si una vinculación de función es anterior al período de observación mínimo, pero posterior a 90 días, el período de observación es el ciclo de vida de la vinculación de función.
Nuevas funciones personalizadas en las recomendaciones de funciones
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 parecen ser más adecuadas 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 una función predefinida o personalizada existente, es posible que también te recomiende crear una función personalizada nueva a nivel de 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 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. Cuando eliges la función predefinida, la principal sigue teniendo al menos algunos permisos y, posiblemente, una gran cantidad de ellos, que no usó.
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.
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 movimiento lateral mediante la identificación de vinculaciones de funciones que se ajustan a los siguientes criterios:
- La principal en la vinculación de función 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 una vinculación de función cumple con estos criterios, el recomendador de IAM genera una estadística de movimiento lateral para la vinculación. Esta estadística contiene información sobre las capacidades de uso de identidad de la cuenta de servicio, incluso qué cuentas de servicio puede usar y si utilizó algún permiso de uso de identidad en los últimos 90 días.
El recomendador de IAM no usa las estadísticas de movimiento lateral por sí solos para generar recomendaciones de funciones nuevas. Esto se debe a que, si una cuenta de servicio usa sus permisos de uso de identidad, el recomendador de IAM no puede sugerir que se quiten de manera segura. Sin embargo, si una recomendación de función sugiere quitar estos permisos porque no se están usando, 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 funciones no se generan para cada vinculación de funciones. Lee las siguientes secciones a fin de comprender las vinculaciones de funciones para las 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
A fin de que el recomendador de IAM genere estadísticas de políticas para una vinculación de función, se deben cumplir los siguientes requisitos:
La política de permisos de IAM que contiene la vinculación de función debe estar vinculada a uno de los siguientes recursos:
- Bucket de Cloud Storage
- Proyecto
- Carpeta
- Organización
El recomendador de IAM solo genera estadísticas de políticas para las funciones que se otorgan en estos recursos.
La vinculación de función no debe tener una condición. El recomendador de IAM no genera estadísticas de políticas para las vinculaciones de funciones condicionales.
El recomendador de IAM puede tardar hasta 10 días en generar estadísticas de políticas para una nueva vinculación de función.
Las estadísticas de políticas existentes se actualizan a diario en función del uso reciente de tus permisos. Sin embargo, los datos en los que se basan las estadísticas de las políticas suelen tener un retraso de hasta dos días respecto del uso real.
Disponibilidad de estadísticas de movimiento lateral
Las estadísticas de movimientos laterales se generan para las vinculaciones de funciones en los siguientes recursos:
- Organizaciones
- Carpetas
- Proyectos
- Cuentas de servicio
Disponibilidad de la recomendación de función
A fin de que el recomendador de IAM genere una recomendación de función para una vinculación de función, se deben cumplir los siguientes requisitos:
- La vinculación de función debe tener una estadística de políticas asociada. Esta estadística de la política sirve como base para la recomendación.
- La vinculación de la función debe ser anterior al período de observación mínimo. 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 configurarlo de forma manual en 30 o 60 días. Para obtener más detalles, consulta Configura la generación de recomendaciones de funciones.
- Si la principal en la vinculación de la función es una cuenta de servicio administrada por Google, la vinculación de la función debe ser propietario, editor o visualizador. El recomendador de IAM no genera recomendaciones de funciones para cuentas de servicio administradas por Google con otras funciones. Para obtener más información, consulta Recomendaciones de funciones para cuentas de servicio administradas por Google.
Si una vinculación de función es demasiado nueva o no tiene estadísticas, la columna Permisos analizados de la consola de Google Cloud muestra el ícono
.En algunos casos, el recomendador de IAM no genera recomendaciones de funciones para una vinculación de funciones, aunque sea lo suficientemente antigua y tenga una estadística asociada. Esto puede suceder por los siguientes motivos:
No hay funciones predefinidas de IAM que sean más apropiadas que la función actual. Si una principal 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 de la principal si creas una función personalizada para la principal.
La principal es una cuenta de servicio administrada por Google y la función no es un rol básico. El recomendador de IAM solo genera recomendaciones de funciones para las cuentas de servicio administradas por Google si estas tienen un rol básico (propietario, editor o visualizador). Para obtener más información, consulta Recomendaciones de funciones para cuentas de servicio administradas por Google.
Ningún otro miembro 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 esta función, el recomendador de IAM no recomendará que la revoques o reemplaces.
En estos casos, en la columna Permisos analizados de la consola de Google Cloud, se muestra el uso de permisos de la principal, pero no tiene el ícono de Recomendación disponible
.Las recomendaciones de funciones existentes se actualizan a diario en función del uso reciente de los permisos. Sin embargo, los datos en los que se basan las recomendaciones de funciones suelen retrasarse hasta dos días con respecto al uso real.
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 P0
(prioridad más alta) a P4
(prioridad más baja).
La prioridad de una recomendación de función depende de la vinculación de función para la que es la recomendación:
Detalles de la recomendación | Prioridad | Explicación |
---|---|---|
Recomendaciones para las vinculaciones de roles que otorgan acceso público a buckets de Cloud Storage | P1 |
Cualquier persona puede acceder a los buckets de acceso público desde Internet. Si quitas el acceso público, tendrás más control sobre tus datos. |
Recomendaciones para las vinculaciones de roles que otorgan funciones básicas (propietario, editor y visualizador) en un proyecto, una carpeta o una organización. | P2 |
Las funciones básicas son muy permisivas, y aplicar recomendaciones para estas funciones puede reducir en gran medida los permisos otorgados en exceso. |
Recomendaciones que no otorgan acceso público ni roles básicos | P4 |
Aunque estas recomendaciones te ayudan a reducir el exceso de permisos, no quitan el acceso público ni las funciones básicas muy permisivas, lo que las convierte en una prioridad menor. |
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 las estadísticas de políticas depende de la vinculación de función para la que corresponde la estadística:
Detalles de la estadística | Gravedad | Explicación |
---|---|---|
Estadísticas de las vinculaciones de roles que otorgan acceso público a buckets de Cloud Storage | CRITICAL |
Cualquier persona puede acceder a los buckets de acceso público desde Internet. Si quitas el acceso público, tendrás más control sobre tus datos. |
Estadísticas de las vinculaciones de roles que otorgan roles básicos (propietario, editor y visualizador) en un proyecto, una carpeta o una organización | HIGH |
Las funciones básicas son muy permisivas, y abordar las estadísticas para estas funciones puede reducir en gran medida la cantidad de permisos otorgados en exceso. |
Estadísticas que no otorgan acceso público ni roles básicos | LOW |
Aunque estas estadísticas destacan el exceso de permisos, no implican acceso público ni funciones básicas muy permisivas, lo que las convierte en una prioridad menor. |
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. Si deseas obtener información sobre cómo revisar, aplicar y descartar recomendaciones de funciones, consulta Revisa y aplica recomendaciones de funciones para proyectos, carpetas y organizaciones o Revisa y aplica recomendaciones de funciones para buckets de Cloud Storage.
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 historial de recomendaciones o puedes 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 CLI de gcloud o la API de REST, puedes usar estos subtipos para filtrar las recomendaciones.
Subtipo | Descripción |
---|---|
REMOVE_ROLE |
Una recomendación para quitar el rol de la principal a nivel de proyecto, de carpeta o de organización. |
REMOVE_ROLE_STORAGE_BUCKET |
Una recomendación para quitar el rol a nivel de bucket de la principal. |
REPLACE_ROLE |
Una recomendación para reemplazar el rol a nivel de proyecto, de carpeta o de la organización de la principal por un rol menos permisivo. El reemplazo recomendado podría ser una función personalizada existente o una o más funciones predefinidas. |
REPLACE_ROLE_CUSTOMIZABLE |
Se recomienda reemplazar el rol de la principal por uno nuevo personalizado que sea menos permisivo que su rol actual. |
REPLACE_ROLE_STORAGE_BUCKET |
Una recomendación para reemplazar el rol a nivel de bucket de la principal por un rol menos permisivo. El reemplazo recomendado podría ser una función personalizada existente o una o más funciones predefinidas. |
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 la vinculación de funciones con roles básicos (propietario, editor o visualizador).
Las recomendaciones para las cuentas de servicio administradas por Google se dividen en dos subtipos de recomendación.
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 un rol básico (propietario, editor o visualizador), el recomendador de funciones 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 el rol básico. 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
.
Recomendaciones de roles en Security Command Center
Si tienes el nivel Premium de Security Command Center, puedes ver algunos subtipos de recomendaciones de funciones como hallazgos en Security Command Center. Cada subtipo está asociado con 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 funciones en Security Command Center, consulta el recomendador de IAM en la documentación de Security Command Center.
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 función que sugiere que revoques la función de navegador de my-user@example.com
:
Consola
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.
Esta rol básico 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 genera una recomendación de función que 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 no utilizados:
Consola
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 función que sugiere que crees una función personalizada que incluya solo los permisos que my-user@example.com
usó:
Consola
gcloud
El subtipo REPLACE_ROLE_CUSTOMIZABLE
indica que el recomendador de IAM recomienda crear una función personalizada con los permisos usados. Para ver los permisos usados, obtén la información de la 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 una función personalizada con los permisos usados. Para ver los permisos usados, obtén la información de la 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"
}
El recomendador de funciones 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 rol básico incluye más de 3,000 permisos y otorga amplio acceso 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 mediante el aprendizaje automático.
El recomendador de IAM genera una recomendación de función que sugiere que revoques la función de editor y la reemplaces por la función de administrador de objetos de Storage (roles/storage.objectAdmin
), que otorga control total de los objetos en un bucket de Cloud Storage. Este cambio quita miles de permisos no utilizados, que incluye tanto los permisos que usó la cuenta de servicio como los que esta última podría necesitar en el futuro:
Consola
El recomendador de IAM usa un ícono de aprendizaje automático
resourcemanager.projects.get
en función del aprendizaje automático:
gcloud
Los permisos que se agregaron según el aprendizaje automático del recomendador de IAM en lugar del uso de permisos no se enumeran en la recomendación. En cambio, se enumeran en las estadísticas de políticas asociadas con la recomendación. Todos los permisos basados en el AA se enumeran en el campo inferredPermissions
de la estadística. En este ejemplo, se recomendó el permiso resourcemanager.projects.get
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 estadísticas de políticas, consulta Revisa las estadísticas de políticas.
REST
Los permisos que se agregaron según el aprendizaje automático del recomendador de IAM en lugar del uso de permisos no se enumeran en la recomendación. En cambio, se enumeran en las estadísticas de políticas asociadas con la recomendación. Todos los permisos basados en el AA se enumeran en el campo inferredPermissions
de la estadística. En este ejemplo, se recomendó el permiso resourcemanager.projects.get
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 estadísticas de políticas, consulta Revisa las estadísticas de políticas.
¿Qué sigue?
- Descubre las prácticas recomendadas para usar las recomendaciones de funciones.
- Revisa y aplica recomendaciones de funciones para proyectos, carpetas y organizaciones.
- Revisa y aplica tus recomendaciones de funciones para los buckets de Cloud Storage
- Obtén más información sobre el recomendador.
- Conoce las funciones predefinidas y las funciones personalizadas de IAM.