Configuración de la autenticación de IAM Identity Center con la AWS CLI - AWS Command Line Interface

Configuración de la autenticación de IAM Identity Center con la AWS CLI

En este tema se proporcionan instrucciones sobre cómo configurar laAWS CLI con AWS IAM Identity Center (IAM Identity Center) para recuperar las credenciales que permiten ejecutar comandos de la AWS CLI. Existen principalmente dos formas de autenticar a los usuarios con IAM Identity Center para que obtengan las credenciales que permiten ejecutar los comandos de AWS CLI a través del archivo config:

  • (Recomendada) Configuración del proveedor de token de SSO.

  • Configuración heredada no actualizable.

Para obtener información sobre el uso de autenticación de portador, que no utiliza ID de cuenta ni rol, consulte Configuración para utilizar la AWS CLI con CodeCatalyst en la Guía del usuario de Amazon CodeCatalyst.

nota

Para ver un proceso guiado sobre el uso de IAM Identity Center con los comandos de la AWS CLI, consulte Tutorial: uso de IAM Identity Center para ejecutar comandos de Amazon S3 en la AWS CLI.

Temas

Requisitos previos

Siga las instrucciones en Introducción en la Guía del usuario de AWS IAM Identity Center. Este proceso activa IAM Identity Center, crea un usuario administrativo y agrega un conjunto apropiado de permisos de privilegio mínimo.

nota

Cree un conjunto de permisos que aplique los permisos de privilegio mínimo. Le recomendamos que utilice el conjunto de permisos predefinido PowerUserAccess, a menos que su empleador haya creado un conjunto de permisos personalizado para este fin.

Salga del portal e inicie sesión de nuevo para ver las Cuentas de AWS, los detalles sobre el acceso programático y las opciones para Administrator o PowerUserAccess. Seleccione PowerUserAccess cuando trabaje con el SDK.

Inicie sesión en AWS a través del portal de su proveedor de identidades. Si su administrador de la nube le ha concedido permisos PowerUserAccess (desarrollador), verá las Cuentas de AWS a las que tiene acceso y su conjunto de permisos. Junto al nombre de su conjunto de permisos, verá las opciones para acceder a las cuentas de forma manual o programática mediante ese conjunto de permisos.

Las implementaciones personalizadas pueden dar lugar a experiencias diferentes, como distintos nombres de conjuntos de permisos. Si no está seguro de qué configuración de permisos debe utilizar, contacte con su equipo de TI para obtener ayuda.

Inicie sesión en AWS a través del portal de acceso de AWS. Si su administrador de la nube le ha concedido permisos PowerUserAccess (desarrollador), verá las Cuentas de AWS a las que tiene acceso y su conjunto de permisos. Junto al nombre de su conjunto de permisos, verá las opciones para acceder a las cuentas de forma manual o programática mediante ese conjunto de permisos.

Contacte con su equipo de TI para obtener ayuda.

Tras acceder a IAM Identity Center, recopile la información de IAM Identity Center realizando lo siguiente:

  1. En el portal de acceso de AWS, seleccione el conjunto de permisos que utiliza para el desarrollo y seleccione el enlace Claves de acceso.

  2. En el cuadro de diálogo Obtener credenciales, elija la pestaña que coincida con su sistema operativo.

  3. Elija el método de credenciales del centro de identidades de IAM para obtener los valores SSO Start URL y SSO Region que necesita para ejecutar aws configure sso. Para obtener información sobre qué ámbitos se deben registrar, consulte Ámbitos de acceso de OAuth 2.0 en la Guía del usuario del IAM Identity Center.

Configurar el perfil con el asistente de aws configure sso

