对象存储服务访问控制原理介绍(四):使用场景

网友投稿 850 2022-05-29

本想介绍一下StringToSign的生成规则,但OBS官网已有详述,因此本章介绍使用场景。

https://support.huaweicloud.com/api-obs/zh-cn_topic_0100846721.html

只要用户想要限制对数据的访问,那么就需要进行身份认证。换句话说:除非这个数据就是为了给全世界看的,否则都需要做身份认证。

具体到OBS,数据也分为内部数据和租户数据:

·         内部数据包括:配置类数据、运维类数据、运营类数据、监控类数据等。

·         租户数据包括:桶/对象数据、桶/对象元数据、日志数据等。

OBS除了给互联网租户提供服务之外,同时也给华为云内部服务提供存储能力,因此涉及数据的访问场景分为如下:

·         OBS内部数据访问场景

·         华为云内部数据访问场景

·         租户数据访问场景

OBS内部数据访问场景

OBS运行过程中,需要完成复杂的解决方案场景,在这些场景中,OBS同样有访问数据的诉求:

·         话单、日志等数据存储

OBS产生的话单、日志数据会存储在内部租户的特定桶中,由特定的AK/SK访问,AK/SK的规则和租户规则相同。区别在于内部租户的AK/SK由OBS自行管理;

租户的请求会产生访问日志和话单,这些日志和话单分散在各个集群节点,节点将按各种触发条件将数据存储到内部桶中。用于安全审计和计费。

·         对象复制等需要跨集群、跨Region数据访问功能

因OBS跨Region/AZ的部署形式,会出现多种类型的跨Region/AZ访问请求,这些请求由用户发起,但完成功能需要内部集群相互配合,配合的过程中,也需要进行身份认证。凭证和上一场景相同。

用户发起复制请求,想要把位于Region2桶bucket2中的obj002对象,复制为位于Region1桶bucket1的obj001对象。

Region1中的OBS节点,会以内部请求的形式访问Region2的OBS节点,并将获取到的对象数据写入到Region1中的桶。

华为云内部数据访问场景

为保证数据的高可靠性,华为云内部服务通常也会将OBS作为数据中转设备或最终的数据存储基础设施。同时,解决方案场景下,OBS也将作为其中的组成部分,和其它服务共同组成行业解决方案。

·        云硬盘备份

为云硬盘提供在线备份,通过备份快速恢复数据,保证业务安全可靠。OBS作为存储数据的终点。提供最终的可靠性保证(11个9)。

通常华为云内部服务在IAM会有自己的特定租户,访问OBS将会通过这部分租户的凭证发起请求,而OBS针对这些租户的处理流程大致和普通租户相同。

·         大数据分析

OBS作为存储数据的中转和终点,快速、可靠传递和存储数据。

租户数据访问场景

租户数据访问是OBS的核心业务场景,按照业务场景大致归类为如下3类:

·         匿名访问

租户可以通过设置桶为公共读的方式,将数据在互联网公布,此时,任何人都可以通过特定的URL访问到该桶的数据。比如:企业门户网站、公开文档等。

顾名思义,匿名访问场景下访问者不需要携带任何凭证信息。直接通过HTTP GET URL的形式就可以访问。

通常情况下,如果用户HTTP REQUEST中没有携带“Authorization”头域,则认为本次是匿名访问,匿名访问不会进行身份认证,请求将进入权限判断,如果请求访问的数据不是“公共读”的数据,则请求会被拒绝。

·         临时认证

某些场景下,用户访问OBS时没有或不适合使用永久凭证,那么此时可以使用临时凭证进行认证。比如:租户对他自己的客户提供服务,但是这个服务需要他的客户直接访问OBS。

举一个较实际的例子:

A公司是一个游戏公司,开发的手游风靡全国。A公司将游戏服务器端部署在了华为云ECS,并使用OBS存储数据。时间到了7月,A公司为了增强游戏可玩性,发布了新补丁并将补丁推送到了OBS。A公司希望他的客户可以直接访问OBS下载补丁,因为这样可以省去ECS做中转,防止服务器因流量过大而崩溃。但不希望任何人都能下载这个补丁,因为下载补丁会产生流量和访问次数费用。

此时,可以使用临时凭证,服务器端为每个客户端申请限时的临时凭证,并将凭证返回给手机端,手机端使用该凭证直接访问OBS获取升级补丁。

具体流程如下:

1、  用户使用SK和String To Sign生成签名Signature;

2、  将Signature和AK合并为Authorization头域;

3、  STS Token作为临时凭证直接作为x-amz-security-token头域;

4、  OBS接收到本次请求后,将Authorization头域拆分为Signature和AK;

5、  按照String To Sign的规则在OBS服务器端再计算一次;

6、  将AK和STS Token传递给IAM Server;

7、  IAM Server解析后返回SK,该SK即为用户签名时使用的SK;

8、  使用SK和String To Sign再计算一次签名Signature;

9、  比较Signature1和Signature,如果相等则Allow,否则Deny。

注1:STS Token由IAM生成,在申请临时凭证时,会随响应返回,所以,临时凭证其实包含3个组成部分:AK/SK/STS Token,这也是和标准凭证的主要区别。

注2:STS Token起什么作用呢?主要是解决IAM存储瓶颈问题。设想这样一个场景,一个正常用户频繁申请临时凭证,而IAM为了后续能够解析AK/SK,必须在本地数据库存储这个临时AK/SK,每次访问就是一条AK/SK记录,临时凭证的不重复和接口调用不受限的特性,会导致IAM数据库无限膨胀下去。为了解决这个问题,STS Token应运而生,IAM会将SK信息直接加密放到STS Token中,IAM自身不维护任何持久化信息。解析时,IAM只需要将STS Token解密(当然,也只有IAM可以解密这个数据。),然后把解密后的SK返回给调用方即可。这也是上述步骤为什么要传入STS Token的原因。

·         标准认证

主要的OBS使用场景,如果用户持有AK/SK直接访问OBS,都属于该场景。

具体的应用场景可参考:

https://www.huaweicloud.com/product/obs.html

具体流程如下:

对象存储服务访问控制原理介绍(四):使用场景

1、  用户使用SK和String To Sign生成签名Signature;

2、  将Signature和AK合并为Authorization头域;

3、  OBS接收到本次请求后,将Authorization头域拆分为Signature和AK;

4、  按照String To Sign的规则在OBS服务器端再计算一次;

5、  将AK传递给IAM Server;

6、  IAM Server解析后返回SK,该SK即为用户签名时使用的SK;

7、  使用SK和String To Sign再计算一次签名Signature;

8、  比较Signature1和Signature,如果相等则Allow,否则Deny。

总结

讲了这么多场景,可以看出,无论什么样的场景,最终其实还是归结到HMAC算法结果的比较。场景的区别在于:

·         凭证由谁维护(OBS维护内部数据访问场景下的凭证,其余由IAM维护)

·         凭证如何获取(临时凭证通常由租户提供给租户的客户,标准凭证由IAM提供给租户)

·         凭证如何解析(临时凭证由IAM解密后返回,标准凭证由IAM从数据库查询)

所以,若分析安全风险,除了算法本身的弱点之外,还需要考虑场景使用的弱点。类似于登录口令再复杂,如果用户写到纸上贴到墙上,那安全性同样无法保证。下一章节将分析OBS身份认证的攻击场景。

对象存储服务

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:珍藏版linux运维笔试题
下一篇:【云驻共创】让资管更简单,释放每一平米空间资产价值
相关文章