SEC02-BP02 Uso de credenciales temporales
Al llevar a cabo cualquier tipo de autenticación, es mejor utilizar credenciales temporales en lugar de credenciales de larga duración para reducir o eliminar riesgos. Por ejemplo, que las credenciales se divulguen, compartan o roben de forma inadvertida.
Resultado deseado: para reducir el riesgo de credenciales a largo plazo, utilice credenciales temporales siempre que sea posible para las identidades humanas y de máquinas. Las credenciales de larga duración entrañan muchos riesgos. Por ejemplo, podrían subirse a repositorios públicos y quedar expuestas. Al utilizar credenciales temporales, reducirá enormemente las posibilidades de que las credenciales se vean comprometidas.
Patrones comunes de uso no recomendados:
-
Desarrolladores que utilizan claves de acceso de larga duración de usuarios de IAM en lugar de obtener credenciales temporales de la CLI mediante federación.
-
Desarrolladores que incrustan claves de acceso de larga duración en su código y suben ese código a repositorios de Git públicos.
-
Desarrolladores que incrustan claves de acceso de larga duración en aplicaciones móviles que luego se ponen a disposición de todo el mundo en las tiendas de aplicaciones.
-
Usuarios que comparten claves de acceso de larga duración con otros usuarios, o empleados que abandonan la empresa con claves de acceso de larga duración aún en su poder.
-
Utilizar claves de acceso de larga duración para identidades de máquinas cuando podrían utilizarse credenciales temporales.
Nivel de riesgo expuesto si no se establece esta práctica recomendada: alto
Guía para la implementación
Utilice credenciales de seguridad temporales en lugar de credenciales de larga duración para todas las solicitudes de la API y la AWS CLI. Las solicitudes de la API y la CLI a los servicios de AWS deben, en casi todos los casos, firmarse mediante claves de acceso de AWS. Estas solicitudes pueden firmarse con credenciales temporales o de larga duración. La única vez que debe utilizar credenciales de larga duración, también conocidas como claves de acceso a largo plazo, es si utiliza un usuario de IAM o un usuario raíz de la Cuenta de AWS. Al federarse en AWS o asumir un rol de IAM mediante otros métodos, se generan credenciales temporales. Incluso cuando accede a la AWS Management Console mediante credenciales de inicio de sesión, se generan credenciales temporales para que pueda hacer llamadas a los servicios de AWS. Hay pocas situaciones en las que necesite credenciales de larga duración, y casi todas las tareas se pueden llevar a cabo mediante credenciales temporales.
Evitar el uso de credenciales de larga duración en favor de credenciales temporales debería acompañarse de una estrategia de reducción del uso de usuarios de IAM a favor de la federación y los roles de IAM. Aunque en el pasado se han utilizado usuarios de IAM tanto para identidades humanas como de máquinas, ahora recomendamos no utilizarlos para evitar los riesgos que conlleva el uso de claves de acceso de larga duración.
Pasos para la implementación
Identidades humanas
Para identidades de la plantilla, como las de empleados, administradores, desarrolladores, operadores y clientes:
-
Debería basarse en un proveedor de identidades centralizado y exigir que los usuarios humanos utilicen la federación con un proveedor de identidades para acceder a AWS con credenciales temporales. La federación de los usuarios se puede efectuar mediante la federación directa a cada Cuenta de AWS
o con AWS IAM Identity Center y el proveedor de identidades que prefiera. La federación tiene una serie de ventajas con respecto a los usuarios de IAM, además de eliminar las credenciales de larga duración. Los usuarios también pueden solicitar credenciales temporales desde la línea de comandos para la federación directa o mediante IAM Identity Center. Esto significa que hay pocos casos de uso que requieran usuarios de IAM o credenciales de larga duración para los usuarios.
Para identidades de terceros:
-
Al conceder a terceros, como a proveedores de software como servicio (SaaS), acceso a los recursos en su Cuenta de AWS, puede utilizar roles entre cuentas y políticas basadas en recursos. Además, puede utilizar el flujo de concesión de credenciales de cliente de Amazon Cognito OAuth 2.0 para clientes o socios de SaaS B2B.
Las identidades de usuario que acceden a los recursos de AWS a través de navegadores web, aplicaciones de cliente, aplicaciones móviles o herramientas de línea de comando interactivas:
-
Si necesita conceder a las aplicaciones para consumidores o clientes acceso a los recursos de su AWS, puede utilizar grupos de identidades de Amazon Cognito o grupos de usuarios de Amazon Cognito para proporcionar credenciales temporales. Los permisos de las credenciales se controlan mediante los roles de IAM que cree. También puede definir un rol de IAM independiente con permisos limitados para los usuarios invitados que no estén autenticados.
Identidades de máquina
En el caso de las identidades de máquina, puede que necesite utilizar credenciales de larga duración. En estos casos, puede exigir que las cargas de trabajo utilicen credenciales temporales con roles de IAM para acceder a AWS.
-
Para Amazon Elastic Compute Cloud
(Amazon EC2), puede utilizar roles para Amazon EC2. -
AWS Lambda
permite configurar un rol de ejecución de Lambda para conceder al servicio permisos para llevar a cabo acciones de AWS mediante credenciales temporales. Existen muchos otros modelos similares para que los servicios de AWS concedan credenciales temporales con roles de IAM. -
En el caso de los dispositivos de IoT, puede utilizar el proveedor de credenciales de AWS IoT Core para solicitar credenciales temporales.
-
Para los sistemas en las instalaciones o los que se ejecutan fuera de AWS que necesitan acceso a los recursos de AWS, puede utilizar IAM Roles Anywhere.
Hay escenarios en los que no se admiten credenciales temporales, pero requieren el uso de credenciales de larga duración. En estas situaciones, audite y rote las credenciales periódicamente y rote las claves de acceso periódicamente. En el caso de las claves de acceso de los usuarios de IAM muy restringidas, tenga en cuenta las siguientes medidas de seguridad adicionales:
-
Otorgue permisos muy restringidos:
-
Cumpla con el principio de privilegio mínimo (sea específico en cuanto a las acciones, los recursos y las condiciones).
-
Plantéese la opción de conceder al usuario de IAM solo la operación AssumeRole para un rol específico. En función de la arquitectura local, este enfoque ayuda a aislar y proteger las credenciales de IAM a largo plazo.
-
-
Limite las fuentes de red y las direcciones IP permitidas en la política de confianza de roles de IAM.
-
Supervise el uso y configure alertas para detectar permisos no utilizados o mal uso (mediante alarmas y filtros de métricas de AWS CloudWatch Logs).
-
Exija el cumplimiento de los límites de los permisos (las políticas de control de servicios [SCP]) y los límites de permisos se complementan entre sí: las SCP son muy generales, mientras que los límites de los permisos son más precisos).
-
Implemente un proceso para aprovisionar y almacenar de forma segura (en un almacén local) las credenciales.
Entre las opciones para los escenarios que requieren credenciales a largo plazo también se incluyen:
-
Crear su propia API de venta de tokens (mediante Amazon API Gateway).
-
En situaciones en las que deba utilizar credenciales de larga duración o para credenciales distintas de las claves de acceso de AWS (como los inicios de sesión en bases de datos), puede utilizar un servicio diseñado para gestionar los secretos, como AWS Secrets Manager
. Secrets Manager simplifica la administración, la rotación y el almacenamiento seguro de los secretos cifrados. Muchos servicios de AWS admiten la integración directa con Secrets Manager.
Para obtener más información sobre cómo cambiar las credenciales de larga duración, consulte cómo rotar las claves de acceso.
Recursos
Prácticas recomendadas relacionadas:
Documentos relacionados:
Videos relacionados: