OSS对接-STS认证模式接入参考文档

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 背景之前项目中用到文件上传的场景中,都是由服务端做转发到OSS,存在着性能损耗。我们在 高德文件直传能力建设 项目中需要探索使用客户端直连OSS的方式来做,了解到OSS提供了STS认证的方式,通过子账号生成的临时AK作为客户端短期访问OSS的凭证,也不同担心AK安全的问题。具体方案见官方文档:STS临时授权访问OSSOSS可以通过阿里云STS(Security Token Service)进行临时

背景

之前项目中用到文件上传的场景中,都是由服务端做转发到OSS,存在着性能损耗。我们在 高德文件直传能力建设 项目中需要探索使用客户端直连OSS的方式来做,了解到OSS提供了STS认证的方式,通过子账号生成的临时AK作为客户端短期访问OSS的凭证,也不同担心AK安全的问题。具体方案见官方文档:STS临时授权访问OSS

OSS可以通过阿里云STS(Security Token Service)进行临时授权访问。通过STS,您可以为第三方应用或子用户(即用户身份由您自己管理的用户)颁发一个自定义时效和权限的访问凭证。


根据STS的技术规范,我们需要申请子账号及对应的角色,才能完成STS的认证。具体接入代码见下图:

了解到集团对云资源的需求都统一走诺曼底申请,所以我们尝试在诺曼底申请。整个过程还挺费劲的。主要是STS认证的方式,集团基本没有团队接入,所以在诺曼底上没有子账号创建角色的入口。我们找到相关人聊了好久才解决。下面记录一下接入过程

接入过程

1.创建bucket

首先需要申请OSS云资源,操作路径为【云资源管理】/【云资源申请】,点击创建bucket。

申请完成后在云资源筛选里能看到刚才申请的bucket。

2.关联子账号

然后在云资源列表中找到bucket,点击【bucket授权】,关联子账号。

子账号授权有两种方式。

  •   选择已有RAM子账号  

  •   创建新的RAM子账号  

按自己实际情况选择 。目前代码中不允许明文AK存在,所以两种方式差别不大。

如果要获取明文AK可以选择【创建新的RAM子账号】,这种方式能直接看到AK、SK,不需要走审批流程;选择已有已有RAM子账号的方式需要走获取明文AK的审批流程;


操作完成后就关联上子账号了。

3.查看AK、SK

普通场景下不需要获取明文AK,直接使用集团的无AK化方案。

集团在推行无AK化方案,不需要明文获取AK了。具体接入文档见:

https://yuque.antfin-inc.com/docs/share/6e5423a2-61e2-486f-9980-3421cbdfa283?#

但是我们这种属于平台模式,无AK化方案不支持,需要拿到AK、由平台自己利用KC做加密存储

如何特殊场景需要获取到明文AK、SK,可以参考如下:

如果在关联子账号时选择了【创建新的RAM子账号】,需要走审批流程获取AK、SK。在【云账号管理】/ 【子账号管理】/【我管理的子账号】列表中找到对应账号,点击【操作列表】/【获取明文AK】走审批流程获取

如果选择了【选择已有RAM子账号】,在【云账号管理】/ 【子账号管理】/【我管理的子账号】中可以看到AK、SK,不需要申请了

4.申请角色

在【云账号管理】/【角色管理】下创建角色。填写角色名称、关联子账号就可以了。

创建完成就能再角色列表中看到了

如何拿到roleArn?

在进行STS认证时需要有roleArn参数,目前诺曼底上看不到,需要提需求解决。但是roleArn 有拼接规则,可以临时拼一下使用。

拼接规则为:

var roleArn = "acs:ram::${主账号uid}:role/${角色名}"

1647796581073291 这个是生产网vpc的主账号id

还有个办法,在角色列表页用浏览器查看HTTP请求,接口中已经返回了arn,拷贝出来直接使用~


5.为角色申请权限

【云账号管理】/【角色管理】

在角色列表点击【权限管理】,为角色申请bucket读写权限;诺曼底里有读写权限的模板,一般只申请读写权限就行了。也可以自定义语句申请。

申请通过后就能在权限信息里看到申请的权限了。

点击【查看策略】,可以查看具体的权限信息

6.给子账号申请assumeRole 权限

申请了这个权限子账号才可以进行STS认证流程


【云账号管理】/【子账号管理】

在我管理的子账号列表中找到子账号,点击权限管理,进行assumeRole 权限申请。会跳一个新页面,点击【申请新权限】.

