RAM帐号
- 阿里云控制台添加RAM子用户,附加
AliyunSTSAssumeRoleAccess
策略,并下载${AccessKey ID}
和${AccessKey Secret}
RAM角色
- 阿里云控制台新建RAM角色,添加
OSS
相关策略,并记录下该角色的${ARN}
阿里云CLI方式
- 下载安装:https://help.aliyun.com/document_detail/121541.html?spm=a2c4g.11186623.6.545.583d1803KAEO2k
获取临时授权配置信息
- 参数解释
- RoleArn:RAM角色的ARN
- RoleSessionName:自定义名称,便于审计管理
- DurationSeconds:过期时间,默认3600秒,最小900
- 命令实例
aliyun sts AssumeRole \
--RoleArn ${ARN}
--RoleSessionName Fantasy
--DurationSeconds 1200
Python方式
- 安装Aliyun Python SDK
使用官方pip方式安装
## 先安装依赖,cryptography>=2.6.0
pip install cryptography
## 安装阿里云SDK核心库
pip install aliyun-python-sdk-core
## 安装阿里云STS服务SDK
pip install aliyun-python-sdk-sts
- 脚本示例:get_sts_token.py
#!/usr/bin/env python
#coding=utf-8
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdksts.request.v20150401.AssumeRoleRequest import AssumeRoleRequest
#构建一个阿里云客户端,用于发起请求。
#构建阿里云客户端时需要设置AccessKey ID和AccessKey Secret。
client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-hangzhou')
#构建请求。
request = AssumeRoleRequest()
request.set_accept_format('json')
#设置参数。
request.set_RoleArn("<RoleArn>")
request.set_RoleSessionName("<RoleSessionName>")
#发起请求,并得到响应。
response = client.do_action_with_exception(request)
# python2: print(response)
print(str(response, encoding='utf-8'))
返回结果示例
{
"RequestId": "5A5FA4E2-9144-4F78-835F-16A103AA50EE",
"AssumedRoleUser": {
"Arn": "acs:ram::135525***********:role/sts-test/ccccc",
"AssumedRoleId": "380073601646468600:ccccc"
},
"Credentials": {
"SecurityToken": "CAIS7AF1q6Ft5B2yfSjIr5f/L/Dh3rcZNB0cbgQDHWU0C+hZGKmR481BKaKJmXcFnhunJZ49mTLEePPTGMNZmOluQUDLA+VRW5ajxrHcpfIhAYxuYRKXrWM4TGUHeo+B2yanBloQ1hk2hyxL2iy8mHkHrkgUb91/UeqvaaQPHmTbE1bMYvDYrojbcrJvqQjHIB0XUQqvcq1p4j0Czco9SQD2NW5xi7KOfO+rVtVlQoOfBmR/YV8aSsyqIh57ONt0Nz+cWopMoSu1vd7BL0RN4NuzmALhhnrQ13zu5iBJ+qHwyoagcaB9TpbFhDWiRjcxhauv6ni4SRARacP3QsouyubxdeEFIDlYFDDvZrzLcqLUOswPvsYTseJIDThKBa8",
"AccessKeyId": "STS.NTJdJU3h***********",
"AccessKeySecret": "Cjy8Wx7SRo9aKvZ3D******************",
"Expiration": "2021-06-03T03:07:54Z"
}
}
- 将配置更新至
~/.ossutilconfig
[root@fantasy ~]# ossutil64 ls oss://${bucket_name}/
LastModifiedTime Size(B) StorageClass ETAG ObjectName
2021-06-02 21:31:33 +0800 CST 11248 Standard D4BCD66351A14C887811314FE2C38890 oss://${bucket_name}/get_helm.sh
Object Number is: 1
0.117287(s) elapsed