阿里云 CLI 配置其他凭证(OIDC / CloudSSO / External / CredentialsURI / BearerToken)
OIDC、CloudSSO、External、CredentialsURI 和 BearerToken 是阿里云 CLI 针对特定集成场景提供的进阶凭证方式,无需在本地存储长期 AccessKey。本文介绍这五种方式的适用场景、配置步骤和常见问题,帮助在 RRSA Pod、企业多账号、外部密钥系统、HTTP 凭证服务或 Bearer Token 认证场景中安全使用 CLI。
版本要求
阿里云 CLI 版本 ≥ 3.3.0。运行 aliyun version 命令查看当前版本。版本低于 3.3.0 时,请参考安装/更新 CLI升级后再使用 OAuth 凭证。
BearerToken 模式需要 CLI 版本 ≥ 3.3.16。
OIDC
通过兼容 OIDC(OpenID Connect)协议的外部身份提供商颁发的 ID Token 进行身份认证和角色扮演。建议在开启了 RRSA(RAM Roles for Service Accounts)的 ACK/ACS Pod 中使用。CLI 读取集群自动挂载到 Pod 的 OIDC Token 文件,调用 STS AssumeRoleWithOIDC 获取临时凭证,过期前自动刷新。
前提条件
已创建 ACK 或 ACS 集群,并启用RRSA功能(ACK)/启用RRSA功能(ACS)。
已创建OIDC身份提供商的RAM角色,信任策略允许集群自动创建的 OIDC 身份提供商(格式为
ack-rrsa-{cluster-id})扮演。Pod 使用的 ServiceAccount 已通过 RRSA 关联到对应 RAM 角色。
配置凭证
非交互式配置(推荐)
启用 RRSA 后,安装 ack-pod-identity-webhook 组件可自动为 Pod 注入以下环境变量,CLI 自动识别。安装组件的操作步骤,请参考管理ACK托管集群的相关组件。
ALIBABA_CLOUD_OIDC_PROVIDER_ARNALIBABA_CLOUD_OIDC_TOKEN_FILEALIBABA_CLOUD_ROLE_ARN
执行以下命令配置,利用环境变量进行配置:
aliyun configure set \
--mode OIDC \
--profile OIDCProfile \
--oidc-provider-arn $ALIBABA_CLOUD_OIDC_PROVIDER_ARN \
--oidc-token-file $ALIBABA_CLOUD_OIDC_TOKEN_FILE \
--ram-role-arn $ALIBABA_CLOUD_ROLE_ARN \
--role-session-name "rrsa-pod" \
--region cn-shanghai交互式配置
运行以下命令开始配置。将
<ProfileName>替换为自定义的配置名称(如OIDCProfile):aliyun configure --mode OIDC --profile <ProfileName>按提示依次输入 OIDC Provider ARN、OIDC Token File 路径、RAM 角色 ARN 、角色会话名称、默认地域及语言等配置信息:
Configuring profile 'OIDC_Profile' in 'OIDC' authenticate mode... OIDC Provider ARN []: acs:ram::012345678910****:oidc-provider/TestOidcIdp OIDC Token File []: /path/to/oidctoken RAM Role ARN []: acs:ram::012345678910****:role/Alice Role Session Name []: rrsa-pod-name Default Region Id []: cn-shanghai Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[OIDC_Profile] ...Done.终端显示
Configure Done及欢迎信息,表示配置成功。
配置完成后,在 Pod 内运行命令aliyun sts get-caller-identity验证凭证是否生效。
凭证的刷新
ACK/ACS 集群会自动轮转 Pod 中的 OIDC Token 文件。CLI 会自动调用阿里云 STS 服务的AssumeRoleWithOIDC 接口,传入最新的OIDC Token刷新凭证,整个过程对用户透明。
CloudSSO
CloudSSO 方式适用于企业已部署阿里云Cloud SSO目录服务的场景。通过 Cloud SSO 统一身份登录 CLI,可切换不同资源目录账号和访问配置执行操作。
前提条件
企业已部署 Cloud SSO 并配置了用户目录和访问配置。
Cloud SSO 用户已被分配至少一个访问配置。
已从管理员处获取 Cloud SSO 登录地址,格式通常为
https://signin-<region>.alibabacloudsso.com/<directory-name>/login。关于如何获取CloudSSO用户登录地址,请参考获取用户门户地址。
配置凭证
运行以下命令开始配置。将
<ProfileName>替换为自定义的配置名称(如SSOProfile):aliyun configure --mode CloudSSO --profile <ProfileName>根据提示输入用户登录地址
SignIn Url。Configuring profile 'SSOProfile' in 'CloudSSO' authenticate mode... CloudSSO Sign In Url []: https://signin-<region>.alibabacloudsso.com/<directory-name>/login在弹出的浏览器窗口中,根据界面提示,完成云SSO用户登录,登录成功后请关闭浏览器窗口。
说明如果浏览器窗口未弹出或当前为纯终端环境,您可以根据CLI的提示信息,手动复制登录URL(SignIn url)和用户码(User code)在浏览器中完成登录。
提示信息示例:
If the browser does not open automatically, use the following URL to complete the login process: SignIn url: https://signin-****.alibabacloudsso.com/device/code User code: CGKM-LIXZCLI返回登录成功,同时列出您可以访问的资源目录管理账号或成员账号名称,请输入编号选择要访问的账号。
Now you can login to your account with SSO configuration in the browser. You have successfully logged in. Please choose an account: 1. <RD Management Account> 2. <other-account-name> Please input the account number: 1CLI列出您可以使用的访问配置(即用户权限配置),请输入编号选择要使用的访问配置。
Please choose an access configuration: 1. <access-configuration1> 2. <access-configuration2> Please input the access configuration number: 2设置默认地域及语言,如:
Default Region Id []: cn-shanghai Default Language [zh|en] en: en具体地域请参见地域和可用区。部分云产品不支持跨地域访问,建议您优先将默认地域设置为已购资源所在地域。
终端显示
Configure Done及欢迎信息,表示配置成功。
配置完成后,运行命令aliyun sts get-caller-identity验证凭证是否生效。
配置成功后,该配置自动成为当前激活的配置。如需切换到其他配置,运行 aliyun configure switch --profile <ProfileName> 命令。
凭证的刷新
CloudSSO 凭证不自动刷新,过期后需要重新使用命令aliyun configure --mode CloudSSO --profile <ProfileName>进行配置。
External
External类型凭证通过外部程序获取凭证数据,阿里云CLI在使用时会执行该程序命令,获取返回结果作为凭证。适用于自定义凭证获取逻辑的场景。
前提条件
有一个可执行程序或脚本,能在 stdout 输出规定格式的 JSON 凭证。格式要求如下:
AccessKey
{ "mode": "AK", "access_key_id": "<yourAccessKeyID>", "access_key_secret": "<yourAccessKeySecret>" }StsToken
{ "mode": "StsToken", "access_key_id": "<yourAccessKeyID>", "access_key_secret": "<yourAccessKeySecret>", "sts_token": "<yourSecurityToken>" }程序退出码必须为 0(非 0 视为失败)。
配置凭证
非交互式配置(推荐)
Bash
aliyun configure set \
--mode External \
--profile ExternalProfile \
--process-command "/path/to/credential-helper" \
--region cn-shanghaiPowerShell
aliyun configure set `
--mode External `
--profile ExternalProfile `
--process-command "/path/to/credential-helper" `
--region cn-shanghai交互式配置
aliyun configure --mode External --profile <ProfileName>按提示依次输入外部程序执行命令(Process Command)、默认地域及语言等配置信息,完成配置。
配置完成后,运行命令aliyun sts get-caller-identity验证凭证是否生效。
凭证的刷新
在使用External 凭证模式下,CLI不会缓存凭证,也不会自动刷新凭证。CLI在每次需要凭证时都重新执行外部程序。凭证的刷新逻辑依赖外部程序实现。
CredentialsURI
CredentialsURI 方式让 CLI 通过 HTTP GET 请求从您提供的指定端点获取临时安全凭证(STS Token)。适用于有自建凭证分发服务的场景。
前提条件
有一个 HTTP/HTTPS 端点,能返回规定格式的 JSON 凭证响应(HTTP 200)。响应体为以下 JSON 格式:
{
"Code": "Success",
"AccessKeyId": "<yourAccessKeyID>",
"AccessKeySecret": "<yourAccessKeySecret>",
"SecurityToken": "<yourSecurityToken>"
}当指定地址无法正常返回HTTP 200响应状态码,或其响应内容的结构不符合预期格式时,阿里云CLI将对该请求按失败情况处理。
响应 JSON 中
Code字段必须严格为"Success"(区分大小写)。
配置凭证
运行以下命令开始配置。将
<ProfileName>替换为自定义的配置名称(如URIProfile):aliyun configure --mode CredentialsURI --profile <ProfileName>按提示输入凭证 URI(Credentials URI)、默认地域及语言等配置信息。
Configuring profile 'URIProfile' in 'CredentialsURI' authenticate mode... Credentials URI []: http://credentials.uri/ Default Region Id []: cn-shanghai Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[URIProfile] ...Done.具体地域请参见地域和可用区。部分云产品不支持跨地域访问,建议您优先将默认地域设置为已购资源所在地域。
终端显示
Configure Done及欢迎信息,表示配置成功。
配置成功后,该配置自动成为当前激活的配置。如需切换到其他配置,运行 aliyun configure switch --profile <ProfileName> 命令。
配置完成后,运行命令aliyun sts get-caller-identity验证凭证是否生效。
凭证的刷新
过期后 CLI 重新向端点发起 HTTP GET 请求获取新凭证,整个过程对用户透明。HTTP 凭证服务需自行确保每次请求都返回有效的 STS Token。
BearerToken
BearerToken 方式使用 Bearer Token 认证阿里云 API 服务。该模式通过产品插件调用 API,适用于目标服务支持并颁发了 Bearer Token 的场景。
前提条件
已获取目标服务颁发的 Bearer Token。
已安装目标产品的 CLI 插件:
aliyun plugin install --name <plugin-name>。
BearerToken 模式仅支持通过产品插件调用 API。如需调用某产品 API,须先安装对应插件:
aliyun plugin install --name <plugin-name>。CLI 版本要求 ≥
3.3.16。
配置凭证
非交互式配置(推荐)
aliyun configure set \
--mode BearerToken \
--profile BearerProfile \
--bearer-token <your-bearer-token> \
--region cn-shanghai如需自定义认证 Header 名称,添加 --bearer-token-header-key 参数:
aliyun configure set \
--mode BearerToken \
--profile BearerProfile \
--bearer-token <your-bearer-token> \
--bearer-token-header-key <custom-header-name> \
--region cn-shanghai交互式配置
运行以下命令开始配置。将
<ProfileName>替换为自定义的配置名称(如BearerProfile):aliyun configure --mode BearerToken --profile <ProfileName>按提示依次输入 Bearer Token、Bearer Token Header Key(可选,留空使用默认值)、默认地域及语言等配置信息:
Configuring profile 'BearerProfile' in 'BearerToken' authenticate mode... Bearer Token []: eyJhbGciOiJSUzI1**** Bearer Token Header Key [] (optional, e.g. x-custom-token; leave empty for x-acs-bearer-token): Default Region Id []: cn-shanghai Default Output Format [json]: json (Only support json) Default Language [zh|en] en: en Saving profile[BearerProfile] ...Done.终端显示
Configure Done及欢迎信息,表示配置成功。
配置完成后,运行以下命令通过插件调用目标产品 API 验证凭证是否生效:
aliyun <command> <sub-command> --profile BearerProfileBearerToken 模式的 configure hello 不执行连通性检查(直接返回成功),请通过实际 API 调用验证凭证有效性。
环境变量
BearerToken 模式支持通过以下环境变量配置凭证参数:
环境变量 | 说明 |
| Bearer Token 值。 |
| 自定义认证 Header 名称。不设置时默认为 |
删除凭证
删除 CLI 本地配置中的 RAM 角色凭证:
aliyun configure delete --profile <ProfileName>若删除的是当前激活的配置,CLI 会自动切换为配置列表中的第一个配置。