RAM 角色凭证

更新时间:
复制为 MD 格式

通过配置 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下的步骤。

配置凭证

交互式配置

  1. 运行以下命令开始配置。将 <ProfileName> 替换为自定义的配置名称(如 RamRoleProfile):

    aliyun configure --mode RamRoleArn --profile <ProfileName>
  2. 按提示依次输入配置信息:

    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.
  3. 终端显示 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"

完整配置参数

参数名称

必填

说明

示例值

--mode

固定值 RamRoleArn,指定凭证类型。

RamRoleArn

--profile

配置名称。未指定时默认使用当前激活的配置;首次配置默认名称为 default。建议使用有意义的名称以便区分多套凭证。

RamRoleProfile

--region

默认 Region ID。

cn-hangzhou

--access-key-id

RAM 用户的 AccessKey ID,需拥有 AliyunSTSAssumeRoleAccess 策略。

LTAI5t****

--access-key-secret

对应的 AccessKey Secret。

****

--ram-role-arn

目标 RAM 角色的 ARN。可在 RAM 控制台的角色详情页获取。

acs:ram::191317683912****:role/DevOpsRole

--role-session-name

会话名称,用于在审计日志中标识此次扮演。建议使用应用名或机器名等有意义的标识。

my-session

--expired-seconds

临时凭证有效期(秒),范围 900–3600。交互配置默认 900 秒;configure set 不填时默认 3600 秒。

900

--external-id

外部 ID,用于跨账号角色扮演时增强安全性。仅当目标角色的信任策略要求时才需填写。具体请参考使用ExternalId防止混淆代理人问题

--sts-region

STS 服务端点的地域 ID。不填时使用全局端点 sts.aliyuncs.com

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类型凭证通过指定一个前置身份凭证配置,从前置配置中获取中间凭证(AccessKeySTS Token),再基于中间凭证完成角色扮演,获取最终的临时身份凭证(STS Token)。

前提条件

  • 已存在一个有效的 CLI 凭证配置集(源配置集),例如已配置好的 EcsRamRole、AK 或 RamRoleArn 配置。

  • 源配置集所关联的主体(RAM 用户或角色)拥有扮演目标 RAM 角色的权限(目标角色的信任策略允许该主体扮演)。

  • 已获取目标 RAM 角色的 ARN,格式为 acs:ram::<ACCOUNT_ID>:role/<RoleName>

配置凭证

交互式配置

  1. 运行以下命令开始配置。将 <ProfileName> 替换为自定义的配置名称(如 ChainProfile):

    aliyun configure --mode ChainableRamRoleArn --profile <ProfileName>
  2. 按提示依次输入配置信息:

    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 RegionExternal Id 可直接按 Enter 跳过。

  3. 终端显示 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 可查看所有已有配置集。

完整配置参数

参数名称

必填

说明

示例值

--mode

固定值 ChainableRamRoleArn,指定凭证类型。必须显式指定,不支持自动推断。

ChainableRamRoleArn

--profile

配置名称。未指定时默认使用当前激活的配置;首次配置默认名称为 default

ChainProfile

--region

默认 Region ID。

cn-hangzhou

--source-profile

源配置集名称。CLI 先从此配置集获取中间凭证,再用中间凭证扮演目标角色。该配置集必须已存在。

EcsRoleProfile

--ram-role-arn

目标 RAM 角色的 ARN。

acs:ram::191317683912****:role/CrossAccountRole

--role-session-name

会话名称,用于审计日志标识。

chain-session

--expired-seconds

临时凭证有效期(秒),范围 900–3600。不填时默认 3600 秒。

900

--external-id

外部 ID,仅当目标角色的信任策略要求时才需填写。

--sts-region

STS 服务端点的地域 ID。不填时使用全局端点 sts.aliyuncs.com

cn-hangzhou

验证凭证

配置完成后,可运行命令aliyun sts get-caller-identity验证凭证是否生效。

凭证的刷新

CLI 自动管理凭证刷新,无需手动操作。STS 临时凭证到期前,CLI 先刷新源配置集的凭证(按源配置集自身的刷新逻辑执行,例如 EcsRamRole 走 IMDS),再重新调用 STS AssumeRole 获取新凭证。

删除凭证

删除 CLI 本地配置中的 RAM 角色凭证:

aliyun configure delete --profile <ProfileName>
说明

若删除的是当前激活的配置,CLI 会自动切换为配置列表中的第一个配置。