AWS Identity Access Management (IAM): Servicio de identificación

AWS Identity Access Management (IAM): Servicio de identificación

¿En qué consiste el servicio IAM (Identity and Access Management)?

Para entender como AWS administra la identidad y el acceso a los servicios tenemos que entender primero los conceptos de Usuarios, Grupos y Roles.

Vista general de IAM

IAM por sus siglas en inglés (Identity and Access Management) es decir Administrador de Accesos e Identidades, es la herramienta de AWS para el uso y manejo de:

  • Usuarios.
  • Grupos.
  • Políticas de acceso.
  • Roles.
  • Credenciales de usuario.
  • Políticas de uso de contraseñas.
  • Multi-factor authentication (MFA).
  • Llaves de acceso de la API.

Cuando se va a crear una cuenta de AWS, por default se va a crear una cuenta root en AWS que tiene acceso completo a todos los recursos de AWS para tu cuenta.

Cualquier nuevo usuario que se crea a partir de este punto no tiene ningún tipo de acceso, al menos hasta que se le asigne alguno por parte del root. Esto es así porque AWS opera a través de una premisa, la de asignar la menor cantidad de permisos necesarios para cada cuenta que se crea. Por ejemplo si alguien requiere manejar instancias de EC2 pero no requiere acceso a las bases de datos, solo debería tener acceso a crear dichas instancias y ningún otro permiso que no este asociado a sus actividades.

¿Cuáles son las mejores prácticas al momento de usar IAM?

Las mejores prácticas son guias que nos recomiendan la configuración del ambiente que pueda ser segura y al mismo tiempo eficiente para cumplir con nuestros objetivos. Para IAM algunas prácticas sugeridas son:

  • Crear un link de inicio de sesión personalizado para acceder a la consola de AWS.
  • Eliminar las llaves de acceso del root de forma que sea a través de un usuario y no del root que se administren los recursos.
  • Habilitar Multi-Factor Authentication, que fuerza al usuario a utilizar un dispositivo para validar su acceso.
  • Utiliza grupos para asignar permisos, esto previene que tengas que crear/asignar permisos para cada usuario.
  • Crea políticas para el manejo de contraseñas, de forma que se eviten por ejemplo el uso de contraseñas muy sencillas y se force al usuario a cambiar de contraseña con cierta frecuencia.

Multi-Factor Authentication (MFA)

Esta modalidad permite habilitar seguridad adicional sobre la cuenta del root o cualquier otra cuenta creada para la gestión de la consola de AWS. En resumen asocia cada cuenta con un generador de tokens de 6 dígitos que rotan conforme avanza el tiempo. Este código generado cada ves que el usuario intenta iniciar una sesión provee una capa adicional de seguridad para aquellos casos en el que el nombre de usuario y contraseña se encuentren comprometidos. Este tipo de identificación es muy utilizado por los bancos, así que posiblemente ya estés familiarizado con el. En algunas ocasiones este código no es generado a través de una app sino provisto mediante un mensaje SMS o por correo electrónico. Una app muy popular para la generación de estos códigos es Google Authenticator.

El flujo de identificación en AWS es el siguiente:

  • El usuario ingresa un nombre de usuario y contraseña.
  • AWS pide a continuación que se ingrese el código generado por el dispositivo (MFA).
  • Si tanto credenciales como el código son los apropiados, se autoriza el acceso a la consola.

¿Cuáles son las mejores prácticas para el manejo de los usuarios en IAM?

  • No utilizar la cuenta del root para propósitos diarios.
  • Si se requiere tener acceso total (admin) frecuentemente, crear una cuenta para este propósito asignándole el policy AdministratorAccess.

¿Cuáles son las mejores prácticas para el manejo de los grupos en IAM?

  • Un grupo en IAM es un conjunto de usuarios IAM. Los grupos le permiten asignar múltiples permisos para múltiples usuarios al mismo tiempo.
  • Los grupos son una forma conveniente y eficiente de manejar las cuentas y los permisos. Por ejemplo si un usuario cambia de departamento o de rol dentro de una organización, es mas sencillo cambiarlo de un grupo que reasignar todos los permisos que este cambio requiera.

¿Cuáles son las mejores prácticas al momento de utilizar políticas de contraseñas?

Una política de contraseñas determina la forma y el vencimiento que un usuario debe seguir cuando crea o modifica una contraseña, entre las propiedades de dicha contraseña encontramos:

  • Longitud de la contraseña.
  • Tipos de caracteres requeridos (mayúsculas, minúsculas, números, símbolos).
  • Vencimiento de la contraseña.
  • Imposibilidad de reutilizar contraseñas previamente utilizadas.
  • Permisos del usuario para cambiar su propia contraseña.
  • Requerir al usuario cambiar su contraseña después de su primer inicio de sesión.