Para esta entrada del blog seguiremos con la misma temática que en la última, la seguridad en Amazon Web Services, donde dimos varios consejos para la utilización de los Security Groups de AWS. En este caso hablaremos de otra herramienta que Amazon Web Services pone a nuestra disposición para garantizar la seguridad de nuestra infraestructura y su contenido. En este caso os hablaremos de AWS IAM (Identity and Access Management) que como bien dice su nombre se trata de una herramienta para gestionar el acceso de los usuarios a los recursos de Amazon Web Services. Y para entender el gran potencial que tiene esta herramienta deberemos conocer varios conceptos como son los usuarios, grupos, roles y políticas.

Características de los usuarios, grupos y roles IAM

Los usuarios IAM

Son objetos de la cuenta que permiten a un usuario individual acceder al entorno AWS con un conjunto de credenciales. Los permisos se pueden aplicar individualmente a un usuario, pero no es lo recomendable, lo más idóneo es vincular cada usuario a un grupo IAM, y a este grupo sí que se le asignaran los permisos para acceder a los recursos y objetos de AWS.

Los grupos IAM

Son objetos que permiten gestionar de manera eficiente los permisos y el acceso a sus recursos en AWS. Es muy recomendable el uso de grupos IAM para gestionar los permisos y necesario en el caso de que haya un número considerable de usuarios con acceso a recursos AWS. Cada grupo abarcará a distintos usuarios con los mismos permisos, en el caso de que no se asignen explícitamente permisos directamente a los usuarios. El usar grupos de IAM te permite tenerlo bien organizado y ahorrar tiempo, dado que en el caso de que tengas que añadir un nuevo usuario, la asignación de permisos para este será cuestión de segundos ya que únicamente deberás vincularlo al grupo que corresponda. Una buena práctica es crear un grupo para cada departamento (Admins, Developers, etc) dado que todos los integrantes de cada grupo deberán ejercer tareas similares dentro del entorno AWS.

Los roles IAM

Tienen similitudes a los grupos IAM aunque en lugar de proporcionar permisos a usuarios, los roles sirven para conceder permisos a las instancias en cuanto estás son creadas. De esta forma, las aplicaciones que corren en una instancia podrán utilizar estas credenciales para firmar las peticiones, por ejemplo, una aplicación que necesite tener acceso a un bucket de S3.

 

AWS IAM Roles

Autenticación Multifactor

AWS IAM te permite utilizar autenticación multifactor (MFA) para añadir una capa adicional de protección. Esto es recomendable para usuarios IAM con muchos privilegios. De esta forma, el usuario, aparte de introducir su usuario y contraseña, deberá realizar una segunda autenticación. Puede ser generada por un software o por un hardware, el cual puedes conseguir a través de AWS.

Políticas IAM

Las políticas IAM son un documento donde se enumeran las acciones que un usuario, grupo o rol puede realizar sobre los recursos de AWS. A continuación mencionamos algunas de las características de las políticas IAM:

  • Son archivos en formato JSON.
  • Por defecto el permiso está denegado (Deny by default)
  • En el caso de que hayan varias políticas, las más restrictivas son las que prevalecen.
  • El orden de prioridad es el siguiente:
    • Primero Explicit Deny
    • Segundo Explicit Allow
    • Tercero Implicit Deny

Políticas IAM

El campo “Effect” es donde estableces si es una política de permitir o denegar, por lo que son políticas explícitas, tal y como hemos indicado en las características, en caso de denegar, prevalecerá sobre cualquier permitir que se haya creado.

El campo “Action” es donde indicas la llamada a la API a los recursos de AWS. En este campo se pueden indicar varias acciones las cuales se deberán separar por una coma. También se puede incluir todas las acciones posibles escribiendo *. Por ejemplo si tenemos la siguiente acción, estamos indicando que se podrá crear y eliminar un bucket en S3:

“Action”:”s3:CreateBucket”,”s3:DeleteBucket”

Con la siguiente acción, sabemos que podrá realizar cualquier acción sobre S3:

“Action”:”s3:*”

En el campo “Resource” se indica sobre qué recurso de AWS se aplicará la política. En este elemento se deben indicar varios campos:

arn:partition:service:region:account-id:resource

    – Donde “partition” es donde se encuentra el recurso por lo que se indicará que es en aws.
– En “service” se indicará el servicio al que se hace mención, como por ejemplo ec2, dynamodb o s3.
– Para “region” indicaremos la región en la que se encuentra el recurso. En algunos casos no se indicará ninguna región específica.
– En el caso de “account-id” se mencionará el ID de tu cuenta AWS, que para algunos servicios tampoco será necesario rellenar.
– Y el último campo es “resource” donde variará dependiendo del servicio. Por ejemplo si estás creando una política para S3, aquí mencionarás el bucket al que quieres aplicar esta política.

El posterior elemento “Condition” es opcional y es donde se indicarán las condiciones que se deben cumplir para que se aplique la política.

11 prácticas recomendables para un buen uso del servicio IAM

Para acabar os dejamos  las siguientes recomendaciones de Amazon Web Services:

1- Crear usuarios individuales para cada persona que tenga acceso a recursos de AWS.
2- Gestionar los permisos a través de los grupos.
3- Conceder los permisos mínimos a cada grupo.
4- Activar AWS CloudTrail para extraer los logs de todas las llamadas a la API que se han realizado.
5- Configurar una política de contraseñas sólidas.
6- Habilitar MFA (Autenticación multifactor) para los usuarios que tengan altos privilegios.
7- Usar los roles IAM para las instancias de EC2.
8- Usar roles IAM para el acceso compartido.
9- Rotar las credenciales de seguridad con cierta regularidad.
10- Utilizar condiciones en las políticas para restringir el acceso.
11- No utilizar el usuario raíz.