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。

https://n.alibaba-inc.com/peops/?spm=a1znmd.11230159.page.31.25162889bloeHC#/kos?type=ALIYUN::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.申请角色

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

操作地址:https://n.alibaba-inc.com/cloudAccountManage/ramRoleManageNew?spm=a1znmd.11230159.page.46.83c62889BgkKyz

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

如何拿到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,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
15天前
|
分布式计算 DataWorks 搜索推荐
DataWorks操作报错合集之DataWorks我做简单的用户画像,根据文档的例子,连接 OSS 时遇到连接问题,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
23 0
|
19天前
|
存储 对象存储 C++
在 VS Code 中使用 OSS 进行 Markdown 文档编写
阿里云OSS对象存储服务是理想的存储解决方案,专门用于承载大量非结构化数据。在VSCode中编写Markdown文档时,手动上传图片至OSS并获取相应链接的过程通常复杂且耗时。为此,Aliyun OSS Uploader插件应运而生,以简化和优化此流程。它不仅能够自动将图片上传到OSS并生成可供插入的链接,还能在您需要时通过撤回链接,删除已上传的图片,极大地提升了效率和便捷性。
|
27天前
|
Java API 对象存储
对象存储OSS产品常见问题之使用Spring Cloud Alibaba情况下文档添加水印如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
31 2
|
2月前
|
存储 机器学习/深度学习 安全
oss合规性认证
阿里云OSS在合规性方面表现出色,尤其适合金融等行业。它通过了Cohasset审计,满足SEC、FINRA和CFTC的记录保存要求。OSS提供数据复制时间控制和服务器端加密,确保数据实时复制和安全性。此外,可能符合ISO 27001、HIPAA、GDPR、PCI-DSS等标准,并有配置审计服务保证资源合规性。欲知详情,建议访问阿里云官网或联系客服获取最新合规认证信息。
24 4
|
7月前
|
Java 对象存储
【工具类】使用阿里oss实现图片、视频、文档上传
【工具类】使用阿里oss实现图片、视频、文档上传
251 0
|
8月前
|
存储 Linux API
如何经济高效使用云存储网关对接OSS存储
存储网关是一款可以为OSS存储提供文件访问接口的产品,从而用户可以像使用NAS一样在Windows/Linux操作系统里面直接挂载OSS进行使用。众所周知,OSS存储具有多种存储类型。那么对于所有的存储类型,云存储网关是否都适用呢?本文将围绕这一话题,展开一些探讨。
164 0
|
5月前
|
对象存储
uniapp对接oss视频上传+压缩
uniapp对接oss视频上传+压缩
311 0
|
6月前
|
存储 JavaScript 前端开发
html+vue组件实现阿里云OSS对接
html+vue组件实现阿里云OSS对接
431 0
|
7月前
|
存储 人工智能 安全
阿里云oss简介和如何对接使用
阿里云对象存储服务(Alibaba Cloud Object Storage Service,简称OSS)是阿里云提供的一种安全、稳定、高效的对象存储服务。它支持多元数据存储、持久化存储和共享访问,并且具有无限的扩展性和备份恢复能力。阿里云OSS适用于各类场景,如云计算、大数据分析、人工智能等,并且具备高可用性、高可扩展性和低成本等优势。
631 0
|
9月前
|
对象存储
阿里云OSS如何对接外链网盘
阿里云OSS如何对接外链网盘
305 1