阿里云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泄露的风险,提高了云资源的安全性。
相关推荐
子兮曰3 小时前
OpenClaw入门:从零开始搭建你的私有化AI助手
前端·架构·github
Victor3563 小时前
https://editor.csdn.net/md/?articleId=139321571&spm=1011.2415.3001.9698
后端
Victor3563 小时前
Hibernate(89)如何在压力测试中使用Hibernate?
后端
灰子学技术5 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
Gogo8166 小时前
BigInt 与 Number 的爱恨情仇,为何大佬都劝你“能用 Number 就别用 BigInt”?
后端
fuquxiaoguang6 小时前
深入浅出:使用MDC构建SpringBoot全链路请求追踪系统
java·spring boot·后端·调用链分析
毕设源码_廖学姐6 小时前
计算机毕业设计springboot招聘系统网站 基于SpringBoot的在线人才对接平台 SpringBoot驱动的智能求职与招聘服务网
spring boot·后端·课程设计
野犬寒鸦8 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
逍遥德8 小时前
如何学编程之01.理论篇.如何通过阅读代码来提高自己的编程能力?
前端·后端·程序人生·重构·软件构建·代码规范
MX_93599 小时前
Spring的bean工厂后处理器和Bean后处理器
java·后端·spring