阿里云STS:安全、灵活的临时访问管理

阿里云STS:安全、灵活的临时访问管理

阿里云的STS(Security Token Service)是一种临时访问权限管理服务,用于为用户或应用程序提供临时的访问凭证。这些凭证可以自定义有效期和访问权限,主要用于跨账号访问、临时授权以及单点登录(SSO)等场景。

STS的主要特点

  • 临时性:STS Token具有时效性,可以自定义有效期,到期后自动失效,无需手动撤销。
  • 自定义权限:可以为STS Token绑定自定义权限策略,提供更加灵活和精细的云资源授权。
  • 安全性:减少长期访问密钥泄露的风险,不需要将AccessKey交给第三方应用。

使用阿里云STS的步骤

  1. 创建RAM用户和RAM角色

    • 登录RAM控制台,创建RAM用户和RAM角色。
    • 为RAM角色授予相应的权限策略。
  2. 获取STS Token

    • 使用RAM用户的访问密钥调用STS API(如AssumeRole接口),以获取RAM角色的临时身份凭证,即STS Token。
  3. 使用STS Token访问资源

    • 使用STS Token(包括临时访问密钥和安全令牌)访问阿里云资源,如OSS。

OSS应用 + STS的使用案例

案例背景

某电商企业A将商品数据存储在阿里云OSS中。供应商企业B需要定期向A的OSS上传数据,但企业A不希望将固定AccessKey泄露给企业B。

解决方案

  1. 创建RAM用户和RAM角色

    • 企业A在RAM控制台创建一个RAM用户(如upload_user)和一个RAM角色(如upload_role)。
    • upload_role授予上传OSS数据的权限策略。
  2. 获取STS Token

    • 企业A的应用服务器以upload_user身份调用STS API的AssumeRole接口,获取upload_role的STS Token。
  3. 传递STS Token给企业B

    • 企业A将获取的STS Token传递给企业B,企业B使用该Token访问企业A的OSS资源。
  4. 企业B上传数据

    • 企业B使用STS Token上传数据到企业A的OSS中。Token过期后,企业B将自动失去访问权限。

优势

  • 安全性:企业A无需将长期AccessKey泄露给企业B,降低了数据泄露风险。
  • 权限控制:企业A可以根据需求动态调整企业B的访问权限。
  • 时效性:STS Token过期后自动失效,确保了访问控制的灵活性和时效性。

示例代码(Python)

以下是使用Python获取STS Token并访问OSS的示例代码:

python 复制代码
import oss2
from aliyunsdkcore.client import AcsClient
from aliyunsdksts.request.v20150401 import AssumeRoleRequest

# STS配置
access_key_id = 'your_access_key_id'
access_key_secret = 'your_access_key_secret'
role_arn = 'your_role_arn'
role_session_name = 'your_role_session_name'

# 获取STS Token
client = AcsClient(access_key_id, access_key_secret)
request = AssumeRoleRequest()
request.set_accept_format('json')
request.set_RoleArn(role_arn)
request.set_RoleSessionName(role_session_name)
response = client.do_action_with_exception(request)
sts_token = response.decode('utf-8')

# 解析STS Token
import json
sts_info = json.loads(sts_token)
access_key_id = sts_info['Credentials']['AccessKeyId']
access_key_secret = sts_info['Credentials']['AccessKeySecret']
security_token = sts_info['Credentials']['SecurityToken']

# 使用STS Token访问OSS
auth = oss2.StsAuth(access_key_id, access_key_secret, security_token)
bucket = oss2.Bucket(auth, 'https://oss-cn-beijing.aliyuncs.com', 'your_bucket_name')

# 上传文件到OSS
bucket.put_object('example.txt', 'Hello, World!')

数值指标

  • 有效期:STS Token的有效期可以自定义,通常为15分钟到1小时。
  • 权限粒度:STS Token可以精细到具体的资源操作,如读写OSS Bucket。
  • 安全性:STS Token减少了长期AccessKey泄露的风险,提高了云资源的安全性。
相关推荐
还有几根头发呀1 小时前
UDP 与 TCP 调用接口的差异:面试高频问题解析与实战总结
网络·网络协议·tcp/ip·面试·udp
花月C1 小时前
Mysql-定时删除数据库中的验证码
数据库·后端·mysql·spring
XMYX-06 小时前
Spring Boot + Prometheus 实现应用监控(基于 Actuator 和 Micrometer)
spring boot·后端·prometheus
@yanyu6668 小时前
springboot实现查询学生
java·spring boot·后端
酷爱码8 小时前
Spring Boot项目中JSON解析库的深度解析与应用实践
spring boot·后端·json
AI小智9 小时前
Google刀刃向内,开源“深度研究Agent”:Gemini 2.5 + LangGraph 打造搜索终结者!
后端
java干货9 小时前
虚拟线程与消息队列:Spring Boot 3.5 中异步架构的演进与选择
spring boot·后端·架构
一只叫煤球的猫9 小时前
MySQL 8.0 SQL优化黑科技,面试官都不一定知道!
后端·sql·mysql
拉不动的猪10 小时前
管理不同权限用户的左侧菜单展示以及权限按钮的启用 / 禁用之其中一种解决方案
前端·javascript·面试