Skip to main content

Cómo maximizar la seguridad de IAM con los límites de permisos de AWS y Snyk

Escrito por
blog feature snyk iac cli enhancements

26 de junio de 2023

0 minutos de lectura

En el panorama actual de la nube, que evoluciona rápidamente, administrar los permisos y garantizar controles de seguridad sólidos es esencial para las organizaciones que utilizan Amazon Web Services (AWS). AWS Identity and Access Management (IAM) es fundamental para administrar los permisos de acceso a los recursos de AWS. Aunque IAM ofrece un control granular de los permisos, los límites de permisos de AWS IAM brindan seguridad y flexibilidad adicionales para ajustar los controles de acceso.

Un límite de permisos de AWS es un mecanismo de seguridad que restringe los permisos que puede ejercer una entidad principal de IAM (usuarios y roles). Al establecer un límite de permisos, las organizaciones pueden crear un marco de autorización coherente y bien definido que evita la elevación accidental o intencional de privilegios. La configuración de límites de permisos ayuda a mitigar el riesgo de acceso no autorizado a recursos confidenciales y limita el posible impacto de las brechas de seguridad o los errores humanos.

En resumen, los límites de permisos son barreras de protección para los permisos. Sin embargo, no OTORGAN permisos por sí mismos. Por ejemplo, este usuario no tiene permisos, aunque tiene el límite de permisos SecurityAudit:

Resumen del usuario de AWS IAM que muestra el acceso a la consola deshabilitado, una clave de acceso activa, ninguna política adjunta y un límite de permisos SecurityAudit.
Terminal que muestra un comando para listar AWS S3 que falla con un error AccessDenied para el perfil user1.

Beneficios y casos de uso

Los límites de permisos de IAM son especialmente útiles en organizaciones con entornos de IAM distribuidos o complejos. 

Considera los siguientes casos de uso en los que los límites de permisos pueden mejorar la seguridad y la eficiencia operativa:

  1. Equipos centralizados de IAM en la nube: Los límites de permisos permiten que los equipos o las unidades de negocio administren sus propias entidades de IAM y los permisos asociados dentro de los límites definidos por las políticas de seguridad de la organización. Esta delegación de tareas administrativas mejora la agilidad y la autonomía, a la vez que mantiene un marco de seguridad centralizado. El caso de uso principal de los límites de permisos de IAM es el «administrador delegado».

  2. Entornos multiinquilino: En entornos de infraestructura compartida o aplicaciones multiinquilino, los límites de permisos ayudan a evitar que un inquilino acceda a los recursos de otro. Las organizaciones pueden garantizar el aislamiento y mantener límites de seguridad sólidos al definir límites específicos para cada inquilino.

  3. Segregación de funciones: Los límites de permisos son útiles para separar y hacer cumplir las responsabilidades de la organización. Los administradores pueden evitar acciones no autorizadas asignando límites según las funciones laborales, como desarrollo, pruebas o producción.

  4. Acceso de terceros: Los límites de permisos agregan una capa de control al otorgar acceso a terceros, como contratistas o proveedores. Al definir un límite que restrinja su acceso únicamente a los recursos necesarios, las organizaciones pueden mitigar los riesgos asociados con otorgar permisos amplios a terceros.

Cómo se evalúan los límites de permisos

Si una entidad de IAM tiene definido un límite de permisos, este se evalúa casi al final del proceso de evaluación de políticas, como se muestra aquí:

Diagrama de flujo de decisiones sobre permisos de AWS que muestra la evaluación de denegaciones, las políticas SCP de la organización, las políticas basadas en recursos y en identidad, los límites de permisos y las políticas de sesión.
Diagrama que muestra cómo se combinan las políticas de AWS basadas en identidad y en recursos para determinar los permisos totales
Diagrama que muestra la superposición entre una política basada en identidades de AWS y un límite de permisos; la intersección está etiquetada como permisos efectivos

El árbol de decisiones de permisos de IAM es bastante complejo. Ten en cuenta que estos diagramas no incluyen el acceso entre cuentas ni desarrollan por completo las políticas basadas en recursos. Cada columna representa una posible fuente para permitir o denegar permisos a entidades principales de IAM. Los límites de permisos ocupan el quinto nivel de la evaluación y pueden permitir o denegar permisos. 

Una observación importante es que las políticas basadas en recursos pueden anular la intención de los límites de permisos de IAM. Si una política basada en recursos otorga permisos directamente a la entidad principal que realiza la solicitud, una denegación implícita en un límite de permisos no afecta la decisión final. Esto se debe a que las políticas basadas en recursos se evalúan antes que el límite de permisos.

