阿里云 CLI 配置临时安全凭证(StsToken)

更新时间:
复制为 MD 格式

已持有 STS 临时凭证时,可通过 StsToken 方式将凭证配置到阿里云 CLI。StsToken 模式下,CLI直接使用传入的凭证,不自动刷新,凭证过期后需重新获取并覆盖配置。本文介绍 StsToken 凭证的配置流程。

前提条件

  • 阿里云 CLI 版本 ≥ 3.3.0。运行 aliyun version 查看当前版本,版本低于 3.3.0 时,请参考安装/更新 CLI升级。

  • 通过调用AssumeRole接口或其他方式获取到有效的临时安全凭证STS Token,包括:

    • AccessKey ID(通常以 STS. 开头)

    • AccessKey Secret

    • Security Token

  • 了解凭证的过期时间。临时凭证通常在 15 分钟至 1 小时内到期,取决于获取STS Token时设定的有效期(DurationSeconds)。

配置凭证

选择交互式或非交互式方式,将获取的临时凭证配置到阿里云 CLI。

交互式配置

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

    aliyun configure --mode StsToken --profile <ProfileName>
  2. 按提示依次输入凭证信息:

    Configuring profile 'StsProfile' in 'StsToken' authenticate mode...
    Access Key Id []: STS.NUr5xxxxx
    Access Key Secret []: 7Bshxxxxx
    Sts Token []: CAISxxxxxxxxxxxxxxxx...
    Default Region Id []: cn-hangzhou
    Default Output Format [json]: json (Only support json)
    Default Language [zh|en] zh: zh
    Saving profile[StsProfile] ...Done.
  3. 终端显示 Configure Done 及欢迎信息,表示配置成功。

非交互式配置

命令示例:

Bash

aliyun configure set \
  --profile StsProfile \
  --mode StsToken \
  --access-key-id STS.NUr5xxxxx \
  --access-key-secret 7Bshxxxxx \
  --sts-token CAISxxxxxxxxxxxxxxxx... \
  --region cn-shanghai

PowerShell

aliyun configure set `
  --profile StsProfile `
  --mode StsToken `
  --access-key-id STS.NUr5xxxxx `
  --access-key-secret 7Bshxxxxx `
  --sts-token CAISxxxxxxxxxxxxxxxx... `
  --region cn-shanghai

完整配置参数

参数名称

说明

必填

示例值

--mode

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

StsToken

--profile

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

StsProfile

--access-key-id

临时 AccessKey ID,通常以 STS. 开头。

STS.NUr5xxxxx

--access-key-secret

临时 AccessKey Secret。

7Bshxxxxx

--sts-token

Security Token 字符串。

CAISxxxxxxxx...

--region

默认 Region ID,例如 cn-hangzhou

cn-hangzhou

说明

配置成功后,该配置自动成为当前激活的配置。如需切换到其他配置,运行 aliyun configure switch --profile <ProfileName> 命令。

验证凭证配置

配置完成后,运行以下命令验证凭证是否生效:

aliyun sts get-caller-identity

输出类似如下,在Arn字段可以查看与当前STS Token所关联的RAM角色名与角色会话名:

{
  "AccountId": "191317683912****",
  "Arn": "acs:sts::191317683912****:assumed-role/<RoleName>/<RoleSessionName>",
  "IdentityType": "AssumedRoleUser",
  "PrincipalId": "30004467717606****:<RoleSessionName>",
  "RequestId": "0FFADC33-EA49-5E2A-977F-0BA820D6****",
  "RoleId": "30004467717606****"
}

凭证的刷新

STS 临时凭证不会自动刷新。凭证到期后,执行任意 CLI 命令都会返回如下错误:

Error: request execution failed: request execution failed: SDKError:
   StatusCode: 400
   Code: InvalidSecurityToken.Expired
   Message: code: 400, Specified SecurityToken is expired. request id: 9C518A52-BE37-570A-8E1A-0DD559BC****
   Data: {"Code":"InvalidSecurityToken.Expired", ...}

重新获取新的临时凭证后,需再次执行凭证配置操作。如果需要 CLI 自动管理凭证有效期,建议改用 RamRoleArnEcsRamRole凭证类型。

删除凭证

删除 CLI 本地配置中的 StsToken 凭证:

aliyun configure delete --profile <ProfileName>

常见问题

STS Token 过期后更新是否需要先删除旧配置?

不需要。直接执行 aliyun configure set 命令覆盖同名配置集即可,新的凭证值会替换旧值,无需任何确认操作。

是否可以通过环境变量设置 StsToken?

CLI 优先使用 Profile 中的 STS Token 配置;若 Profile 已配置但个别字段为空,则自动从环境变量中补全缺失值。

export ALIBABA_CLOUD_ACCESS_KEY_ID="STS.xxx"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="tempSecret"
export ALIBABA_CLOUD_SECURITY_TOKEN="token-string"