本文以Python SDK為例,為您介紹如何通過STS(Security Token Service)OpenAPI調用AssumeRole接口獲取一個扮演RAM角色的臨時身份憑證(STS Token)。
步驟一:查看OpenAPI文檔
閱讀API概覽,選擇可以獲取一個扮演RAM角色的臨時身份憑證(STS Token)的OpenAPI:AssumeRole - 獲取扮演角色的臨時身份憑證。根據接口文檔,了解調用該接口需要的參數及權限。
步驟二:創建RAM用戶并授權
身份
您可以使用RAM用戶、RAM角色調用該接口,不能使用阿里云賬號(主賬號)調用。關于各種身份的差異,請參見身份。
本示例中,使用RAM用戶調用接口。
憑證
進入到對應的RAM用戶詳情頁,在認證管理頁簽下的用戶AccessKey區域,單擊創建AccessKey,創建一個新的AccessKey。具體操作,請參見創建AccessKey。
RAM用戶的AccessKey Secret只在創建時顯示,不支持查看,請注意保存。
授權
訪問RAM用戶列表,單擊目標RAM用戶操作列的添加權限。
在文本框中輸入關鍵字
sts
進行搜索,選擇AliyunSTSAssumeRoleAccess系統策略。AliyunSTSAssumeRoleAccess:調用STS服務AssumeRole接口的權限。
單擊確認新增授權,完成授權操作。
步驟三:創建RAM角色
登錄RAM控制臺,創建一個可信實體為阿里云賬號的RAM角色。可信云賬號可以指定為當前賬號或其他賬號:
當前云賬號:當您允許當前阿里云賬號下的RAM用戶扮演該RAM角色時,您可以選擇當前云賬號。
其他云賬號:當您允許其他阿里云賬號下的RAM用戶扮演該RAM角色時,您可以選擇其他云賬號,然后輸入其他阿里云賬號ID。該項主要針對跨阿里云賬號的資源授權訪問場景。
本文示例中,您需要使用步驟二創建的RAM用戶扮演該角色,所以可信云賬號需要設置為步驟二中RAM用戶所屬的阿里云賬號ID。具體操作,請參見創建可信實體為阿里云賬號的RAM角色。
您也可以通過修改RAM角色信任策略的方法,修改允許扮演該RAM角色的RAM用戶。具體操作 ,請參見修改RAM角色的信任策略。
步驟四:調用OpenAPI
本文以Python SDK調用OpenAPI,其他語言SDK的用法類似,更多信息請參見STS SDK。您也可根據業務的實際需要選擇其他調用方式,更多調用方法請參見調用方式。
準備Python環境
下載并安裝Python 3。
安裝完成后,在終端中輸入python --version
,查看Python版本。
配置環境變量
為避免將AccessKey硬編碼到業務代碼中帶來的安全風險,本示例采用配置環境變量的方法管理AccessKey。具體操作,請參見在Linux、macOS和Windows系統配置環境變量。
安裝依賴
pip install alibabacloud_credentials
pip install alibabacloud_sts20150401==1.1.3
pip install alibabacloud_tea_console
下載示例代碼
在OpenAPI門戶,使用步驟二中創建的RAM用戶訪問AssumeRole調試地址。
輸入請求參數,單擊發起調用,查看調試結果是否成功。
請求參數中的RoleArn,填寫步驟三中創建的RAM角色ARN。關于查看RAM角色ARN的方法,請參見如何查看RAM角色的ARN?。
在SDK示例頁簽下的Python頁簽,單擊下載完整工程,下載Python SDK示例代碼包。
在本地解壓示例代碼包,并進入alibabacloud_sample目錄。
運行示例代碼
執行以下命令:
python sample.py
得到如下輸出:
"headers": {
"date": "Thu, 17 Aug 2023 10:17:04 GMT",
"content-type": "application/json;charset=utf-8",
"content-length": "846",
"connection": "keep-alive",
"keep-alive": "timeout=25",
"access-control-allow-origin": "*",
"access-control-expose-headers": "*",
"x-acs-request-id": "79E360B6-FAC5-5B18-8081-BC0F8E90A238",
"x-acs-trace-id": "b2fb071a47e03e6d6cd507fd05438021",
"etag": "8bZ4pA7U/ulImlQiwhQnxXw6"
},
"statusCode": 200,
"body": {
"AssumedRoleUser": {
"Arn": "acs:ram::151266687691****:role/test-role/test",
"AssumedRoleId": "30081280744271****:test"
},
"Credentials": {
"AccessKeyId": "STS.NTdbdgE5zgL2qcb5pAify****",
"AccessKeySecret": "Fyk6ab1xfCFn88hXFxzV44QnF6cDi9T2PiTJgsqU****",
"Expiration": "2023-08-17T11:17:04Z",
"SecurityToken": "CAIS7AF1q6Ft5B2yfSjIr5fRKd7TqOpb0ISgUnocHLFUE6eDM****"
},
"RequestId": "79E360B6-FAC5-5B18-8081-BC0F8E90A238"
}
}