阿里云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泄露的风险,提高了云资源的安全性。
相关推荐
华科易迅10 分钟前
Spring AOP
java·后端·spring
架构师沉默13 分钟前
Gemini 正式登陆香港,不用翻墙!
java·后端·架构
你挚爱的强哥26 分钟前
解决:动态文本和背景色一致导致文字看不清楚,用js获取背景图片主色调,并获取对比度最大的hex色值给文字
前端·javascript·github
zihao_tom29 分钟前
Spring WebFlux:响应式编程
java·后端·spring
想打游戏的程序猿31 分钟前
从零理解 LLM 与 Agent
后端·ai编程
wooyoo35 分钟前
花了一周 vibe 了一个 OpenClaw 的 Agent 市场,聊聊过程中踩的坑
前端·后端·agent
NAGNIP1 小时前
面试官:正则化都有哪些经典的方法?
算法·面试
树獭叔叔1 小时前
文本Embedding模型演进:从Encoder-only到LLM-based的技术变革
后端·aigc·openai
游离态指针1 小时前
首字节响应 0ms?我用 1000 行代码驯服了 Spring AI Agent 的“不确定性”
后端