Quiero usar un token de autenticación multifactor (MFA) con la Interfaz de la línea de comandos de AWS (AWS CLI) para autenticar el acceso a mis recursos de AWS.
Descripción breve
Puedes activar hasta ocho dispositivos de MFA para cada usuario de AWS Identity and Access Management (IAM).
Nota: La activación de la MFA para el usuario raíz afecta únicamente a las credenciales del usuario raíz. Cada identidad de IAM de tu cuenta de AWS tiene su propia configuración de MFA.
Para activar la MFA, consulta Proteja el inicio de sesión del usuario raíz con autenticación multifactor (MFA) y Autenticación multifactor en IAM.
Resolución
Para usar la AWS CLI para autenticarte en los recursos de AWS, utiliza la acción de la API GetSessionToken para obtener credenciales temporales.
Nota: Si se muestran errores al ejecutar comandos de la AWS CLI, consulta Troubleshooting errors for the AWS CLI (Solución de problemas de la AWS CLI). Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
ARN del dispositivo de MFA
Para obtener el ARN del dispositivo de MFA, sigue estos pasos:
- Abre la consola de IAM.
- En el panel de navegación, selecciona Usuarios y, a continuación, selecciona tu usuario de IAM.
- En la página Resumen, selecciona la pestaña Credenciales de seguridad.
- En Dispositivo de MFA asignado, copia el ARN del dispositivo de MFA.
Uso de la AWS CLI para obtener credenciales temporales
Ejecuta el comando get-session-token:
aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token
Resultado del ejemplo:
{
"Credentials": {
"SecretAccessKey": "secret-access-key",
"SessionToken": "temporary-session-token",
"Expiration": "expiration-date-time",
"AccessKeyId": "access-key-id"
}
}
Importante: Asegúrate de que el número de serie, el token y el ARN del dispositivo de MFA sean correctos, o podrías recibir un mensaje de error similar al siguiente:
“An error occurred (AccessDenied) when calling the GetSessionToken operation: MultiFactorAuthentication failed, unable to validate MFA code. Please verify your MFA serial number is valid and associated with this user”.
Para autenticar el dispositivo de hardware de MFA, el número de serie suele estar en la parte posterior del dispositivo y el valor es similar a GAHT12345678. Para autenticar el dispositivo virtual de MFA, el valor es similar a arn:aws:iam::123456789012:mfa/user.
Nota: La AWS CLI admite la autenticación de MFA solo con un dispositivo de MFA virtual o de hardware. La AWS CLI no admite la autenticación MFA con la clave de seguridad FIDO.
Para obtener más información, consulta Asignar dispositivos de MFA en la AWS CLI o API de AWS.
Uso de credenciales temporales para exportar sus valores a variables de entorno
Ejecuta los siguientes comandos correspondientes a tu sistema operativo (SO):
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
Antes de volver a ejecutar el comando get-session-token, ejecuta los siguientes comandos para anular las variables de entorno:
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=
Uso de credenciales temporales con perfiles con nombre
También puedes usar perfiles con nombre para especificar los comandos que requieren la autenticación MFA. En el archivo credentials que se encuentra en la carpeta .aws del directorio principal del usuario, añade una nueva configuración de perfil para emitir comandos autenticados mediante la MFA.
Ejemplo de configuración de 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
Cuando caduquen las credenciales, vuelve a ejecutar el comando get-session-token y, a continuación, exporta los valores devueltos a las variables de entorno o a la configuración del perfil.
Se recomienda ejecutar un script o un trabajo cron en segundo plano que compruebe la caducidad en la salida del comando get-session-token. Si el token de MFA ha caducado, asegúrate de que el script o el trabajo cron soliciten volver a autenticarse.
Cuando utilices perfiles con nombre para autenticarte, especifica la opción —profile seguida del nombre del perfil para comprobar que las llamadas a la API utilicen la MFA para autenticarse.
Información relacionada
¿Cómo restablezco un dispositivo de MFA perdido o roto para mi usuario de IAM o usuario raíz de la cuenta de AWS?
¿Cómo aplico la autenticación MFA para los usuarios de IAM que utilizan la Consola de administración de AWS y la AWS CLI?