阿里云CLI(Alibaba Cloud Command Line Interface)是基于OpenAPI構建的通用命令行工具,您可以通過阿里云CLI實現自動化管理和維護STS(Security Token Service)。本文以調用AssumeRole
接口獲取臨時身份憑證為例,為您介紹使用阿里云CLI調用STS OpenAPI的操作步驟。
前置概念
閱讀本文前,您可能需要了解如下概念:
步驟一:安裝阿里云CLI
使用阿里云CLI前,您需要先安裝阿里云CLI。阿里云CLI為用戶提供了Windows、Linux和macOS三種操作系統下的安裝服務,請根據您使用設備的操作系統選擇對應的安裝服務。
Windows:在Windows上安裝阿里云CLI。
Linux:在Linux上安裝阿里云CLI。
macOS:在macOS上安裝阿里云CLI。
您也可使用阿里云提供的云命令行Cloud Shell調試阿里云CLI命令。關于云命令行的更多信息,請參見什么是云命令行。
步驟二:配置阿里云CLI
AssumeRole
接口僅支持使用RAM用戶或RAM角色調用,不支持使用阿里云賬號(主賬號)調用。本文以使用RAM用戶身份調用接口為例,
使用阿里云CLI之前,您需要在阿里云CLI中配置身份憑證、地域ID等信息。阿里云CLI支持多種身份憑證,詳情請參見身份憑證類型。本文操作以AK類型憑證為例,具體操作步驟如下:
創建一個RAM用戶,并創建AccessKey,以便后續配置身份憑證使用。具體操作,請參見創建RAM用戶及創建AccessKey。
為RAM用戶授權。本文示例需授予RAM用戶調用STS服務
AssumeRole
接口的權限AliyunSTSAssumeRoleAccess
。具體操作,請參見為RAM用戶授權。獲取可用的地域ID,以便后續配置身份憑證使用。阿里云CLI將使用您指定的地域發起OpenAPI調用。STS服務可用的地域請參見服務接入點。
說明使用阿里云CLI過程中您可使用
--region
選項指定地域發起命令調用,該選項在使用時將忽略默認身份憑證配置及環境變量設置中的地域信息。詳情請參見API命令可用選項。使用RAM用戶的AccessKey配置AK類型憑證,配置文件命名為
AkProfile
。具體操作,請參見配置示例。
步驟三:創建RAM角色
角色全局資源描述符RoleArn
是調用AssumeRole
接口的必填參數。要獲取該參數,您需要創建一個可信實體為阿里云賬號的RAM角色。
本文示例中,您需要使用步驟二:配置阿里云CLI中創建的RAM用戶扮演該角色,所以可信云賬號需要設置為步驟二:配置阿里云CLI中RAM用戶所屬的阿里云賬號ID。具體操作,請參見創建可信實體為阿里云賬號的RAM角色。
您可以通過修改RAM角色信任策略的方法,修改允許扮演該RAM角色的RAM用戶。具體操作 ,請參見修改RAM角色的信任策略。
步驟四:生成CLI命令示例
在OpenAPI門戶中,訪問AssumeRole調試地址。
在參數配置中輸入請求參數,單擊CLI示例頁簽,查看生成的CLI示例。
在云命令行中運行命令,或復制CLI示例。
步驟五:調用STS OpenAPI
示例一:獲取支持阿里云CLI調用的STS OpenAPI
以下代碼示例將為您展示如何使用--help
選項獲取STS支持阿里云CLI調用OpenAPI列表。您也可在API概覽中查看支持調用的OpenAPI。
執行命令。
aliyun sts --help
輸出結果。
示例二:獲取扮演RAM角色的臨時身份憑證
以下代碼示例將為您展示如何使用阿里云CLI調用STS的AssumeRole
命令,獲取一個扮演RAM角色的臨時身份憑證。
執行命令。
說明您可通過以下方式獲取命令參數幫助信息:
執行
aliyun sts AssumeRole --help
命令,獲取命令參數建議。閱讀文檔AssumeRole - 獲取扮演角色的臨時身份憑證,查看OpenAPI參數詳情。
aliyun sts AssumeRole \ --DurationSeconds 3600 \ --Policy '{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}' \ --RoleSessionName alice \ --RoleArn 'acs:ram::123456789012****:role/adminrole' \ --ExternalId abcd1234
預期輸出,其中
SecurityToken
即為所需的臨時身份憑證。{ "RequestId": "6894B13B-6D71-4EF5-88FA-F32781734A7F", "AssumedRoleUser": { "AssumedRoleId": "34458433936495****:alice", "Arn": "acs:ram::123456789012****:role/adminrole/alice" }, "Credentials": { "SecurityToken": "********", "Expiration": "2015-04-09T11:52:19Z", "AccessKeySecret": "wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pK****", "AccessKeyId": "STS.L4aBSCSJVMuKg5U1****" } }
說明如果調用安全令牌STS OpenAPI后返回錯誤,您需要根據返回的錯誤碼提示檢查傳入的請求參數及其取值是否正確。
您可以記錄下調用返回的RequestID或SDK報錯信息,通過阿里云OpenAPI診斷平臺進行自助診斷。