Protección de las claves de acceso - AWS Identity and Access Management

Protección de las claves de acceso

Cualquier persona que tenga su clave de acceso disfrutará del mismo nivel de acceso a los recursos de AWS que usted. Por lo tanto, AWS adopta importantes medidas para proteger las claves de acceso y, en consonancia con nuestro modelo de responsabilidad compartida, también usted debería adoptarlas.

Amplíe las siguientes secciones para obtener orientación que lo ayude a proteger sus claves de acceso.

nota

Puede que su organización tenga políticas y requisitos de seguridad distintos de los descritos en este tema. Las sugerencias proporcionadas aquí pretenden ser directrices generales.

Una de las mejores formas de proteger su cuenta es no tener una clave de acceso para su Usuario raíz de la cuenta de AWS. A menos que necesite tener una clave de acceso de usuario raíz (lo que es poco frecuente), es mejor no generarla. En su lugar, cree un usuario administrativo en AWS IAM Identity Center para las tareas administrativas diarias. Para obtener más información sobre cómo crear un usuario administrativo en IAM Identity Center, consulte Introducción en la Guía del usuario de IAM Identity Center.

Si ya tiene una clave de acceso de usuario raíz para su cuenta, le recomendamos hacer lo siguiente: buscar lugares en las aplicaciones donde utiliza dicha clave actualmente (si procede) y sustituir la clave de acceso de usuario raíz por una clave de acceso de usuario de IAM. Luego deshabilite y elimine la clave de acceso de usuario raíz. Para obtener más información sobre cómo actualizar claves de acceso, consulte Actualización de las claves de acceso.

En muchos casos, no necesita claves de acceso a largo plazo que nunca caducan (como sucede con un usuario de IAM). En su lugar, puede crear roles de IAM y generar credenciales de seguridad temporales. Las credenciales de seguridad temporales se componen de un ID de clave de acceso y una clave de acceso secreta, pero, además, incluyen un token de seguridad que indica cuándo caducan las credenciales.

Las claves de acceso a largo plazo, como las asociadas a los usuarios de IAM y al usuario raíz, siguen siendo válidas hasta que se revocan manualmente. No obstante, las credenciales de seguridad temporales obtenidas a través de roles de IAM y otras características de AWS Security Token Service caducan tras un breve periodo de tiempo. Utilice las credenciales de seguridad temporales para ayudar a reducir el riesgo en caso de se vean expuestas accidentalmente.

Utilice un rol de IAM y credenciales de seguridad temporales en las siguientes situaciones:

  • Tiene una aplicación o scripts de AWS CLI que se ejecutan en una instancia de Amazon EC2. No utilice claves de acceso directamente en su aplicación. No transfiera una clave de acceso a la aplicación, no la integre en la aplicación y no deje que la aplicación lea claves de cualquier origen. En cambio, defina un rol de IAM que tenga los permisos adecuados para su aplicación y lance la instancia Amazon Elastic Compute Cloud (Amazon EC2) con roles para EC2. Al hacerlo, se asocia un rol de IAM a la instancia de Amazon EC2. Esta práctica también habilita a la aplicación para obtener credenciales de seguridad temporales que, a su vez, puede usar para realizar llamadas mediante programación a AWS. AWS SDK y AWS Command Line Interface (AWS CLI) pueden obtener credenciales temporales del rol automáticamente.

  • Debe conceder acceso entre cuentas. Utilice un rol de IAM para establecer la confianza entre cuentas y, a continuación, conceder a los usuarios de una cuenta permisos limitados para acceder a la cuenta de confianza. Para obtener más información, consulte Tutorial de IAM: delegación del acceso entre cuentas de AWS mediante roles de IAM.

  • Tiene una aplicación móvil. No integre una clave de acceso en la aplicación, ni siquiera en el almacenamiento cifrado. En su lugar, utilice Amazon Cognito para administrar identidades de los usuarios en su aplicación. Este servicio permite autenticar a los usuarios mediante Login with Amazon, Facebook, Google o cualquier proveedor de identidad compatible con OpenID Connect (OIDC). A continuación, puede utilizar el proveedor de credenciales de Amazon Cognito a fin de administrar las credenciales que la aplicación utiliza para realizar solicitudes a AWS.

  • Desea utilizar la federación en AWS y su organización admite SAML 2.0. Si trabaja para una organización que tiene un proveedor de identidad compatible con SAML 2.0, configure el proveedor para que use SAML. Puede utilizar SAML para intercambiar información de autenticación con AWS y recuperar un conjunto de credenciales de seguridad temporales. Para obtener más información, consulte Federación SAML 2.0.

  • Desea utilizar la federación en AWS y su organización tiene un almacén de identidades local. Si los usuarios pueden autenticarse dentro de su organización, puede escribir una aplicación que emita credenciales de seguridad temporales para obtener acceso a los recursos de AWS. Para obtener más información, consulte Permitir el acceso del agente de identidades personalizadas a la consola de AWS.

