阿里云 CLI 配置其他凭证(OIDC / CloudSSO / External / CredentialsURI / BearerToken)

更新时间:
复制为 MD 格式

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 获取临时凭证,过期前自动刷新。

前提条件

配置凭证

非交互式配置(推荐)

启用 RRSA 后,安装 ack-pod-identity-webhook 组件可自动为 Pod 注入以下环境变量,CLI 自动识别。安装组件的操作步骤,请参考管理ACK托管集群的相关组件

  • ALIBABA_CLOUD_OIDC_PROVIDER_ARN

  • ALIBABA_CLOUD_OIDC_TOKEN_FILE

  • ALIBABA_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

完整配置参数

参数

必填

说明

示例值

--oidc-provider-arn

OIDC 身份提供商 ARN(启用 RRSA 后集群自动创建,格式为 ack-rrsa-{cluster-id}

ack-rrsa-c89e0f7db43bc4db2af3dc7a602f0****

--oidc-token-file

ID Token 文件路径。

/var/run/secrets/ack.alibabacloud.com/rrsa-tokens/token

--ram-role-arn

要扮演的 RAM 角色 ARN

--role-session-name

会话标识,用于审计日志。仅支持 flag,无对应环境变量。

rrsa-pod-name

--region

默认地域。部分云产品不支持跨地域访问,建议您优先将默认地域设置为已购资源所在地域。

cn-shanghai

交互式配置

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

    aliyun configure --mode OIDC --profile <ProfileName>
  2. 按提示依次输入 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.
  3. 终端显示 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用户登录地址,请参考获取用户门户地址

配置凭证

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

    aliyun configure --mode CloudSSO --profile <ProfileName>
  2. 根据提示输入用户登录地址SignIn Url

    Configuring profile 'SSOProfile' in 'CloudSSO' authenticate mode...
    CloudSSO Sign In Url []: https://signin-<region>.alibabacloudsso.com/<directory-name>/login
  3. 在弹出的浏览器窗口中,根据界面提示,完成云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-LIXZ
  4. CLI返回登录成功,同时列出您可以访问的资源目录管理账号或成员账号名称,请输入编号选择要访问的账号。

    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: 1
  5. CLI列出您可以使用的访问配置(即用户权限配置),请输入编号选择要使用的访问配置。

    Please choose an access configuration:
    1. <access-configuration1>
    2. <access-configuration2>
    Please input the access configuration number: 2
  6. 设置默认地域及语言,如:

    Default Region Id []: cn-shanghai
    Default Language [zh|en] en: en

    具体地域请参见地域和可用区。部分云产品不支持跨地域访问,建议您优先将默认地域设置为已购资源所在地域。

  7. 终端显示 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-shanghai
PowerShell
aliyun configure set `
  --mode External `
  --profile ExternalProfile `
  --process-command "/path/to/credential-helper" `
  --region cn-shanghai

完整配置参数

参数名称

说明

必填

示例值

--mode

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

External

--profile

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

ExternalProfile

--process-command

外部程序的命令路径,支持包含参数的完整命令。

acs-sso login --profile sso

--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"(区分大小写)。

配置凭证

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

    aliyun configure --mode CredentialsURI --profile <ProfileName>
  2. 按提示输入凭证 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.

    具体地域请参见地域和可用区。部分云产品不支持跨地域访问,建议您优先将默认地域设置为已购资源所在地域。

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

完整配置参数

参数

必填

说明

示例值

--mode

固定值 BearerToken,指定凭证类型(大小写敏感)。

BearerToken

--bearer-token

Bearer Token 值。

eyJhbGciOiJSUzI1****

--bearer-token-header-key

自定义认证 Header 名称。不指定时默认为 x-acs-bearer-token。值必须为可打印 ASCII 字符,不可包含空格、制表符、冒号或控制字符。

x-custom-auth

--profile

配置名称。未指定时默认使用当前激活的配置。

BearerProfile

--region

默认地域。部分云产品不支持跨地域访问,建议优先将默认地域设置为已购资源所在地域。

cn-shanghai

交互式配置

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

    aliyun configure --mode BearerToken --profile <ProfileName>
  2. 按提示依次输入 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.
  3. 终端显示 Configure Done 及欢迎信息,表示配置成功。

配置完成后,运行以下命令通过插件调用目标产品 API 验证凭证是否生效:

aliyun <command> <sub-command> --profile BearerProfile
说明

BearerToken 模式的 configure hello 不执行连通性检查(直接返回成功),请通过实际 API 调用验证凭证有效性。

环境变量

BearerToken 模式支持通过以下环境变量配置凭证参数:

环境变量

说明

ALIBABA_CLOUD_BEARER_TOKEN

Bearer Token 值。

ALIBABA_CLOUD_BEARER_TOKEN_HEADER_KEY

自定义认证 Header 名称。不设置时默认为 x-acs-bearer-token

删除凭证

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

aliyun configure delete --profile <ProfileName>
说明

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