Para configurar un perfil de IAM Identity Center en la AWS CLI:
  1. En el terminal que prefiera, ejecute el comando aws configure sso.

    IAM Identity Center

    Cree un nombre de sesión, proporcione su URL de inicio de IAM Identity Center, la Región de AWS que aloja el directorio de IAM Identity Center y el ámbito del registro.

    $ aws configure sso SSO session name (Recommended): my-sso SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]: us-east-1 SSO registration scopes [None]: sso:account:access
    Legacy IAM Identity Center

    Sáltese el nombre de sesión y proporcione su URL de inicio de IAM Identity Center y la región de AWS que aloja el directorio del Identity Center.

    $ aws configure sso SSO session name (Recommended): SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]:us-east-1
  2. La AWS CLI intenta abrir su navegador predeterminado para el proceso de inicio de sesión de su cuenta de IAM Identity Center. El proceso puede pedirle que permita que la AWS CLI acceda a los datos. Dado que la AWS CLI se ha creado con el SDK para Python, los mensajes de permiso pueden contener variaciones del nombre botocore.

    • Si la AWS CLI no puede abrir el navegador, se muestran las instrucciones para iniciar manualmente el proceso de inicio de sesión.

      If the browser does not open or you wish to use a different device to authorize this request, open the following URL: https://device.sso.us-west-2.amazonaws.com/ Then enter the code: QCFK-N451
  3. Seleccione la cuenta de AWS que desee utilizar de la lista que aparece. Si solo tiene autorización para usar una única cuenta, la AWS CLI selecciona esa cuenta automáticamente y omite la petición.

    There are 2 AWS accounts available to you. > DeveloperAccount, developer-account-admin@example.com (123456789011) ProductionAccount, production-account-admin@example.com (123456789022)
  4. Seleccione el rol de IAM que desee utilizar en la lista que aparece. Si solo hay un rol disponible, la AWS CLI selecciona automáticamente ese rol y omite la petición.

    Using the account ID 123456789011 There are 2 roles available to you. > ReadOnly FullAccess
  5. Especifique el formato de salida predeterminado, la Región de AWS predeterminada a la que se enviarán los comandos y un nombre para el perfil. Si especifica default como nombre de perfil, este perfil pasa a ser el perfil predeterminado. En el ejemplo siguiente, el usuario introduce una región predeterminada, un formato de salida predeterminado y el nombre del perfil.

    CLI default client Region [None]: us-west-2<ENTER> CLI default output format [None]: json<ENTER> CLI profile name [123456789011_ReadOnly]: my-dev-profile<ENTER>
  6. Un mensaje final describe la configuración del perfil completada. Ahora puede utilizar este perfil para solicitar credenciales. Utilice el comando aws sso login para solicitar y recuperar realmente las credenciales necesarias para ejecutar comandos. Para obtener instrucciones, consulte Inicio de sesión en IAM Identity Center.

Estos pasos dan como resultado la creación de una sección sso-session y un perfil con un nombre en el archivo config similar al siguiente:

