阿里云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泄露的风险,提高了云资源的安全性。
相关推荐
狗头大军之江苏分军43 分钟前
《潮水漫过十七岁》开学了
后端
苏三说技术1 小时前
如何看待GPT-6在UP主众测中碾压夺冠?它是现在最强大模型吗?
后端
mldong2 小时前
一份 JSON,一条能跑的审批流:把报销流程送上工作流引擎
后端·架构
wno7042 小时前
Spring Boot WebFlux增删改查
java·spring boot·后端
Captaincc2 小时前
AI用量v0.1.11更新发布 新增 jusage doctor 诊断指令 托盘展示token 和余额 新增 AutoClaw 支持
前端·后端·vibecoding
aramae3 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端
kyriewen3 小时前
我让 AI 当面试官面了我一轮:第 3 个追问我就卡住了(附 10 道追问清单)
前端·面试·ai编程
IT_陈寒4 小时前
Python的GIL把我坑惨了,多线程跑得比单线程还慢
前端·人工智能·后端
分支预测失败4 小时前
RISC-V 时间子系统深度专题:mtime 访问路径、SBI 定时器与 Linux tickless 协同
后端
65岁退休Coder4 小时前
PI Agent 开发一个生产级 Harness
后端·node.js·agent