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 會自動切換為配置列表中的第一個配置。