1、AWS S3(Amazon Web Services)(Storage Area Network,简称SAN)。

AWS是亚马逊公司旗下云计算服务平台,为全世界范围内的客户提供云解决方案。AWS面向用户提供包括弹性计算、存储、数据库、应用程序在内的一整套云计算服务,帮助企业降低IT投入成本和维护成本。

Amazon (S3) 是一个公开的服务,Web 应用程序开发人员可以使用它存储数字资产,包括图片、视频、音乐和文档。 S3 提供一个 RESTful API 以编程方式实现与该服务的交互。

2、Keystone是Openstack的组件之一,用于为Openstack家族中的其它组件成员提供统一的认证服务,包括身份验证,令牌的发放和校验,服务列表,用户权限的定义等。Openstack中任何组件均依赖与Keystone提供的服务。

亚马逊的AWS S3和Openstack Swift分别采取了不同的算法来对每一个HTTP请求进行鉴权。以下是二者的鉴权过程:

一、AWS S3的HTTP请求鉴权流程

AWS采取的鉴权算法类似于HTTP基本认证。我们知道Base64只是对字符串进行了一个转换存储,是可以反向解析出源字符串的,因此基本认证中使用Base64编码处理过的用户名和密码可以被截获,一旦用户名和密码泄漏,黑客可以构造任何需要的请求进行数据窃取和改写。AWS采用的是签名认证的思想来解决这一问题。

基本原理:
1.客户端将请求中的通用信息(如:Bucket、Object、请求时间戳和请求方法名等)和Secret ID进行SHA256哈希计算得到一个字符串;
2.最终在HTTP请求中传输的是该HASH值。其中Access Key在请求中以明文传输;
3.服务端拿到该请求后,首先提取出Access Key,然后根据Access Key到服务端数据库中查询创建租户时分配给该租户的Secret ID;
4.服务端从请求中提取通用信息,配合查询得到的Secret ID,使用同样签名计算过程计算一个签名,然后与请求中携带的签名进行比对,二者一致则认为该请求是合法请求,鉴权通过。否则返回403鉴权失败。

如果整个HTTP请求被截获,黑客虽然能得到该鉴权值,但是无法反解析出用户的Secret ID,因为SHA是不可逆。因此最坏的情况:可以重复发送该请求(不修改请求中任一参数)到服务端,攻击范围非常有限。

假设,黑客想使用该鉴权值伪造新的请求,那么修改请求中的通用信息,而签名值没有改变,最终鉴权也无法通过。

那么是不是黑客可以一直使用该鉴权发送该请求呢?也不是的,AWS S3拿到请求后会比对服务端的时间与请求中的时间的差值,如果该请求的发出时间比服务端的时间早15分钟,则认为该请求为非法请求。客户端必须以新的时间戳来重新生成新的HASH值,再发送请求。
    从上面的过程来看,AWS的鉴权算法非常好的解决了密钥泄漏和每一个请求都能得到鉴权的问题。

二、基于Keystone的Openstack Swift的HTTP请求鉴权流程

Keystone的原理比较简单,整个系统提供全局唯一的Keystone服务,客户端在发送HTTP请求之前,首先需要向Keystone申请一个Token(定长的字符串),该Token的有效期由Keystone服务端来指定。申请Token时,需要向Keystone提供用户名和密码,这里可以理解成AWS中的Access Key和Secret ID,Keystone认证通过该用户之后,发放Token给客户端。之后客户端每次发送HTTP请求时都必须携带该Token,Swift拿到该Token和用户名信息后,也会像Keystone查询该Token是否有效。Token有效,则继续处理该业务,Token无效,则返回鉴权失败。

这样的鉴权过程存在一些问题:
1.相比于AWS的鉴权,这里如果Token泄漏,会造成比较严重的后果,虽然Token有有效期,但是每次都需用用户名和密码去申请,频繁申请也有可能会造成密钥的泄漏;
2.每一次请求都需要Swift与Keystone之间作一次交互,性能可能存在问题。

事实上,Openstack就发生过多次Token永久有效的bug,导致数据被破坏。当然这样的架构也有其优点,Keystone可以在多个服务间共享,将鉴权逻辑集中管理,做到了服务级的重用,而AWS必须在每一个服务中解析和生成签名,只能做到模块或者代码级别的重用。
————————————————
版权声明:本文为CSDN博主「Tomorrower_hua」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Tomorrower_hua/article/details/90228458

