Al configurar Alibaba Cloud CLI para asumir un rol de RAM, puede utilizar un AccessKey con privilegios bajos para obtener automáticamente credenciales temporales de STS y acceder a recursos en la nube, sin exponer directamente un AccessKey con privilegios altos. Este tema describe dos métodos de configuración: RamRoleArn (asunción directa de un rol de RAM) y ChainableRamRoleArn (asunción de un rol de RAM encadenando desde credenciales existentes de la CLI), así como sus escenarios aplicables.
Requisito de versión
Versión de Alibaba Cloud CLI ≥ 3.3.0. Ejecute aliyun version para comprobar la versión actual. Si su versión es anterior, consulte Install, update, and uninstall Alibaba Cloud CLI para actualizarla.
RamRoleArn
RamRoleArn utiliza un AccessKey con privilegios bajos para asumir un rol de RAM con mayores privilegios y obtener credenciales temporales de STS. El AccessKey solo necesita la política AliyunSTSAssumeRoleAccess. Los permisos efectivos se determinan según las políticas asociadas al rol destino. Este método es adecuado para entornos de desarrollo local y escenarios que requieren separación de privilegios.
Requisitos previos
Se ha creado un AccessKey para el usuario de RAM y se le ha otorgado la política
AliyunSTSAssumeRoleAccess.Se ha creado un rol de RAM destino y la política de confianza del rol permite que el usuario de RAM lo asuma.
Se ha obtenido el ARN del rol de RAM destino. Puede consultarlo en la página de detalles del rol en la consola de RAM. El formato es
acs:ram::<ACCOUNT_ID>:role/<RoleName>.
Para obtener información detallada sobre la preparación de los requisitos previos, consulte los pasos bajo Indirectly use an AccessKey en Use an AccessKey pair to call APIs.
Configurar credenciales
Configuración interactiva
-
Ejecute el siguiente comando para iniciar la configuración. Reemplace
<ProfileName>con un nombre de perfil personalizado (por ejemplo,RamRoleProfile):aliyun configure --mode RamRoleArn --profile <ProfileName> -
Introduzca la información de configuración cuando se le solicite:
Configuring profile 'RamRoleArnProfile' in 'RamRoleArn' authenticate mode... Access Key Id []: <yourAccessKeyID> Access Key Secret []: <yourAccessKeySecret> Sts Region []: cn-hangzhou Ram Role Arn []: acs:ram::012345678910****:role/Alice Role Session Name []: alice External ID []: abcd1234 Expired Seconds [900]: 900 Default Region Id []: cn-hangzhou Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[RamRoleArnProfile] ...Done. Cuando la terminal muestre
Configure Doneseguido de un mensaje de bienvenida, la configuración habrá finalizado.
Una vez completada la configuración correctamente, el perfil se convierte automáticamente en el perfil activo. Para cambiar a otro perfil, ejecute el comando aliyun configure switch --profile <ProfileName>.
Configuración no interactiva
Bash
aliyun configure set \
--profile RamRoleArnProfile \
--mode RamRoleArn \
--access-key-id <yourAccessKeyID> \
--access-key-secret <yourAccessKeySecret> \
--sts-region "cn-hangzhou" \
--ram-role-arn "acs:ram::012345678910****:role/Alice" \
--role-session-name "alice" \
--external-id "abcd1234" \
--expired-seconds 900 \
--region "cn-shanghai"
PowerShell
aliyun configure set `
--profile RamRoleArnProfile `
--mode RamRoleArn `
--access-key-id <yourAccessKeyID> `
--access-key-secret <yourAccessKeySecret> `
--sts-region "cn-hangzhou" `
--ram-role-arn "acs:ram::012345678910****:role/Alice" `
--role-session-name "alice" `
--external-id "abcd1234" `
--expired-seconds 900 `
--region "cn-shanghai"
Comprobar credenciales
Una vez completada la configuración, ejecute el siguiente comando para comprobar que las credenciales son efectivas:
aliyun sts get-caller-identity
Salida:
{
"AccountId": "191317683912****",
"Arn": "acs:ram::191317683912****:assumed-role/<role-name>/<role-session-name>",
"IdentityType": "AssumedRoleUser",
"PrincipalId": "30004467717606****:<role-session-name>",
"RequestId": "0FFADC33-EA49-5E2A-977F-0BA820D6****",
"RoleId": "30004467717606****"
}
Renovación de credenciales
La CLI gestiona automáticamente la renovación de credenciales sin intervención manual. Antes de que expiren las credenciales temporales de STS, la CLI vuelve a llamar a STS AssumeRole para obtener nuevas credenciales. Esto no afecta a los comandos de la CLI que se estén ejecutando.
ChainableRamRoleArn
ChainableRamRoleArn asume otro rol de RAM encadenando desde un perfil de credenciales existente en la CLI (el perfil origen). La CLI primero obtiene credenciales intermedias del perfil origen y luego utiliza esas credenciales para llamar a STS AssumeRole y obtener las credenciales temporales finales de STS. Este método es adecuado para escenarios de encadenamiento de roles de múltiples saltos entre cuentas, o para casos en los que necesite asumir roles adicionales basándose en un EcsRamRole.
El tipo de credencial ChainableRamRoleArn funciona especificando un perfil de credenciales origen, obteniendo credenciales intermedias (un AccessKey o credenciales temporales de STS) de dicho perfil y utilizándolas posteriormente para asumir el rol destino y obtener las credenciales temporales finales de STS.
Requisitos previos
Ya existe un perfil válido de la CLI (perfil origen), como un perfil EcsRamRole, AK o RamRoleArn configurado.
La entidad principal (usuario o rol de RAM) asociada al perfil origen tiene permiso para asumir el rol de RAM destino (la política de confianza del rol destino permite que la entidad principal lo asuma).
Se ha obtenido el ARN del rol de RAM destino, con el formato
acs:ram::<ACCOUNT_ID>:role/<RoleName>.
Configurar credenciales
Configuración interactiva
-
Ejecute el siguiente comando para iniciar la configuración. Reemplace
<ProfileName>con un nombre de perfil personalizado (por ejemplo,ChainProfile):aliyun configure --mode ChainableRamRoleArn --profile <ProfileName> -
Introduzca la información de configuración cuando se le solicite:
Configuring profile 'ChainableProfile' in 'ChainableRamRoleArn' authenticate mode... Source Profile []: RamRoleArnProfile Sts Region []: cn-hangzhou Ram Role Arn []: acs:ram::012345678910****:role/Alice Role Session Name []: alice External ID []: abcd1234 Expired Seconds [900]: 900 Default Region Id []: cn-hangzhou Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[ChainableProfile] ...Done.NotaEn el ejemplo anterior,
RamRoleArnProfilees el nombre de un perfil origen existente y el ARN del rol de RAM es un valor de ejemplo. Reemplácelos con valores reales. Puede presionar Enter para omitir las solicitudes deSts RegionyExternal Id. Cuando la terminal muestre
Configure Doneseguido de un mensaje de bienvenida, la configuración habrá finalizado.
Una vez completada la configuración correctamente, el perfil se convierte automáticamente en el perfil activo. Para cambiar a otro perfil, ejecute el comando aliyun configure switch --profile <ProfileName>.
Configuración no interactiva
Ejemplo de comando:
Bash
aliyun configure set \
--profile ChainableProfile \
--mode ChainableRamRoleArn \
--source-profile RamRoleArnProfile \
--sts-region "cn-hangzhou" \
--ram-role-arn "acs:ram::012345678910****:role/Alice" \
--role-session-name "alice" \
--external-id "abcd1234" \
--expired-seconds 900 \
--region "cn-shanghai"
PowerShell
aliyun configure set `
--profile ChainProfile `
--mode ChainableRamRoleArn `
--region cn-hangzhou `
--source-profile EcsRoleProfile `
--ram-role-arn acs:ram::<UID>:role/<RoleName> `
--role-session-name chain-session `
--expired-seconds 900
El perfil especificado por --source-profile ya debe existir en el archivo de configuración de la CLI. De lo contrario, se devolverá el error can not load the source profile: <name>. Ejecute aliyun configure list para ver todos los perfiles existentes.
Comprobar credenciales
Una vez completada la configuración, ejecute el comando aliyun sts get-caller-identity para comprobar que las credenciales son efectivas.
Renovación de credenciales
La CLI gestiona automáticamente la renovación de credenciales sin intervención manual. Antes de que expiren las credenciales temporales de STS, la CLI primero renueva las credenciales del perfil origen (siguiendo la lógica de renovación de dicho perfil; por ejemplo, EcsRamRole se renueva mediante IMDS) y luego vuelve a llamar a STS AssumeRole para obtener nuevas credenciales.
Eliminar credenciales
Elimine las credenciales de rol de RAM de la configuración local de la CLI:
aliyun configure delete --profile <ProfileName>
Si el perfil eliminado es el perfil activo actual, la CLI cambia automáticamente al primer perfil de la lista.