2019独角兽企业重金招聘Python工程师标准>>>

本文假设读者已对OOS有一定的认识了解并且已经自行成功搭建过Swift,背景还有部署方法这里就不多说了,这里Swift使用的身份认证组件为Keystone,参照官方文档步骤操作发现,对container设置ACL后仍没法实现允许任何人访问该容器下的object。后来查看Swift中间件源码中的注释得知,只需在proxy-server.conf中启动相应配置即可解决上述问题。

首先来看看proxy-server.conf中的pipline顺序:
[pipeline:main]
pipeline = catch_errors healthcheck proxy-logging cache bulk slo ratelimit authtoken keystoneauth container-quotas account-quotas staticweb proxy-logging proxy-server

上面标红部分为keystone认证组件,在正常情况下,请求要顺利通过proxy-server,必须要从keystone或者cache中拿到一个有效token,然而要想拿到token的话,必须要输入Tenant、User和password等相关信息。这样来说,swift仅提供了私有存储的服务,要想实现公有存储服务,仍需做以下操作。

第一,修改proxy-server.conf配置
引用keystoneauth.py代码注释说明:
If support is required for unvalidated users (as with anonymous access) or for formpost/staticweb/tempurl middleware, authtoken will need to be configured with ``delay_auth_decision`` set to true.

[filter:authtoken]
...
delay_auth_decision = true
...

查看swift和keystone相关代码暂时没有弄懂这个设置是在哪里、通过哪一个逻辑判断生效的,通过字面意思可以看出,系统暂时延迟用户身份的认证,交由后面组件来把关是否Authentication required!

第二,对指定的Container设置ACL授权
参考 os-objectstorage-devguide-1.0.pdf 的4.8章节
在container的metadata元素当中,X-Container-Read有着特别重要的作用,它可以通过ACL授权指定谁可以直接读取该container当的所有objects,二在设定 X-Container-Read之前,ACL的逻辑规定访问请求是必须包含有一个有效的 X-Auth-Token,否则将无法进入访问!现在我们尝试设定X-Container-Read看看能否实现container下面objects对任何人可读。
关于X-Container-Read的详细介绍可见 http://docs.openstack.org/developer/swift/misc.html#id5
eg:
这里对current容器添加允许任何人读取的设定, X-Container-Read: .r:*
结果如下:

第三,检查是否生效
首先查看一下current容器返回的http头部是否已经包含了X-Container-Read的信息:

可以清楚看到之前的PUT操作已经成功生效了,current容器下面有两个objects,接下来我们通过浏览器尝试访问 新建文本文档.txt,由于object之前没有设置好content-type,浏览器打开直接变成了下载模式了。

转载于:https://my.oschina.net/alanlqc/blog/160196

Openstack Object Store(Swift)设置公有存储的方法相关推荐

  1. outlook邮件服务器保存设置,邮件Outlook设置本地存储的方法--

    Outlook设置本地存储的方法 由于每人邮箱空间有限如果服务器邮箱中的邮件超过邮箱容量的95%就不能正常收发邮件. 因此我们不能将邮件大量.长期的存放在服务器上而需要把这些邮件转移到本地硬盘上 ...

  2. outlook服务器与本地文件,Outlook设置本地存储的方法

    <Outlook设置本地存储的方法>由会员分享,可在线阅读,更多相关<Outlook设置本地存储的方法(10页珍藏版)>请在人人文库网上搜索. 1.Outlook设置本地存储的 ...

  3. 【Unity人物属性】人物属性大量设置用set,get方法还是public成员

    当使用到设置人物属性的时候,使用set,get方法还是 直接把 人物属性 设置 为  public成员 本文没有描述SendMessage方法和使用单例. ---------------------- ...

  4. swift设置启动图不现实_如何通过装饰房屋来开始在Swift中使用增强现实

    swift设置启动图不现实 by Ranadhir Dey 由Ranadhir Dey 如何通过装饰房屋来开始在Swift中使用增强现实 (How to get started with augmen ...

  5. android手机 存储路径设置在哪里找,Android 存储路径选择方法

    Android能用来存储的地方有两个,一个是手机内置的存储空间,一个是外置的SD卡,内置的存储空间一般比较小,所以应用的缓存建议存储在外置的SD卡中. 在Android系统中如何获得存储的路径呢? p ...

  6. ACCE创建Object Store

    n久不做FileNet开发的我,赶上了一个FileNet的安装配置工作,在多年前只搞过4.5Workplace XT的我就这样进入了项目.时间在变化FileNet也有了很大的变化FileNet已经进不 ...

  7. Swift 设置文字阴影

    Swift 设置文字阴影其实很简单 我们一UILabel为例来看 let label1=UILabel(frame: CGRectMake(30, 50, 310,36))label1.text=&q ...

  8. Linux挂载freenas的Nfs,在FreeNAS上配置FreeNAS以设置ZFS存储磁盘和创建NFS共享 - 第2部分...

    在我们以前的文章中,我们已经展示了如何安装FreeNAS的服务器. 在这篇文章中,我们将介绍FreeNAS的配置和使用ZFS的设置存储. 将ZFS磁盘添加到FreeNAS 要求 安装和配置FreeNA ...

  9. [Swift5] Swift 设置自定义预编译宏

    在开发中经常用 target 区分正式.测试环境,用到自定义的预编译宏来判断,OC中可以在 target 的 Preprocessor Macros 里设置,Swift 则不同. Swift设置预编译 ...

最新文章

  1. 免秘登陆linux_linux普通用户免秘钥登陆操作
  2. 数据结构 -- 单链表
  3. C/C++语法知识:typedef struct 用法详解
  4. vue-router组件重用 路由切换时的问题
  5. js日期操作,某天的N天后,一个月后的日期
  6. 理解Scala - 核心规则
  7. 数字图像处理——相关检测
  8. C4D插件X-Particles粒子特效(一)
  9. 动态炫酷的404页面源码
  10. 高斯消元法python编程_割圆术计算圆周率与矩阵高斯消元法(Python)
  11. 学生使用腾讯云搭建个人网站
  12. Redis可视化客户端Redis Desktop Manager(中文版)下载及使用
  13. 物联网云平台DTU Modbus协议 上位机 下位机 源码 源代码 程序
  14. 港科夜闻|国务院港澳办主任夏宝龙在香港科大考察期间,表示对学校开展创科工作的鼓励及希望...
  15. 硬盘录像机服务器地址谁控制的,海康硬盘录像机通用设置方法
  16. 【练习记录】C语言实现正则表达式匹配
  17. JMS基本概念和模型
  18. go语言刷题:77. 组合
  19. android gif播放慢了,Glide加载Gif动画播放速度过慢的问题
  20. python-pygame实现飞机大战-3-发射子弹以及击中敌机

热门文章

  1. 【Scala】Scala中特殊函数的使用(代码)
  2. linux 下mysql5.7+使用group by、order by报错ONLY_FULL_GROUP_BY不修改配置文件
  3. python写数据库校验_Python:生成验证码并插入到数据库!
  4. mysql 事务 异常_mysql事务级别以及相应的异常现象
  5. macos php开发环境,macOS 10.13 High Sierra PHP开发环境配置
  6. 没有基础怎么学Web前端?相关学习路线是什么?
  7. 专为前端开发者准备的15款优秀的Sublime Text插件
  8. python程序源码百行_百行python代码,轻松完成贪吃蛇小游戏
  9. php转化为2位小数的数字,学习猿地-php 转化为两位小数的方法
  10. 途观l怎么使用_值得考虑的SUV车型,昂科威、探岳、途观L,你会如何选?