nota

¿Está utilizando una instancia de Amazon EC2 con una aplicación que requiere acceso a los recursos de AWS? Si es así, utilice roles de IAM para EC2.

Si debe crear claves de acceso para el acceso mediante programación a AWS, créelas para los usuarios de IAM y conceda a los usuarios solo los permisos que necesitan.

Tenga en cuenta estas precauciones para ayudar a proteger las claves de acceso de usuario de IAM:

  • No integre las claves de acceso directamente en el código. Los AWS SDK de y las Herramientas de línea de comandos de AWS le permiten colocar las claves de acceso en ubicaciones conocidas para que no tenga que mantenerlas en código.

    Ponga las claves de acceso en una de las siguientes ubicaciones:

    • El archivo de credenciales de AWS. Los SDK de AWS y la AWS CLI utilizan automáticamente las credenciales que se guardan en el archivo de credenciales de AWS.

      Para obtener información acerca de cómo utilizar el archivo de credenciales de AWS, consulte la documentación del SDK. Los ejemplos incluyen Conjunto de AWS credenciales y región en la Guía de desarrollo de AWS SDK for Java y Archivos de configuración y credenciales en la Guía del usuario de AWS Command Line Interface.

      Para almacenar las credenciales para AWS SDK for .NET y AWS Tools for Windows PowerShell, recomendamos utilizar la tienda del SDK. Para obtener más información, consulte Uso de la tienda del SDK en la Guía de desarrollo de AWS SDK for .NET.

    • Variables de entorno. En un sistema multitenencia, opte por las variables de entorno de usuario, en lugar de las variables de entorno de sistema.

      Para obtener más información acerca de cómo utilizar las variables de entorno para almacenar credenciales, consulte Variables de entorno en la Guía del usuario de AWS Command Line Interface.

  • Utilice claves de acceso distintas para las diferentes aplicaciones. Hacer esto le permitirá aislar los permisos y revocar las claves de acceso para aplicaciones individuales si se ven expuesta. Tener claves de acceso separadas para diferentes aplicaciones también genera entradas distintas en los archivos de registro de AWS CloudTrail. Esta configuración hace más sencillo determinar qué aplicación realizó acciones concretas.

  • Actualice las claves de acceso cuando sea necesario. Si existe el riesgo de que la clave de acceso se vea comprometida, actualícela y elimine la anterior. Para obtener más información, consulte Actualización de las claves de acceso

  • Elimine las claves de acceso no utilizadas. Si un usuario deja la organización, elimine el usuario de IAM correspondiente, de tal forma que ya no pueda obtener acceso a los recursos. Para saber cuándo se utilizó por última vez una clave de acceso, utilice la API GetAccessKeyLastUsed (comando de AWS CLI: aws iam get-access-key-last-used).

  • Utilice las credenciales temporales y configure la autenticación multifactor para las operaciones de API más confidenciales. Con las políticas de IAM, puede especificar qué operaciones de API puede llamar un usuario. En algunos casos, es posible que quiera la seguridad adicional de exigir a los usuarios que se autentiquen con MFA de AWS antes de permitirles llevar a cabo acciones especialmente confidenciales. Por ejemplo, es posible que tenga una política que permita a un usuario realizar las acciones de Amazon EC2 RunInstances, DescribeInstances y de StopInstances. Sin embargo, es posible que quiera restringir una acción destructiva, como TerminateInstances y asegurarse de que los usuarios solo pueden realizar esta acción si se autentican mediante un dispositivo MFA de AWS. Para obtener más información, consulte Acceso seguro a la API con MFA.

