es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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)

Tags:  , ,

Answer

  1. Avatar for 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 nombre my-assumed-role-1 (o cualquier otro nombre que prefieras) en lugar de leigh.m. Actualiza la propiedad source_profile en el nuevo perfil para usar tu perfil leigh.m. Por ejemplo:

    [profile my-assumed-role-1]
    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
    

    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:

    [my-assumed-role-1]
    aws_access_key_id = ACCESS_KEY
    aws_secret_access_key = SECRET_KEY
    aws_session_token = SESSION_TOKEN
    

    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.

Comments are closed.