对象存储服务访问控制原理介绍(二):身份认证

网友投稿 907 2022-05-29

OBS身份认证简略流程如下图:

1、用户使用在华为云注册的账号名/密码登录华为云;

2、登录成功后,在IAM Console申请AK/SK;

3、利用申请到的SK计算出单次OBS HTTP 请求的签名;

4、将AK和签名随HTTP请求发送到OBS;

5、OBS使用HTTP请求携带的AK到IAM获取用户SK;

6、IAM返回用户AK对应的SK;

7、OBS使用和第3部完全相同的方式计算出签名,并验证签名是否相同;

8、验证通过,请求成功,返回对象数据。

这其中有3步涉及到了身份认证:

1、第1步,用户和IAM之间的身份认证;用户只有通过了认证才能生成并下载到AK/SK;

2、第5步,OBS和IAM之间的身份认证;OBS只有通过了认证才能通过AK查询到对应的SK;

3、第7步,用户和OBS之间的身份认证;用户只有通过了认证才能访问到对象数据

注:实际过程中,这些操作还需要进行鉴权,确认该用户是否有执行操作的权限,这里为了防止误解,没有在描述中说明。

从上面的过程也可以看出,认证的目的最终其实还是保护数据,上面分别保护:SK、SK、Object Content。

有了简略流程,我们再回过头来讲认证方案:

对象存储服务访问控制原理介绍(二):身份认证

认证(Authentication)是指通过一定的手段,完成对用户身份的确认。

身份认证的目的是确认当前所声称为某种身份的用户,确实是所声称的用户。一般来说,有如下3种因素能够用于身份认证:

·         某人所知道的内容

根据知识进行身份认证,可以是:密码、PIN、短语或家里小狗的名字。

优点:实现简单、经济实惠

缺点:易丢失

·         某人所拥护的物品

根据所有权进行身份认证,可以是:钥匙、门卡、身份证等。

优点:安全性较高

缺点:需要物理接触携带不方便

·         某人的身份

根据生物特征进行身份认证,可以是:指纹、虹膜、声纹、行为等。

优点:安全性最高

缺点:成本高,依赖硬件,不正确的实现将导致凭证永久丢失

实际实现中,为追求更高级别的安全性,一般会使用上诉两种甚至三种方式的组合,对应我们通常所说的“双因素认证Two-factor authentication (TFA or 2FA) ”“多因素认证Multi-factor authentication (MFA)”。

上诉简略流程中的3步认证,均使用到了“某人所知道的内容”(注:IAM还支持双因素认证,这里不详细解释)。该方式一般有如下实现方案:

·         基于账号口令的认证

·         基于预共享密钥的认证

·         基于公钥的认证

·         基于数字证书的认证

IAM使用“基于账号口令的认证”方案,对用户和对OBS均通过分发账号口令,登录时验证来完成身份认证,由于这部分主要由IAM控制,这里不做详细解释。

OBS使用“基于预共享密钥的认证”方案,一般场景下,有如下要点:

·         算法选择:对称加密算法 or 密码校验函数

·         连接场景:长连接 or 短连接

·         时变参数:随机数 or 时间戳

·         认证模型:双向认证 or 单向认证

OBS业务不同于传统B/S场景,业务上下文无强制依赖,无需维护复杂的会话生命周期,连接场景基于:短连接;业务对性能要求极高,对称加密算法虽然具有同时实现认证和加密的优点,但性能较低,因此算法选择:密码校验函数;业务要求单次短连接,时变参数不适合需要多次交互的随机数,因此时变参数选择:时间戳;同时因为单次短连接原因,认证模型也不适合需要多次交互的双向认证,因此认证模型选择:单向认证。

总结起来:OBS使用的是一种:基于预共享SK使用密钥校验算法包含时间戳的单向单次认证方式。

·         预共享SK:用户在IAM申请AK/SK并仅有一次下载机会。

·         密钥校验算法:基于RFC2104 HMAC算法。

·         时间戳:请求访问的时间会包含在算法签名中。

·         单向:服务端认证客户端。

·         单次:短连接,每次访问都进行认证。

方案的安全机制:

通过比较签名的形式来确认身份。客户端在发起请求前,需要将头域和内容hash进行HMAC计算,得到的字符窜就是签名。客户端将签名随HTTP头域一同发给服务器端,服务器端将按照同样的方式再计算一次,相同则认证通过。有如下优点:

·         防仿冒:只有持有正确预共享SK的用户才能通过认证,访问指定资源;

·         防窃听:SK作为密钥参与签名,但不需要在网络传输,无法被窃听;

·         防篡改:内容hash值也参与签名,若被篡改,服务器端将拒绝请求;

·         防重放:时间也参与签名,超时服务器端将拒绝请求;

对象存储服务

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

上一篇:《TCP/IP详解 卷2:实现》 —1.12 中断级别与并发
下一篇:Android高级UI开发(二十七)Material Design之转场动画(一)
相关文章