Configuración de la AWS CLI para usar AWS IAM Identity Center (successor to AWS Single Sign-On) - AWS Command Line Interface

Configuración de la AWS CLI para usar AWS IAM Identity Center (successor to AWS Single Sign-On)

Si la organización utiliza AWS IAM Identity Center (successor to AWS Single Sign-On) (IAM Identity Center)‎, los usuarios pueden iniciar sesión en Active Directory, en un directorio‎ de IAM Identity Center integrado o en ‎otra iDP conectada a IAM Identity Center y ‎recibir un rol de (IAM) de AWS Identity and Access Management que le permite ejecutar ‎comandos de AWS CLI. Independientemente del IdP que utilice, IAM Identity Center abstrae esas distinciones y todas funcionan con la AWS CLI como se describe a continuación. Por ejemplo, puede conectar Microsoft Azure AD como se describe en el artículo del blog The Next Evolution in AWS IAM Identity Center (successor to AWS Single Sign-On)

Para obtener más información acerca de IAM Identity Center, consulte la Guía del usuario de AWS IAM Identity Center (successor to AWS Single Sign-On).

En este tema, se describe cómo se configura la AWS CLI para autenticar al usuario con IAM Identity Center y obtener credenciales a corto plazo para ejecutar comandos de la AWS CLI. Contiene las secciones siguientes:

Configuración de un perfil con nombre para utilizar IAM Identity Center

Puede configurar uno o varios de sus perfiles con nombre de AWS CLI para que utilicen un rol de IAM Identity Center.

Puede configurar el perfil de las siguientes maneras:

Configuración automática

Puede añadir a AWS CLI un perfil habilitado para IAM Identity Center. Para ello, ejecute el siguiente comando y proporcione la URL de inicio de IAM Identity Center y la región de AWS en que se aloja el directorio de Identity Center.

$ aws configure sso SSO start URL [None]: [None]: https://my-sso-portal.awsapps.com/start SSO region [None]:us-east-1

La AWS CLI intenta abrir su navegador predeterminado e iniciar el proceso de inicio de sesión de su cuenta de IAM Identity Center.

SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

Si la AWS CLI no puede abrir el navegador, aparece el siguiente mensaje con instrucciones sobre cómo iniciar manualmente el proceso de inicio de sesión.

Using a browser, open the following URL: https://my-sso-portal.awsapps.com/verify and enter the following code: QCFK-N451

IAM Identity Center utiliza el código para asociar la sesión de IAM Identity Center con la sesión de la AWS CLI actual. La página del navegador de IAM Identity Center de le pide que inicie sesión con las credenciales de IAM Identity Center. De este modo, la AWS CLI (a través de los permisos asociados a su cuenta de IAM Identity Center) puede recuperar y mostrar las cuentas y roles de AWS que tiene permiso para usar con IAM Identity Center.

A continuación, la AWS CLI muestra las cuentas de AWS disponibles para su uso. Si solo tiene autorización para usar una única cuenta, la AWS CLI selecciona esa cuenta automáticamente y omite el mensaje. Las cuentas de AWS que están disponibles para su uso están determinadas por su configuración de usuario en IAM Identity Center.

There are 2 AWS accounts available to you. > DeveloperAccount, developer-account-admin@example.com (123456789011) ProductionAccount, production-account-admin@example.com (123456789022)

Utilice las teclas de flecha para seleccionar la cuenta que desea utilizar con este perfil. El carácter «>» de la izquierda apunta a la opción actual. Pulse INTRO para realizar la selección.

A continuación, la AWS CLI confirma la elección de la cuenta y muestra los roles de IAM que están disponibles en la cuenta seleccionada. Si la cuenta seleccionada solo muestra un rol, la AWS CLI selecciona automáticamente ese rol y omite el mensaje. Los roles que están disponibles para su uso están determinadas por su configuración de usuario en IAM Identity Center.

Using the account ID 123456789011 There are 2 roles available to you. > ReadOnly FullAccess

Al igual que antes, utilice las teclas de flecha para seleccionar el rol de IAM que desea utilizar con este perfil. El carácter «>» de la izquierda apunta a la opción actual. Pulse <INTRO> para realizar la selección.

La AWS CLI confirma su selección de rol.

Using the role name "ReadOnly"

