阿里云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泄露的风险,提高了云资源的安全性。
相关推荐
AINative软件工程几秒前
LLM 应用的 Adaptive Batching 工程实践:动态合批把吞吐提升 3 倍,但延迟的坑你踩过吗
后端·llm·ai编程
用户6919026813392 分钟前
LangChain 与 LangGraph:从「链」到「图」,一次讲清它们是什么、什么关系
面试·架构·设计
parser11 分钟前
Python 装饰器:从语法糖、闭包到 @wraps(上篇)
后端
高频因子挖掘机12 分钟前
股票池一大就请求缓慢?量化系统批量获取行情的设计与优化
后端·github·api
郑州光合科技余经理12 分钟前
本地生活平台搭建:跨业态用户标识怎么贯通
java·开发语言·前端·后端·uni-app·php·ai编程
Thneonl19 分钟前
故意弄坏生产:混沌工程不是乱砸,是实验设计
后端·程序员
Thneonl28 分钟前
别上来就 strace:60 秒十条命令看清一台病机
后端·程序员
CoderYanger28 分钟前
A.每日一题:856. 括号的分数
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
马剑威(威哥爱编程)37 分钟前
【AI全栈后端12-11】Spring Boot 把 AI 接口真正上线扛量:限流 / 降级 / 可观测
人工智能·spring boot·后端
tachibana21 小时前
Golang 中数组和切片的区别?
开发语言·后端·golang·数组·切片