通過配置 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下的步驟。
配置憑證
互動式配置
運行以下命令開始配置。將
<ProfileName>替換為自訂的配置名稱(如RamRoleProfile):aliyun configure --mode RamRoleArn --profile <ProfileName>按提示依次輸入配置資訊:
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.終端顯示
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"驗證憑證
配置完成後,運行以下命令驗證憑證是否生效:
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類型憑證通過指定一個前置身份憑證配置,從前置配置中擷取中間憑證(AccessKey或STS Token),再基於中間憑證完成角色扮演,擷取最終的臨時身份憑證(STS Token)。
前提條件
已存在一個有效 CLI 憑證配置集(源配置集),例如已配置好的 EcsRamRole、AK 或 RamRoleArn 配置。
源配置集所關聯的主體(RAM 使用者或角色)擁有扮演目標 RAM 角色的許可權(目標角色的信任策略允許該主體扮演)。
已擷取目標 RAM 角色的 ARN,格式為
acs:ram::<ACCOUNT_ID>:role/<RoleName>。
配置憑證
互動式配置
運行以下命令開始配置。將
<ProfileName>替換為自訂的配置名稱(如ChainProfile):aliyun configure --mode ChainableRamRoleArn --profile <ProfileName>按提示依次輸入配置資訊:
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 Region和External Id可直接按 Enter 跳過。終端顯示
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 可查看所有已有配置集。
驗證憑證
配置完成後,可運行命令aliyun sts get-caller-identity驗證憑證是否生效。
憑證的重新整理
CLI 自動管理憑證重新整理,無需手動操作。STS 臨時憑證到期前,CLI 先重新整理源配置集的憑證(按源配置集自身的重新整理邏輯執行,例如 EcsRamRole 走 IMDS),再重新調用 STS AssumeRole 擷取新憑證。
刪除憑證
刪除 CLI 本地配置中的 RAM 角色憑證:
aliyun configure delete --profile <ProfileName>若刪除的是當前啟用的配置,CLI 會自動切換為配置列表中的第一個配置。