¿Cómo utilizo un token MFA para autenticar el acceso a mis recursos de AWS a través de AWS CLI?
Quiero utilizar un token MFA para autenticar el acceso a mis recursos de AWS con la Interfaz de la línea de comandos de AWS (AWS CLI).
Resolución
Es recomendable proteger su cuenta y sus recursos mediante un dispositivo de autenticación multifactor (MFA). Si tiene previsto interactuar con sus recursos mediante AWS CLI cuando utilice un dispositivo MFA, deberá crear una sesión temporal. Si utiliza un dispositivo de hardware MFA, el valor es similar a GAHT12345678. Si utiliza un dispositivo de MFA virtual, puede encontrar el valor al consultar las credenciales de seguridad. Tiene un aspecto similar a arn:aws:iam::123456789012:mfa/user. Para obtener más información, consulte Comprobación del estado de MFA.
Importante:
- La compatibilidad con las claves de seguridad solo está disponible mediante la Consola de administración de AWS. Para obtener más información, consulte Habilitación de una clave de seguridad FIDO (consola). Como solución alternativa, puede utilizar un dispositivo de MFA virtual. Para obtener más información, consulte Activación y administración de dispositivos de MFA virtuales (API de AWS CLI o de AWS).
- Todos los usuarios de IAM deben tener permisos suficientes para crear, ver y deshabilitar los dispositivos de MFA asignados a sus usuarios. También deben tener un dispositivo MDA encendido y asignado a su usuario antes de empezar.
- Si recibe errores al ejecutar comandos de AWS CLI, asegúrese de que utiliza la versión más reciente de AWS CLI.
Ejecute el comando sts get-session-token de AWS CLI y sustituya las variables por información de su cuenta, recursos y dispositivo MFA:
$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token
Se recibe una salida con credenciales temporales y una hora de vencimiento (de forma predeterminada, 12 horas) similar a la siguiente:
{ "Credentials": { "SecretAccessKey": "secret-access-key", "SessionToken": "temporary-session-token", "Expiration": "expiration-date-time", "AccessKeyId": "access-key-id" } }
Nota: Se puede especificar una duración de vencimiento (en segundos) con la opción --duration-seconds en el comando sts get-session-token, donde el valor puede oscilar entre 900 segundos (15 minutos) y 129 600 segundos (36 horas). Si utiliza las credenciales del usuario raíz, el rango es de 900 segundos (15 minutos) a 3600 segundos (1 hora).
Utilizar credenciales temporales con variables de entorno
Puede utilizar credenciales temporales mediante la exportación de sus valores a variables de entorno con estos comandos.
Linux:
export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output
Windows:
set AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output set AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output set AWS_SESSION_TOKEN=example-session-Token-as-in-previous-output
Si configura las variables de entorno, asegúrese de desactivarlas antes de volver a realizar la llamada a get-session-token con estos comandos.
Linux:
unset AWS_ACCESS_KEY_ID unset AWS_SECRET_ACCESS_KEY unset AWS_SESSION_TOKEN
Windows:
set AWS_ACCESS_KEY_ID= set AWS_SECRET_ACCESS_KEY= set AWS_SESSION_TOKEN=
Utilizar credenciales temporales con perfiles con nombre
También puede utilizar perfiles con nombre para especificar los comandos que requieren autenticación MFA. Para ello, edite el archivo de credenciales ubicado en la carpeta .aws del directorio principal del usuario para agregar una nueva configuración de perfil para emitir comandos autenticados por MFA. Este es un ejemplo de configuración del perfil:
[mfa] aws_access_key_id = example-access-key-as-in-returned-output aws_secret_access_key = example-secret-access-key-as-in-returned-output aws_session_token = example-session-Token-as-in-returned-output
Una vez que caduquen las credenciales, ejecute de nuevo el comando get-session-token y, a continuación, exporte los valores devueltos a las variables de entorno o a la configuración del perfil.
Sugerencia: Considere la posibilidad de ejecutar un script o un trabajo cron en segundo plano que compruebe el “vencimiento” del resultado del comando get-session-token y, a continuación, solicite una nueva autenticación.
Si AWS CLI se configura mediante el comando configure, hay una configuración predeterminada con credenciales de usuario permanentes de AWS Identity and Access Management (IAM). Este usuario de IAM puede utilizar comandos que no requieren autenticación de MFA.
Configuración de ejemplo:
.aws/credentials
[default] aws_access_key_id = example-access-Key-for-an-IAM-user aws_secret_access_key = example-secret-access-key-for-IAM-user
Nota: No se puede utilizar el parámetro mfa_serial con credenciales de IAM permanentes.
Si utiliza perfiles para autenticar comandos mediante AWS CLI, especifique la opción --profile seguida del nombre del perfil para comprobar que las llamadas se autentican mediante MFA.
Por ejemplo, este comando utiliza las credenciales de perfil predeterminadas y no se autentica con MFA.
$ aws s3 ls
Importante: Asegúrese de comprender la prioridad de las credenciales para poder comprobar que se utilizan las credenciales correctas al realizar llamadas a la API. Esto se puede hacer mediante el comando GetCallerIdentity.
$ aws s3 ls --profile mfa
También puede solicitar que un usuario se autentique con MFA para llevar a cabo determinadas acciones de la API con las condiciones aws:MultiFactorAuthPresent o aws:MultiFactorAuthAge en una política de IAM.
Información relacionada
Habilitación de dispositivos MFA para los usuarios de AWS
Dispositivo de autenticación multifactor (MFA) perdido o inutilizable
Vídeos relacionados

Contenido relevante
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 2 años