云存储的两种鉴权机制(转载)相关推荐

  1. 什么是鉴权?postman的有几种鉴权方式?

     目录 一.什么是鉴权? 二.postman鉴权方式 一.什么是鉴权? 鉴权也就是身份认证,就是验证您是否有权限从服务器访问或操作相关数据.发送请求时,通常必须包含相应的检验参数以确保请求具有访问权限 ...

  2. 技术分享|明源云天际集成开放平台接口中心基于IdentityServer4的鉴权机制

    源宝导读:企业数字化生态建设中为解决集成多样性和资源统一管理的痛点引入企业级网关,网关作为资源访问的大门,身份认证鉴权是其业务的重中之重,本文将介绍企业级网关-天际集成开放平台是如何通过Identit ...

  3. 云调用,小程序鉴权正确姿势

    目录: 一.无处不在的鉴权 1. 现实生活中的身份鉴权方法 2. 简单的密码鉴权体系 二.鉴权优化 1. 频繁的鉴权场景下的优化方案 2. 第三方鉴权体现下的设计--oAuth 2.0鉴权体系 三.说 ...

  4. 一口气说出前后端 10 种 鉴权方案!!!

    前言 还记得之前在面试的时候,有一位面试官就问了,关于前端鉴权这块,Token.Cookie.Session.JWT.单点登录是什么?有什么作用?你一般是怎么做的?以及你是怎么存储的呢?那你又是怎么保 ...

  5. 鉴权 前后端常见的几种鉴权方式

    https://juejin.cn/post/6844903927100473357 鉴权(authentication)是指验证用户是否拥有访问系统的权利.传统的鉴权是通过密码来验证的.这种方式的前 ...

  6. 在NAS上基础构建云存储系统的两种解决方案

    对于一个成功的.具有极高可扩展性的NAS存储系统来说,要想架构云存储系统解决方案需要什么? 云存储的概念始于Amazon提供的一项服务(S3),同时还伴随着其云计算产品(EC2).在Amazon的S3 ...

  7. Django DRF 两种接口安全机制及其配置

    Django DRF 两种接口安全机制及其配置 接口安全机制,用于设置和管理用户调用接口时的权限问题.此处介绍最常用的两种接口安全机制及其配置. 1 使用之前 先生成接口文档 便于测试 1.1 安装依 ...

  8. aka鉴权 ims_IMS的AKA鉴权机制

    摘要: IP 多媒体子系统 ( IMS ) 作为 3G 网络的核心控制平台,其安全问题正面临 着严峻的挑战. IMS 的 接入 认证机制的实现作为整个 IMS 安全方案实施的第一步, 是保证 IMS ...

  9. PageRank、图计算、图存储的两种方式

    目录 PageRank 什么是PageRank? 算法原理 入链 ====投票 入链数量 入链质量 网络上各个页面的连接图 计算过程 初始值 迭代递归计算(收敛) 图存储的两种方式 代码实现 Page ...

最新文章

  1. python中subplot是什么意思_python matplotlib中的subplot函数使用详解
  2. 计算机更改本地用户,win10电脑更改本机账户名的详细步骤(图文)
  3. [codility]Min-abs-sum
  4. Android仿微信界面
  5. Redis之内存分析
  6. postgreSQL数据库里面导入数据
  7. 思科DHCP不同网段通信
  8. C#+ajaxupload实现图片上传
  9. 在lua中调用DLL
  10. 女程序员年薪45万外加两套房,一日相亲两次,网友:找得到才怪
  11. html获取百度网盘 文件列表,教你如何导出百度网盘详细目录结构
  12. 【git及GitHub使用总结】(一)
  13. 常用自然语言处理NLP模型原理
  14. 宝塔面板权限问题导致php上传文件失败
  15. docker-tags 命令行获取docker远程仓库上指定镜像的tag列表
  16. 副业赚钱的路子有哪些?分享6种较为实用的副业方式
  17. 手把手教你批量收藏宗介和波妞壁纸
  18. 华为STP、RSTP、MSTP区别及配置
  19. 企业办理ISO认证的四大关注点!
  20. Java细碎知识点归纳

热门文章

  1. 熊海CMS_V1.0代码审计与漏洞分析及采坑日记(一)--文件包含漏洞
  2. 友盟的常见使用----三方登陆、分享和“埋点”(友盟统计)
  3. 学习高翔一起做rgbd-slam中关于g20部分的学习一
  4. 什么是开源?为什么要坚持开源?
  5. 使用canvas绘制圆环进度条
  6. 如何预防猪流感!猪流感!?会像SARS那样爆发吗?我们能作的就是预防。
  7. 【英文】阅读句子理解小妙招 that/which从句到底修饰谁?
  8. 安卓手机刷twrp和magisk
  9. Matlab论文插图绘制模板—三维柱状图(高度赋色)
  10. 能力成长模型(转自阿里梁飞老师博客)