全部產品
Search
文件中心

Resource Access Management:STS Python SDK調用樣本

更新時間:Jun 21, 2024

本文以Python SDK為例,為您介紹如何通過STS(Security Token Service)OpenAPI調用AssumeRole介面擷取一個扮演RAM角色的臨時身份憑證(STS Token)。

步驟一:查看OpenAPI文檔

閱讀API概覽,選擇可以擷取一個扮演RAM角色的臨時身份憑證(STS Token)的OpenAPI:AssumeRole - 擷取扮演角色的臨時身份憑證。根據介面文檔,瞭解調用該介面需要的參數及許可權。

步驟二:建立RAM使用者並授權

身份

您可以使用RAM使用者、RAM角色調用該介面,不能使用阿里雲帳號(主帳號)調用。關於各種身份的差異,請參見身份

本樣本中,使用RAM使用者調用介面。

登入RAM存取控制,建立一個RAM使用者。具體操作,請參見建立RAM使用者

憑證

進入到對應的RAM使用者詳情頁,在認證管理頁簽下的使用者AccessKey地區,單擊建立AccessKey,建立一個新的AccessKey。具體操作,請參見建立AccessKey

重要

RAM使用者的AccessKey Secret只在建立時顯示,不支援查看,請注意儲存。

授權

  1. 訪問RAM使用者列表,單擊目標RAM使用者操作列的添加許可權

  2. 在文字框中輸入關鍵字sts進行搜尋,選擇AliyunSTSAssumeRoleAccess系統策略。

    AliyunSTSAssumeRoleAccess:調用STS服務AssumeRole介面的許可權。

  3. 單擊確認新增授權,完成授權操作。

步驟三:建立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

下載範例程式碼

  1. 在OpenAPI門戶,使用步驟二中建立的RAM使用者訪問AssumeRole調試地址

  2. 輸入請求參數,單擊發起調用,查看調試結果是否成功。

    請求參數中的RoleArn,填寫步驟三中建立的RAM角色ARN。關於查看RAM角色ARN的方法,請參見如何查看RAM角色的ARN?

  3. SDK樣本頁簽下的Python頁簽,單擊下載完整工程,下載Python SDK範例程式碼包。

  4. 在本地解壓範例程式碼包,並進入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"
	}
}