RAM 角色凭证
通过配置 RAM 角色扮演,让阿里云 CLI 使用低权限 AccessKey 自动获取 STS 临时凭证来访问云资源,避免直接暴露高权限 AccessKey。本文介绍 RamRoleArn(直接扮演 RAM 角色)和 ChainableRamRoleArn(从已有 CLI 凭证链式扮演)两种配置方式及其适用场景。
版本要求
阿里云 CLI 版本 ≥ 3.3.0。运行 aliyun version 查看当前版本,低于此版本时,请参考安装/更新 CLI升级。
RamRoleArn
RamRoleArn 使用低权限 AccessKey 扮演高权限 RAM 角色,获取 STS 临时凭证。AccessKey 只需拥有 AliyunSTSAssumeRoleAccess 策略,实际操作权限由目标角色的授权策略决定。此方式适合本地开发环境及需要权限分级管理的场景。
前提条件
已为 RAM 用户创建 AccessKey,并授予
AliyunSTSAssumeRoleAccess策略。已创建目标 RAM 角色,并在角色信任策略中允许上述 RAM 用户扮演该角色。
已获取目标 RAM 角色的 ARN。可在 RAM 控制台角色详情页查看,格式为
acs:ram::<ACCOUNT_ID>:role/<RoleName>。
关于具体的前提条件准备,可参考使用AccessKey调用API中间接使用AccessKey下的步骤。
配置凭证
交互式配置
运行以下命令开始配置。将
<ProfileName>替换为自定义的配置名称(如RamRoleProfile):aliyun configure --mode RamRoleArn --profile <ProfileName>按提示依次输入配置信息:
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.终端显示
Configure Done及欢迎信息,表示配置成功。
配置成功后,该配置自动成为当前激活的配置。如需切换到其他配置,运行 aliyun configure switch --profile <ProfileName> 命令。
非交互式配置
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"验证凭证
配置完成后,运行以下命令验证凭证是否生效:
aliyun sts get-caller-identity输出:
{
"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****"
}凭证的刷新
CLI 自动管理凭证刷新,无需手动操作。STS 临时凭证到期前,CLI 自动重新调用 STS AssumeRole 获取新凭证,不影响正在执行的 CLI 命令。
ChainableRamRoleArn
ChainableRamRoleArn 从已有的 CLI 凭证配置(源配置集)链式扮演另一个 RAM 角色。CLI 先从源配置集获取中间凭证,再用中间凭证调用 STS AssumeRole 获取最终临时凭证。此方式适合跨账号多级角色链场景,或需要在 EcsRamRole 基础上进一步扮演其他角色的场景。
ChainableRamRoleArn类型凭证通过指定一个前置身份凭证配置,从前置配置中获取中间凭证(AccessKey或STS Token),再基于中间凭证完成角色扮演,获取最终的临时身份凭证(STS Token)。
前提条件
已存在一个有效的 CLI 凭证配置集(源配置集),例如已配置好的 EcsRamRole、AK 或 RamRoleArn 配置。
源配置集所关联的主体(RAM 用户或角色)拥有扮演目标 RAM 角色的权限(目标角色的信任策略允许该主体扮演)。
已获取目标 RAM 角色的 ARN,格式为
acs:ram::<ACCOUNT_ID>:role/<RoleName>。
配置凭证
交互式配置
运行以下命令开始配置。将
<ProfileName>替换为自定义的配置名称(如ChainProfile):aliyun configure --mode ChainableRamRoleArn --profile <ProfileName>按提示依次输入配置信息:
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.说明上述示例中
EcsRoleProfile为已存在的源配置集名称,RAM 角色 ARN 为示例值,请替换为实际值。Sts Region和External Id可直接按 Enter 跳过。终端显示
Configure Done及欢迎信息,表示配置成功。
配置成功后,该配置自动成为当前激活的配置。如需切换到其他配置,运行 aliyun configure switch --profile <ProfileName> 命令。
非交互式配置
命令示例:
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--source-profile 指定的配置集必须已存在于 CLI 配置文件中,否则报错 can not load the source profile: <name>。运行 aliyun configure list 可查看所有已有配置集。
验证凭证
配置完成后,可运行命令aliyun sts get-caller-identity验证凭证是否生效。
凭证的刷新
CLI 自动管理凭证刷新,无需手动操作。STS 临时凭证到期前,CLI 先刷新源配置集的凭证(按源配置集自身的刷新逻辑执行,例如 EcsRamRole 走 IMDS),再重新调用 STS AssumeRole 获取新凭证。
删除凭证
删除 CLI 本地配置中的 RAM 角色凭证:
aliyun configure delete --profile <ProfileName>若删除的是当前激活的配置,CLI 会自动切换为配置列表中的第一个配置。