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

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 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快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
目录
相关文章
|
存储 网络安全 数据处理
阿里云对象存储OSS计费模式按量付费和包年包月选择攻略
阿里云OSS对象存储计费模式分为按量付费和包年包月,默认开通OSS就是按量付费,购买资源包抵扣OSS费用的方式属于包年包月计费模式
3701 0
阿里云对象存储OSS计费模式按量付费和包年包月选择攻略
|
5月前
|
存储 弹性计算 数据管理
阿里云对象存储OSS收费标准:存储费、流量价格及不同计费模式全解析
阿里云OSS收费标准涵盖存储、流量等费用,支持按量付费与资源包两种模式。标准存储按量0.09元/GB/月,包年500GB仅需118.99元,流量费按公网出方向计费,闲时0.25元/GB,忙时0.5元/GB,可购流量包更优惠。
1965 6
|
分布式计算 DataWorks API
DataWorks操作报错合集之在将ODPS空间设置成保护模式后,导出到OSS的任务出现了权限问题,该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
356 1
|
对象存储 流计算 存储
实时计算Flink > 独享模式 > Batch(试用) > 创建源表 —— 创建OSS源表
本页目录 创建OSS源表 OSS With参数 创建OSS源表 OSS 阿里云对象存储服务(Object Storage Service),简称OSS。为您提供基于网络的数据存取服务。
1920 0
|
5月前
|
存储 人工智能 Cloud Native
阿里云渠道商:OSS与传统存储系统的差异在哪里?
本文对比传统存储与云原生对象存储OSS的架构差异,涵盖性能、成本、扩展性等方面。OSS凭借高持久性、弹性扩容及与云服务深度集成,成为大数据与AI时代的优选方案。
|
7月前
|
存储 运维 安全
阿里云国际站OSS与自建存储的区别
阿里云国际站对象存储OSS提供海量、安全、低成本的云存储解决方案。相比自建存储,OSS具备易用性强、稳定性高、安全性好、成本更低等优势,支持无限扩展、自动冗余、多层防护及丰富增值服务,助力企业高效管理数据。
|
7月前
|
存储 域名解析 前端开发
震惊!不买服务器,还可以用阿里云国际站 OSS 轻松搭建静态网站
在数字化时代,利用阿里云国际站OSS可低成本搭建静态网站。本文详解OSS优势及步骤:创建Bucket、上传文件、配置首页与404页面、绑定域名等,助你快速上线个人或小型业务网站,操作简单,成本低廉,适合初学者与中小企业。
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
SQL 分布式计算 Serverless
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
323 0