IAM Identity Center
[profile my-dev-profile] sso_session = my-sso sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2 output = json [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start sso_registration_scopes = sso:account:access
Legacy IAM Identity Center
[profile my-dev-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-east-1 sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2 output = json

Configurar solo la sección sso-session con el asistente de aws configure sso-session

nota

Esta configuración no es compatible con IAM Identity Center heredado.

El comando aws configure sso-session solo actualiza las secciones sso-session del archivo ~/.aws/config. Ejecute el comando aws configure sso-session y proporcione su URL de inicio de IAM Identity Center y la región de AWS que aloja el directorio del Identity Center.

$ aws configure sso-session SSO session name: my-sso SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]: us-east-1 SSO registration scopes [None]: sso:account:access

Configuración manual mediante el archivo config

La información de configuración de IAM Identity Center se almacena en el archivo config y se puede editar con un editor de texto. Para añadir manualmente compatibilidad con IAM Identity Center a un perfil con nombre, debe añadir claves y valores al archivo config.

La sección sso-session del archivo config se usa para agrupar las variables de configuración para adquirir los tokens de acceso SSO, que luego se pueden usar para adquirir credenciales de AWS. Se utilizan las siguientes configuraciones:

Defina una sección sso-session y asóciela a un perfil. Los ajustes de sso_start_url y sso_region se deben definir dentro de la sección sso-session. Normalmente, sso_account_id y sso_role_name deben establecerse en la sección profile para que el SDK pueda solicitar las credenciales de SSO.

En el siguiente ejemplo se configura el SDK para que solicite credenciales de SSO y admita la actualización automática de tokens:

[profile dev] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start

Esto también permite reutilizar las configuraciones de sso-session en varios perfiles:

[profile dev] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole [profile prod] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole2 [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start

No obstante, sso_account_id y sso_role_name no son necesarios para todos los escenarios de configuración de token de SSO. Si su aplicación solo utiliza servicios de AWS que admiten la autenticación de portador, no son necesarias las credenciales de AWS tradicionales. La autenticación de portador es un esquema de autenticación HTTP que utiliza tokens de seguridad denominados tokens de portador. En este escenario, no se necesitan sso_account_id ni sso_role_name. Consulte la guía individual de su servicio de AWS para determinar si admite la autorización de token de portador.

Además, los ámbitos de registro pueden configurarse como parte de sso-session. El alcance es un mecanismo de OAuth 2.0 para limitar el acceso de una aplicación a la cuenta de un usuario. Una solicitud puede pedir uno o varios ámbitos y el token de acceso emitido a la solicitud se limitará a los ámbitos concedidos. Estos ámbitos definen los permisos cuya autorización se solicita para el cliente OIDC registrado y los tokens de acceso recuperados por el cliente. El siguiente ejemplo establece sso_registration_scopes para proporcionar acceso para enumerar cuentas/roles:

[sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start sso_registration_scopes = sso:account:access

El token de autenticación se almacena en caché en el disco en el directorio sso/cache con un nombre de archivo basado en el nombre de la sesión.

nota

La actualización automática de tokens no se admite con la configuración no actualizable heredada. Le recomendamos que utilice la configuración del token de SSO.

Para agregar manualmente compatibilidad con IAM Identity Center a un perfil con nombre, debe agregar las siguientes claves y valores a la definición del perfil en el archivo config.

Puede incluir otras claves y valores válidos en el archivo .aws/config. A continuación, se muestra un ejemplo de perfil de IAM Identity Center:

[profile my-sso-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-west-2 sso_account_id = 111122223333 sso_role_name = SSOReadOnlyRole region = us-west-2 output = json

Para ejecutar comandos, primero debe utilizar Inicio de sesión en IAM Identity Center para solicitar y recuperar las credenciales temporales.

Para obtener más información sobre los archivos de config y ‎credentials, consulte ‎Opciones de los archivos de configuración y credenciales en la AWS CLI.

Inicio de sesión en IAM Identity Center

nota

El proceso de inicio de sesión puede pedirle que permita que la AWS CLI acceda a sus datos. Dado que la AWS CLI se ha creado con el SDK para Python, los mensajes de permiso pueden contener variaciones del nombre botocore.

Para recuperar y almacenar en caché un conjunto de credenciales de IAM Identity Center, ejecute el siguiente comando de la AWS CLI para abrir su navegador predeterminado y comprobar que ha iniciado sesión en IAM Identity Center.

$ aws sso login --profile my-dev-profile SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request. Successfully logged into Start URL: https://my-sso-portal.awsapps.com/start

Sus credenciales de IAM Identity Center se guardan en la caché y la AWS CLI las utiliza para recuperar de forma segura las credenciales de AWS del rol de IAM especificado en el perfil.

Si la AWS CLI no puede abrir el navegador, se le pedirá que lo abra usted y que introduzca el código especificado.

$ aws sso login --profile my-dev-profile Using a browser, open the following URL: https://device.sso.us-west-2.amazonaws.com/ and enter the following code: QCFK-N451

También puede especificar qué perfil de sso-session utilizar al iniciar la sesión utilizando el parámetro --sso-session del comando aws sso login. La opción sso-session no está disponible para IAM Identity Center heredado.

$ aws sso login --sso-session my-dev-session

El token de autenticación se almacena en caché en el disco en el directorio ~/.aws/sso/cache con un nombre de archivo basado en la sso_start_url.

Ejecución de un comando con el perfil de IAM Identity Center

Una vez que haya iniciado sesión, puede utilizar estas credenciales para invocar comandos de la AWS CLI con el perfil con nombre asociado. En el ejemplo siguiente se muestra un comando que usa un perfil:

$ aws sts get-caller-identity --profile my-dev-profile

Mientras haya iniciado sesión en IAM Identity Center y esas credenciales almacenadas en caché no hayan caducado, la AWS CLI renovará automáticamente las credenciales de AWS caducadas cuando sea necesario. Sin embargo, si sus credenciales de IAM Identity Center caducan, debe renovarlas explícitamente iniciando sesión de nuevo en la cuenta de IAM Identity Center.

Cierre de sesiones de IAM Identity Center

Cuando haya terminado de utilizar su perfil de IAM Identity Center, puede dejar que las credenciales caduquen o ejecutar el siguiente comando para eliminar las credenciales almacenadas en caché.

$ aws sso logout Successfully signed out of all SSO profiles.

Resolución de problemas

Si tiene problemas con la AWS CLI, consulte Solución de errores para la AWS CLI para ver los pasos de solución de problemas.

Recursos relacionados

Los recursos adicionales son los siguientes.