Puede acceder a un conjunto limitado de servicios y características de AWS mediante la aplicación móvil de AWS. La aplicación móvil le ayuda a dar soporte a la respuesta frente a incidentes mientras está en movimiento. Para obtener más información y descargar la aplicación, consulte Aplicación móvil de la consola de AWS.

Puede iniciar sesión en la aplicación móvil con la contraseña de la consola o las claves de acceso. Como práctica recomendada, no utilice las clave de acceso de usuario raíz. En su lugar, le recomendamos encarecidamente que, además de utilizar una contraseña o un bloqueo biométrico en su dispositivo móvil, cree un usuario de IAM específicamente para administrar los recursos de AWS mediante la aplicación móvil. Si pierde su dispositivo móvil, puede eliminar el acceso del usuario de IAM.

Para iniciar sesión con las teclas de acceso (aplicación móvil)
  1. Abra la aplicación en su dispositivo móvil.

  2. Si es la primera vez que agrega una identidad al dispositivo, elija Add an identity (Agregar una identidad) y, a continuación, elija Access keys (Teclas de acceso).

    Si ya ha iniciado sesión con otra identidad, elija el icono de menú y elija Switch identity (Cambiar identidad). A continuación, elija Sign in as a different identity (Iniciar sesión con una identidad diferente) y, a continuación, Access keys (Teclas de acceso).

  3. En la página Access keys (Claves de acceso) introduzca su información:

    • ID de clave de acceso: introduzca el ID de clave de acceso.

    • Clave de acceso secreta: introduzca la clave de acceso secreta.

    • Nombre de identidad: introduzca el nombre de la identidad que aparecerá en la aplicación móvil. No es necesario que coincida con su nombre de usuario de IAM.

    • PIN de identidad: cree un número de identificación personal (PIN) que utilizará en los futuros inicios de sesión.

      nota

      Si habilita la biometría para la aplicación móvil de AWS, se le pedirá que utilice su huella digital o reconocimiento facial para la verificación en lugar del PIN. Si la biometría falla, es posible que se le pida el PIN en su lugar.

  4. Elija Verify and add keys (Verificar y agregue claves).

    Ahora puede acceder a un conjunto selecto de sus recursos mediante la aplicación móvil.

En las siguientes secciones, se proporciona información sobre cómo configurar los AWS SDK y la AWS CLI para utilizar claves de acceso:

Auditoría de las claves de acceso

Puede revisar las claves de acceso de AWS en su código para determinar si las claves proceden de una cuenta de su propiedad. Puede transferir un ID de clave de acceso mediante el comando de la AWS CLI aws sts get-access-key-info o la operación de la API de AWS GetAccessKeyInfo.

Las operaciones de AWS CLI y de la API de AWS devuelven el ID de la cuenta de Cuenta de AWS a la que pertenece la clave de acceso. Los ID de clave de acceso que comienzan por AKIA son credenciales a largo plazo para un usuario de IAM o un Usuario raíz de la cuenta de AWS. Los ID de clave de acceso que comienzan por ASIA son credenciales temporales que se crean mediante operaciones de AWS STS. Si la cuenta de la respuesta le pertenece, puede iniciar sesión como usuario raíz y revisar las claves de acceso de usuario raíz. A continuación, puede extraer un informe de credenciales para saber qué usuario de IAM es el propietario de las claves. Para saber quién solicitó las credenciales temporales para una clave de acceso ASIA, consulte los eventos de AWS STS en los registros de CloudTrail.

Por motivos de seguridad, puede revisar los registros de AWS CloudTrail para saber quién realizó una acción en AWS. Puede utilizar la clave de condición de sts:SourceIdentity en la política de confianza de rol para exigir a los usuarios que especifiquen una identidad cuando asuman un rol. Por ejemplo, puede requerir que los usuarios de IAM especifiquen su propio nombre de usuario como su identidad de origen. Esto puede ayudarle a determinar qué usuario realizó una acción específica en AWS. Para obtener más información, consulte sts:SourceIdentity.

Esta operación no indica el estado de la clave de acceso. La clave podría estar activa, inactiva o eliminada. Es posible que las claves activas no tengan permisos para realizar una operación. Proporcionar una clave de acceso eliminada podría devolver un error que indicara que la clave no existe.