Para mantener una postura de seguridad sólida, las organizaciones deben diseñar y supervisar cuidadosamente las políticas de recursos para que se ajusten a los límites de seguridad previstos. Las auditorías y revisiones periódicas, las herramientas para desarrolladores y la integración de las políticas de permisos con el SCM son necesarios para garantizar que cualquier anulación sea intencional y cumpla con el principio de privilegio mínimo.

Reglas de Snyk

Snyk es la única herramienta de seguridad para infraestructura como código (IaC) y suite de código a la nube que evalúa los límites de permisos de IAM e incluye las siguientes reglas. Las capturas de pantalla de cada regla se obtuvieron al ejecutar la CLI de Snyk.

La entidad principal de IAM no tiene un límite de permisos

Esta política generará hallazgos para los roles y usuarios de IAM que no tengan asignado un límite de permisos. Un equipo de IAM centralizado o distribuido puede saber rápidamente si se están usando límites de permisos. El siguiente fragmento de Terraform genera hallazgos para esta regla, ya que ninguno de los usuarios siguientes tiene uno:

Código de Terraform que define un usuario y un rol de IAM de AWS, así como una política de asunción de rol para el servicio EC2
Salida de la terminal que muestra errores de AWS IAM: «La entidad principal de IAM no tiene un límite de permisos», con el archivo de Terraform y los detalles de la regla de seguridad.

La entidad principal de IAM tiene un límite de permisos demasiado permisivo

Entre los roles y usuarios de IAM con límites de permisos, esta política busca aquellos que podrían ser demasiado amplios. Por ejemplo, un límite de permisos de IAM como el siguiente:

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": “*”,
        "Resource": "*"
    }]
}

En realidad, no establece ningún límite de permisos. Con esta visibilidad adicional, las organizaciones pueden reducir los permisos con mayor eficacia y seguir el principio de privilegio mínimo. El siguiente código de Terraform genera hallazgos para cada entidad principal de IAM cuyos límites de permisos sean demasiado amplios:

Código de Terraform que define un usuario, un rol y una política de IAM con límites de permisos y una acción de IAM que permite todo.
Salida de terminal que muestra hallazgos de gravedad media en AWS IAM por límites de permisos excesivamente permisivos y una recomendación para corregirlos.

La configuración del administrador delegado de IAM es incorrecta

Como se mencionó, los administradores delegados de IAM son el principal caso de uso de los límites de permisos. Esto permite que los equipos centralizados de IAM autoricen a los desarrolladores a crear sus propios usuarios y roles para satisfacer las necesidades del negocio, sin dejar de mantener cierto grado de control sobre las cuentas en las que se crean esos usuarios y roles. Sin embargo, estas nuevas entidades principales también necesitan sus propios límites de permisos. Los equipos de IAM pueden exigirlo mediante una política de IAM configurada correctamente y con condiciones de IAM. Aquí, revisamos los permisos de usuarios y roles que pueden crear otras entidades principales y evaluamos sus políticas de IAM para comprobar si incluyen las condiciones adecuadas. Estos hallazgos permiten detectar posibles elevaciones de privilegios por parte de administradores delegados.

Código de Terraform que define usuarios y roles de IAM de AWS, asociaciones de políticas y un límite de permisos AdministratorAccess
Salida de terminal que advierte que un administrador de IAM delegado está mal configurado y podría permitir una escalación de privilegios.

La política de recursos anula el límite de permisos

Esta regla propuesta de Snyk inspecciona las políticas de recursos para determinar a qué entidades principales de IAM se les concede acceso al recurso en cuestión y si deberían tenerlo según sus políticas basadas en identidad y sus límites de permisos. Esto ayuda a las organizaciones a determinar dónde puede haber una brecha en su postura de seguridad; por ejemplo, cuando las políticas basadas en recursos pueden anular los límites de permisos. Algunos de estos recursos que admiten políticas basadas en recursos son:

  • Buckets de S3

  • Claves de KMS

  • Tablas de DynamoDB

  • Secretos de SecretsManager

Automatiza la gobernanza de seguridad con Snyk

Snyk IaC permite que los desarrolladores protejan sus configuraciones con un motor de políticas unificado que ofrece visibilidad y gobernanza de seguridad coherentes, desde el IDE hasta los entornos de nube en ejecución. Además de los conjuntos de reglas de seguridad de Snyk integrados para los permisos de IAM descritos anteriormente, los equipos pueden definir reglas personalizadas en el lenguaje de consulta Rego de OPA y garantizar el cumplimiento en la nube con conjuntos de reglas asignados a marcos de cumplimiento compatibles con más de 10 marcos. 

Referencias

Protege la infraestructura desde el origen

Snyk automatiza la seguridad y el cumplimiento de IaC en los flujos de trabajo, y detecta recursos con desviaciones de configuración y recursos faltantes.

Publicado en: