¿Cuál es la forma correcta de configurar las credenciales de AWS para trabajar con MFA y poder asumir roles como perfiles nombrados a través de AWS Toolkit en VScode?
Cuando se utiliza un archivo de credenciales de AWS simple como este en Ubuntu Linux con el archivo de credenciales: ~/.aws/credentials
[leigh.m] # vamos a llamar a esta cuenta ID: 1000 por simplicidad
AWS_ACCESS_KEY_ID=some_access_key_id
AWS_SECRET_ACCESS_KEY=some_secret_access_key
La herramienta AWS Toolkit en VSCode funciona perfectamente y puedo acceder a los recursos de AWS a través de VSCode.
Sin embargo, necesito asumir roles entre cuentas (con un perfil raíz de origen que controla el acceso a las otras cuentas a través de roles) que tienen todos MFA configurado.
Mi archivo ~/.aws/config que facilita esto se ve así:
[profile my-assumed-role-1] # digamos que esta cuenta tiene la ID: 2000
role_arn=arn:aws:iam::2000:role/AdminRole
source_profile=leigh.m
role_session_name=my-assumed-role-1-session-name
mfa_serial=arn:aws:iam::1000:mfa/leigh.m
duration_seconds=3600
Esta configuración funciona perfectamente bien ahora y puedo asumir el rol, por ejemplo a través de la CLI puedo listar los buckets en la cuenta 2000 pasando ese perfil, así: aws s3api list-buckets –profile my-assumed-role-1
Sin embargo, cuando intento acceder a ese perfil nombrado a través de AWS Toolkit en VSCode, obtengo el mensaje de error en los registros de AWS Toolkit:
El perfil de Credenciales Compartidas leigh.m no es válido. No será utilizado por la herramienta.
No se pudo conectar con “perfil:my-assumed-role-1”: El perfil leigh.m no es un perfil de credenciales válido: El perfil leigh.m no es compatible con la Toolkit.
Parece que está buscando un perfil ‘leigh.m’, así que he tratado de agregar a ~/.aws/config esta sección:
[profile leigh.m]
mfa_serial=arn:aws:iam::1000:mfa/leigh.m
region=eu-west-1
output=json
También intenté no utilizar el archivo de configuración y colocar todo en el archivo de credenciales (como sugiere aquí: https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/mfa-credentials.html)
Pero aún así, el mismo problema. ¿Algo que haya pasado por alto?
(Revisé si había alguna pregunta ya en S/O sobre la configuración correcta de las credenciales de AWS para AWS Toolkit y MFA (ya que mis archivos de credenciales y configuración de AWS funcionan correctamente para todos los demás requisitos), esta fue la única pregunta hace ~5 años: https://stackoverflow.com/questions/41878308/visual-studio-aws-toolkit-with-multifactor-authentication pero no respondió y no hay preguntas/respuestas sobre AWS Toolkit, MFA y asumir roles con perfiles nombrados)
davy.ai
Parece que el problema está relacionado con el nombre de perfil que está siendo utilizado por AWS Toolkit. El toolkit parece estar buscando un perfil con el nombre
leigh.m
, el cual no es un perfil de credenciales válido para la configuración de rol asumido.Para resolver esto, puedes intentar crear un nuevo perfil en tu archivo
~/.aws/config
con el nombremy-assumed-role-1
(o cualquier otro nombre que prefieras) en lugar deleigh.m
. Actualiza la propiedadsource_profile
en el nuevo perfil para usar tu perfilleigh.m
. Por ejemplo:Luego intenta acceder al perfil nombrado
my-assumed-role-1
a través de AWS Toolkit en VSCode.También puedes intentar usar el archivo de credenciales compartidas de AWS (
~/.aws/credentials
) para tu configuración de MFA en lugar del archivo de configuración. La sintaxis para agregar información de MFA es ligeramente diferente en el archivo de credenciales. Por ejemplo:Puedes generar el token de sesión utilizando el comando
aws sts get-session-token
después de ingresar el código MFA.Esperemos que una de estas soluciones ayude a resolver el problema que estás enfrentando.