¿Qué son las ami principals?
El primer concepto a entender son los principals. Un principal es una entidad de IAM que permite interactuar con los recursos de AWS. Un principal puede ser temporal o permanente, y puede representar un humano o una aplicación.
¿Cuáles son los tipos de principals que existen?
Existen tres tipos de principals: root, user y roles/temporary security tokens.
El principal Root
Cuando se crea una cuenta de AWS, se inicia con un usuario que tiene todos los permisos de acceso a los recursos de AWS. Este es llamado root. Mientras tenga una cuenta AWS, este usuario persistirá. Este usuario puede ser utilizado en la consola o de forma programática.
El usuario root es similar al root de Linux o Administrador de Windows, tiene todos los privilegios en la cuenta, incluyendo el cancelar la propia cuenta. Se recomienda enfáticamente que no se use el root para las tareas de diario, incluyendo aquellas que sean administrativas. En lugar de ello cree un usuario administrador para estos propósitos.
Los principals Usuarios
Los usuarios se crean a través de IAM para representar individuos o aplicaciones. Se pueden crear diferentes usuarios para cada miembro de operaciones de su equipo de tal forma que ellos puedan interactuar con la consola y usar CLI. También es posible crear usuarios dev, test y de producción para aplicaciones que necesiten acceso a los servicios de AWS.
Los usuarios pueden ser creados por principals que tengan privilegios administrativos y no tienen un periodo de expiración; sin entidades permanentes que existen hasta que el administrador los elimine.
Los usuarios son una forma de implementar el principio least privilege que consiste en permitir a una persona o proceso interactuar con los recursos para realizar exactamente la tarea que ellos necesitan y nada mas. Esto se logra a través de la granularidad de las políticas definidas por los permisos.
Los principals Roles y Tokens de Seguridad Temporales.
Los roles y tokens de seguridad temporales son muy importantes para el uso avanzado de IAM.
Los roles se utilizan para garantizar privilegios a los actores específicos durante un tiempo específico. Estos actores se pueden autenticar con AWS o mediante un sistema externo. Cuando asumen un rol, AWS les proporciona un token de seguridad temporal (temporary security token) desde el AWS Security Token Service (STS) que el actor puede utilizar para hacer uso de los servicios de la nube. Para solicitar un token, es necesario especificar el tiempo de vida del token, que va de 15 minutos a 36 horas.
¿Cuáles son los casos de uso de los roles y tokens de seguridad?
- Amazon EC2 Roles: Brindan permisos a las aplicaciones ejecutándose en instancias de EC2.
- Cross-Account Access: Brindan permisos a los usuarios de otras cuentas de AWS.
- Federation: Brinda permisos a los usuarios autenticados a través de un sistema externo.
¿Qué son los Amazon EC2 Roles?
Al crear un IAM rol se pueden habilitar los permisos necesarios para hacer uso de recursos desde una instancia, por ejemplo acceder a S3. Cuando la instancia se lanza, el role es asignado a la instancia, es decir EC2 Roles. Cuando la aplicación esta ejecutándose en la instancia, utiliza la API para acceder al bucket de S3, asume el rol asignado a la instancia y obtiene un token temporal que es enviado a la API, permitiendo así que la aplicación pueda realizar llamadas para tener acceso al bucket de S3 sin tener que realizar un proceso de autenticación. Esto elimina cualquier necesidad de almacenar una llave de acceso en archivo de configuración dentro de la instancia. Ademas, como la API usa un acceso al token que es temporal, no hay necesidad de realizar una rotación de credenciales.
¿Para qúe se utiliza el Acceso a traves otras cuentas (Cross-Account Access)?
El Cross-Account Access es otro caso de uso común para los roles, el cual permite garantizar acceso otras cuentas (ya sean propias o de terceros). Entonces estos podrán hacer uso de los recursos como si fueran parte de la organización.
¿Qué es la Gobernancia (Federation)?
Muchas organizaciones tienen un repositorio de identidad fuera de AWS, y podrían aprovechar dicho repositorio para propósitos de autenticación y no tener que replicar todas estas cuentas dentro de IAM.
¿Cuáles son los proveedores de autenticación externos (Identity Providers IdP) con los que IAM se puede integrar?
- OpenID Connect (IODC) para web identities como Facebook, Google o Login con Amazon.
- Security Assertion Markup Language 2.9 (SAML) para gobernancia interna como Active Directory o LDAP.
En todos los casos, la gobernancia funciona regresando tokens temporales asociales a un role para el IdP para hacer llamadas al API.
¿Cuáles son las características de los diferentes principals?
- Root
- No esta limitado.
- Existe de manera permanente.
- User
- El acceso es controlado por policies.
- Durable.
- Puede ser removido por un administrador.
- Roles/Tokens de seguridad temporales.
- El acceso es controlado por una policy temporal.
- Expiran después de un intervalo de tiempo especifico.