En mi anterior post vimos como instalar la consola de AWS correctamente mediante phyton.
Ahora que ya la tenemos, vamos a ver en este post cómo configurar nuestras credenciales de AWS para usarlas por defecto cuando operemos con la consola de AWS.
Podemos guardar las opciones de configuración y las credenciales que utilizamos con frecuencia en archivos que son mantenidos por el AWS CLI. Los archivos se dividen en secciones a las que se puede hacer referencia por el nombre. Se llaman perfiles. A menos que se especifique otra cosa, el CLI utiliza la configuración que se encuentra en el perfil denominado default. Para utilizar una configuración diferente, podemos crear y hacer referencia a perfiles adicionales.
¿Dónde se almacenan las opciones de configuración?
El AWS CLI almacena las credenciales especificadas con aws configure en un archivo local denominado credentials en la carpeta .aws bajo el directorio principal. El resto de opciones de configuración especificadas con aws configure se guardan en un archivo local denominado config, que también se almacena en la carpeta .aws. La ubicación del directorio principal varía en función del sistema operativo, pero se hace referencia a él mediante las variables de entorno %UserProfile%
en Windows y $HOME
o ~
en los sistemas basados en Unix.
Creando un usuario y obteniendo las credenciales
- Iniciamos sesión en la consola de AWS
- En servicios, seleccionamos IAM
- Seleccionamos la opción de usuarios y creamos un nuevo usuario siguiendo los siguientes pasos:
1.- Elegimos un nombre de usuario. En este ejemplo vamos a crear un usuario administrador para que tenga acceso a todos los servicios de AWS.
En el tipo de acceso vamos a seleccionar Acceso mediante programación ya que vamos a usar unas credenciales para usar los servicios.
2.- A continuación estableceremos los permisos que tendrá el usuario. Podemos añadir el usuario a un grupo previamente creado, copiar los permisos de otro usuario o añadir directamente los permisos que queramos. En este caso, al ser un usuario administrador, en el buscador escribimos admin y buscamos la política AdministratorAccess la cual proporciona acceso a todos los servicios.
3.- En la opción de etiquetas, al ser opcional, no haremos nada y continuaremos al siguiente paso.
4.- En el último paso, nos mostrará un resumen del usuario que vamos a crear. Si todo está correcto, pulsamos sobre Crear usuario
5.- Una vez creado el usuario, se nos mostrará el ID de clave de acceso y la clave de acceso secreta.
¡IMPORTANTE!
Es importante guardarnos estas claves ya que no las vamos a poder recuperar en otro momento (aunque si podríamos generar unas nuevas). Amazon nos da la posibilidad de descargar estas credenciales en formato .csv para tenerlas siempre a nuestra disposición.
Configuración de las credenciales y las opciones
El AWS CLI utiliza dos archivos para almacenar la información confidencial de las credenciales (en ~/.aws/credentials) separada de las opciones de configuración menos confidenciales (en ~/.aws/config) aunque también es posible especificar una ubicación no predeterminada para el archivo config estableciendo la variable de entorno AWS_CONFIG_FILE en otra ruta local.
Partiendo de lo dicho, crearemos estos dos archivos en la ruta indicada y lo configuraremos de la siguiente forma.
.aws/credentials
En este archivo es donde tenemos que indicar el nombre de usuario y las credenciales de acceso obtenidas al crear el usuario de manera que quedaría de la siguiente forma:
.aws/config
En este archivo definiremos la configuración del usuario, por ejemplo la región donde se encuentra nuestros servicios.
El último paso sería indicarle al sistema cual es el usuario que queremos que se use por defecto (en estos archivos podemos tener configurados tantos usuarios como necesitemos).
Para ello, en el archivo credentials vamos a indicar cual sería de la siguiente manera:
También podríamos realizar este paso estableciendo una variable de entorno de la siguiente forma:
AWS_DEFAULT_PROFILE: especifica el nombre del perfil de el CLI con las credenciales y las opciones que se van a utilizar. Puede ser el nombre de un perfil almacenado en un archivo credentials o config, o el valor default para utilizar el perfil predeterminado. Si especifica esta variable de entorno, se invalidará el comportamiento de utilizar el perfil llamado [default] en el archivo de configuración.
Con esto, ya tendríamos listo nuestro entorno de Windows 10 para trabajar con el cliente de AWS.
Roles de IAM
Hemos creado un usuario administrador el cual tiene acceso a todos los recursos de AWS. Pero, ¿que pasaría si tenemos un proyecto en el cual trabaja un grupo de personas y no queremos que todos sean administradores?
Para ello, en AWS existen los roles de usuario.
Un rol de IAM es una identidad de IAM con permisos específicos que podemos crear en nuestra cuenta. Un rol de IAM es similar a un usuario de IAM, ya que se trata de una identidad de AWS con políticas de permisos que determinan lo que la identidad puede hacer o no en AWS. Sin embargo, en lugar de asociarse exclusivamente a una persona, la intención es que cualquier usuario pueda asumir un rol que necesite. Además, un rol no tiene asociadas credenciales a largo plazo estándar, como una contraseña o claves de acceso. En su lugar, cuando se asume un rol, este proporciona credenciales de seguridad temporales para la sesión de rol.
- Los usuarios de IAM de la cuenta que usan la consola de IAM pueden cambiar a un rol para utilizar temporalmente los permisos del rol en la consola. Los usuarios renuncian a sus permisos originales y adoptan los permisos asignados al rol. Cuando el usuario deja de utilizar el rol, sus permisos originales se restablecen.
- Una aplicación o un servicio que AWS ofrece (como Amazon EC2) puede asumir un rol solicitando credenciales de seguridad temporales para un rol con el que realizar solicitudes programadas a AWS. Un rol se utiliza de este modo para no tener que compartir ni mantener credenciales de seguridad a largo plazo (por ejemplo, mediante la creación de un usuario de IAM) para todas las entidades que requieran acceso a un recurso.
Creación y configuración de roles
En nuestro ejemplo, vamos a crear un usuario con unos permisos predeterminados y un rol con otros permisos diferentes para que el usuario pueda usarlo.
Primero, se hemos mencionado anteriormente, vamos a crear un usuario que solo va a tener permisos para usar el servicio de DynamoDB (base de datos de AWS)
Una vez creado el usuario, crearemos el rol correspondiente para que el usuario pueda tener permisos de administrador.
Para ello, vamos al servicio IAM de AWS y en el panel de la izquierda seleccionamos la opción Roles y seguidamente pulsamos sobre Crear un rol:
En el Tipo de entidad de confianza vamos a seleccionar Servicio de AWS ya que, como hemos mencionado, vamos a proporcionar permisos para que el usuario tenga permisos de administrador:
Seleccionamos EC2 como servicio que usará el rol:
A continuación, en los permisos, seleccionamos AdministratorAccess:
En el paso de añadir etiquetas lo dejamos como está y en el siguiente paso, le damos nombre a nuestro rol y creamos el rol:
Una vez creado, podemos verlo en la lista de roles. Pinchamos sobre él para ver la información ya que necesitamos el ARN del rol.
Configurando el archivo .aws/config para usar el rol
Ahora que ya tenemos el rol creado, vamos a configurar este usuario para que, aún teniendo solo permisos para el servicio de DynamoDB, pueda tener acceso a todos los servicios de AWS.
Para ello, abrimos el archivo config y lo dejaremos de la siguiente manera:
Con esto, al usar AWS CLI con las credenciales de dynamodb-user (configurando el usuario como default en el archivo credentials) tendríamos permisos de administrador y por tanto podríamos usar todos los servicios de AWS.
Conclusión
Si has seguido todos los pasos, habrás conseguido configurar correctamente del AWS CLI y realizar el Switching Role, que es como se denomina el cambio de rol en AWS.
Espero que haya sido de ayuda y que compartáis para que pueda ser de ayuda a otros.
Si tienes alguna duda o sugerencia, no dudes en dejar tu comentario.
Si te ha gustado, ¡síguenos en Twitter para estar al día de nuevas entregas!