这个权限没有现成的模板选择,选择自定义语句申请。确认提交后进入审批流程。这个要经过安全、sre等多层审批,流程较长

自定义语句可参考如下:

{
  "Statement":[
    {
      "Action":"sts:AssumeRole",
      "Effect":"Allow",
      "Resource":"acs:ram:*:1647796581073291:role/aos-read-role"
    }
  ],
  "Version":"1"
}

1647796581073291 是集团公共主账号ID,role 后面是角色名

Resource的写法也可参考:

https://help.aliyun.com/document_detail/93744.html?spm=a2c4g.11186623.6.705.3f674781h714Tq

审批通过后就能进行验证了

7.验证

调用STS认证接口验证。认证通过就没啥问题了。

8.常见问题

  1. 申请完权限后进行STS认证还是提示?

NoPermission : You are not authorized to do this action. 
You should be authorized by RAM.\r\nRequestId : 
419F92CB-17F3-4684-9E9E-E1EF8A58453C

检查assumeRole 是否申请给了角色而不是子账号。应该是给子账号申请assumeRole 权限

附录:https://yuque.antfin-inc.com/docs/share/c129be7f-e995-4767-94fe-c079c9cbbe75?#

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
8月前
|
存储 Cloud Native API
oss云网关配置
配置阿里云OSS与云网关实现灵活数据传输和访问控制。步骤包括开通OSS服务,创建Bucket,获取访问凭证,可选配置CORS和生命周期规则。云网关配置涉及阿里云云原生网关的代理规则设定或使用云存储网关集成OSS访问,具体配置需参照产品文档,因产品更新可能会有变动。
173 1
|
3月前
|
存储 Java 开发工具
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
阿里云OSS(Object Storage Service)是一种安全、可靠且成本低廉的云存储服务,支持海量数据存储。用户可通过网络轻松存储和访问各类文件,如文本、图片、音频和视频等。使用OSS后,项目中的文件上传业务无需在服务器本地磁盘存储文件,而是直接上传至OSS,由其管理和保障数据安全。此外,介绍了OSS服务的开通流程、Bucket创建、AccessKey配置及环境变量设置,并提供了Java SDK示例代码,帮助用户快速上手。最后,展示了如何通过自定义starter简化工具类集成,实现便捷的文件上传功能。
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
|
5月前
|
NoSQL Serverless API
Serverless 架构实现弹幕场景问题之API Gateway和OSS域名未绑定成功的问题如何解决
Serverless 架构实现弹幕场景问题之API Gateway和OSS域名未绑定成功的问题如何解决
48 0
|
8月前
|
存储 安全 数据安全/隐私保护
OSS完全托管加密
阿里云OSS提供全面的数据安全解决方案,包括服务器端SSE(SSE-C和SSE-KMS)和客户端CSE加密。SSE-C允许用户自定义密钥,SSE-KMS则利用KMS托管密钥,简化管理。CSE则在上传前于客户端加密数据。这些功能确保数据静态时的安全,即使数据传输被拦截,也能保护数据隐私。用户可根据业务需求选择合适的加密策略。
90 2
|
8月前
|
存储 弹性计算 小程序
对象存储OSS产品常见问题之Bucket授权策略中授权用户的id如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
142 0
|
存储 安全 Java
如何接入OSS
如何接入OSS
|
8月前
|
DataWorks 算法 对象存储
这个问题可能是由于DataWorks和OSS之间的签名算法不一致导致的
这个问题可能是由于DataWorks和OSS之间的签名算法不一致导致的
52 2
|
存储 Java 对象存储
阿里云开通OSS存储服务详细流程
阿里云开通OSS存储服务详细流程
阿里云开通OSS存储服务详细流程
|
存储 SQL 缓存
访问 OSS 这类对象存储最快的方式- JindoFS SDK |学习笔记
快速学习 访问 OSS 这类对象存储最快的方式- JindoFS SDK
416 0
访问 OSS 这类对象存储最快的方式- JindoFS SDK |学习笔记
|
小程序 对象存储 数据安全/隐私保护
【OSS】支付宝小程序直传OSS实践
小程序是当下比较流行的移动应用,例如大家熟知的微信小程序、支付宝小程序等。它是一种全新的开发模式,无需下载和安装,为终端用户提供更优的用户体验。如何在小程序环境下上传文件到OSS也成为开发者比较关心的一个问题。 小程序上传文件到OSS是利用OSS提供的PostObject接口来实现表单文件上传到OSS。
1104 0
【OSS】支付宝小程序直传OSS实践