文档

STS Python SDK调用示例

更新时间:

本文以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系统

    将以下命令中的<access_key_id><access_key_secret>替换为您自己的AccessKey ID和AccessKey Secret,输入到终端执行。

  • export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
  • Windows系统

    新建系统环境变量,变量名分别为ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET,变量值分别为RAM用户的AccessKey ID和AccessKey Secret,然后重启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"
	}
}
  • 本页导读 (1)
文档反馈