Ahora puede finalizar la configuración de su perfil especificando el formato de salida predeterminado, la Región de AWS predeterminada a la que enviar comandos y proporcionando un nombre para el perfil para que pueda hacer referencia a este perfil entre todos los definidos en el equipo local. En el ejemplo siguiente, el usuario introduce una región predeterminada, un formato de salida predeterminado y el nombre del perfil. También puede pulsar <ENTER> para seleccionar los valores predeterminados que se muestran entre corchetes. El nombre del perfil sugerido es el número de ID de cuenta seguido de un guion bajo seguido del nombre del rol.

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>
nota

Si especifica default como nombre de perfil, este perfil será el que se utilice cada vez que se ejecute un comando de la AWS CLI y no se especifique ningún nombre de perfil.

Un mensaje final describe la configuración del perfil completada.

Para utilizar este perfil, especifique el nombre del perfil mediante —perfil, como se muestra:

aws s3 ls --profile my-dev-profile

Las entradas de ejemplo anteriores darían como resultado un perfil con nombre alojado en ~/.aws/config parecido al del siguiente ejemplo:

[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

En este punto, tiene un perfil que puede utilizar para solicitar credenciales temporales. Debe utilizar el comando aws sso login para solicitar y recuperar realmente las credenciales temporales necesarias para ejecutar comandos. Para obtener instrucciones, consulte Uso de un perfil con nombre habilitado para IAM Identity Center.

nota

También puede ejecutar un comando de la AWS CLI utilizando el perfil especificado. Si en estos momentos no ha iniciado sesión en el portal de acceso de AWS, este comienza automáticamente el proceso de inicio de sesión, como si hubiera ejecutado manualmente el comando aws sso login.

Configuración manual

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 ~/.aws/config (Linux o macOS) o %USERPROFILE%/.aws/config (Windows).

sso_start_url

Especifica la URL que apunta al portal de acceso de AWS de la organización. La AWS CLI utiliza esta dirección URL para establecer una sesión con el servicio IAM Identity Center para autenticar a sus usuarios. Para encontrar la URL del portal de acceso de AWS, puede usar una de las opciones siguientes:

  • Abra el correo electrónico de invitación, aparece la URL del portal de acceso de AWS.

  • Abra la consola de AWS IAM Identity Center (successor to AWS Single Sign-On) en https://console.aws.amazon.com/singlesignon/. La URL del portal de acceso de AWS aparece en la configuración.

sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region

La región de AWS que contiene el host del portal de acceso de AWS. Esto es independiente (y puede ser una región diferente) del parámetro region predeterminado de la CLI.

sso_region = us-west-2
sso_account_id

ID de cuenta de AWS que contiene el rol de IAM que desea utilizar con este perfil.

sso_account_id = 123456789011
sso_role_name

El nombre del rol de IAM que define los permisos que tiene el usuario cuando utiliza este perfil.

sso_role_name = ReadAccess

La presencia de estas claves identifica este perfil como uno que utiliza IAM Identity Center para autenticar al usuario.

También puede incluir otras claves y valores válidos en el archivo .aws/config, como region, output o s3. Sin embargo, no puede incluir ningún valor relacionado con credenciales, como role_arn o aws_secret_access_key. Si lo hace, la AWS CLI produce un error.

Por lo tanto, un perfil típico de IAM Identity Center en .aws/config podría ser similar al del siguiente ejemplo:

[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

En este punto, tiene un perfil que puede utilizar para solicitar credenciales temporales. Sin embargo, aún no puede ejecutar un comando de servicio de la AWS CLI. En primer lugar, debe utilizar el comando aws sso login para solicitar y recuperar realmente las credenciales temporales necesarias para ejecutar comandos. Para obtener instrucciones, consulte la siguiente sección Uso de un perfil con nombre habilitado para IAM Identity Center.

Uso de un perfil con nombre habilitado para IAM Identity Center

En esta sección, se describe cómo se utiliza el perfil de IAM Identity Center creado en la sección anterior.

Inicio de sesión y obtención de credenciales temporales

Después de configurar de forma automática o manual un perfil con nombre, puede invocarlo para solicitar credenciales temporales de AWS. Para poder ejecutar un comando de servicio de la AWS CLI, debe recuperar y almacenar en caché un conjunto de credenciales temporales. Para obtener estas credenciales temporales, ejecute el siguiente comando.

$ aws sso login --profile my-dev-profile

La AWS CLI abre el navegador predeterminado y verifica su inicio de sesión de IAM Identity Center.

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

Si actualmente no ha iniciado sesión en IAM Identity Center, debe proporcionar sus credenciales de IAM Identity Center.

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://my-sso-portal.awsapps.com/verify and enter the following code: QCFK-N451

La AWS CLI abre el navegador predeterminado (o usted abre manualmente el navegador de su elección) en la página especificada e introduce el código proporcionado. A continuación, la página web le pedirá sus credenciales de IAM Identity Center.

Las credenciales de sesión de IAM Identity Center se almacenan en caché y contienen una marca temporal de vencimiento. Cuando las credenciales caduquen, la AWS CLI solicitará que inicie sesión de nuevo en IAM Identity Center.

Si sus credenciales de IAM Identity Center son válidas, la AWS CLI las utiliza para recuperar de forma segura las credenciales temporales de AWS para el rol de IAM especificado en el perfil.

Welcome, you have successfully signed-in to the AWS-CLI.

Ejecución de un comando con su perfil habilitado de IAM Identity Center

Puede utilizar estas credenciales temporales para invocar un comando de la AWS CLI con el perfil con nombre asociado. En el ejemplo siguiente se muestra que el comando se ejecutó bajo un rol asumido que forma parte de la cuenta especificada.

$ aws sts get-caller-identity --profile my-dev-profile { "UserId": "AROA12345678901234567:test-user@example.com", "Account": "123456789011", "Arn": "arn:aws:sts::123456789011:assumed-role/AWSPeregrine_readOnly_12321abc454d123/test-user@example.com" }

Siempre que haya iniciado sesión en IAM Identity Center y las credenciales almacenadas en caché no hayan caducado, la renueva automáticamente las credenciales temporales caducadas de AWS CLI 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.

$ aws s3 ls --profile my-sso-profile Your short-term credentials have expired. Please sign-in to renew your credentials SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

Puede crear varios perfiles con nombre habilitados de IAM Identity Center que apunten a una cuenta o rol de AWS diferente. También puede utilizar el comando aws sso login en más de un perfil a la vez. Si alguno de ellos comparte la misma cuenta de usuario de IAM Identity Center, debe iniciar sesión en esa cuenta de usuario de IAM Identity Center una sola vez y así todos compartirán un único conjunto de credenciales de IAM Identity Center que se almacenarán en la caché.

# The following command retrieves temporary credentials for the AWS account and role # specified in one named profile. If you are not yet signed in to IAM Identity Center or your # cached credentials have expired, it opens your browser and prompts you for your # IAM Identity Center user name and password. It then retrieves AWS temporary credentials for # the IAM role associated with this profile. $ aws sso login --profile my-first-sso-profile # The next command retrieves a different set of temporary credentials for the AWS # account and role specified in the second named profile. It does not overwrite or # in any way compromise the first profile's credentials. If this profile specifies the # same AWS access portal, then it uses the SSO credentials that you retrieved in the # previous command. The AWS CLI then retrieves AWS temporary credentials for the # IAM role associated with the second profile. You don't have to sign in to # IAM Identity Center again. $ aws sso login --profile my-second-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the first profile. $ aws ec2 describe-instances --profile my-first-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the second profile. $ aws ec2 describe-instances --profile my-second-sso-profile

Cierre de sesiones de IAM Identity Center

Cuando haya terminado de usar sus perfiles habilitados de IAM Identity Center, puede elegir no hacer nada y dejar que caduquen las credenciales temporales de AWS y las credenciales de IAM Identity Center. Sin embargo, también puede optar por ejecutar el siguiente comando para eliminar inmediatamente todas las credenciales almacenadas en la carpeta de la caché de credenciales de SSO, así como todas las credenciales temporales de AWS basadas en las credenciales de IAM Identity Center. Esto hará que esas credenciales no estén disponibles para ser utilizadas en un comando futuro.

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

Si más adelante desea ejecutar comandos con uno de sus perfiles habilitados de IAM Identity Center, deberá volver a ejecutar el comando aws sso login (consulte la sección anterior) y especificar el perfil que desea utilizar.