mysql8.0 密码认证插件_Openstack Swift笔记之认证与授权(三)

55cb0e8e52c511589dd6b2869a71587d.png

如果我们已经搭建了一套Swift环境,接下来的第一件事就是构建自己的认证和授权系统。Swift通过中间件支持自定义的认证和授权。请参考《openstack swift》的第八章,了解如何编写Swift中间件;

认证和授权一般分为两步:

认证:与认证服务器通信,完成认证;同时获取关于用户的信息;
授权:通过配置文件写授权策略,中间件根据授权策略和用户信息完成授权;

Swift 认证和授权框架

1f98c0ebfca692e87d059874245aef49.png

上图是Swift认证的整个流程:

  1. Swift服务提供商在认证服务器上为用户创建用户名和密码;
  2. Swift服务提供商以某种方式告知用户他的用户名、密码、和认证服务器地址;
  3. 用户向认证服务器发送自己用户名和密码,认证服务器返回给用户SotrageURL和Token;
  4. 用户向proxy server发送HTTP Restful API请求;
  5. proxy server利用认证中间件插件向认证服务器验证用户的合法性;
  6. 如果认证通过,利用memcache将用户信息进行缓存;
  7. 中间件根据授权策略和用户信息完成授权。
提示
AuthURL与StorageURL不同,AuthURL是认证服务器的地址,StorageURL一般是Proxy Server的地址;
Swift作为Openstack家族的一员,一般会选择keystone作为认证服务;
Swift也为Keystone服务开发了对应的认证插件,由authtoken和keystoneauth组成;
authtoken负责与keystone服务交互,获取认证信息;
- keystoneauth根据认证返回的信息,对用户进行授权;
- 认证服务器只是对用户的Token进行认证,并返回认证信息,授权行为则完全交给认证服务器对应的中间件来完成。

Keystone服务

因为keystone与Swift的关系紧密,我们先大致了解以下keystone。站在用户的角度来看,keystone包括:Domain、project、user、service、endpoint、group、token、role和endpoint。keystone就是提供了对Domain、project、user、service、endpoint、group、token、role的增删改查。region只是用来区分一个服务下的多个endpoint。

上面这就个概念之间的关系,如下:

d0fa71723c03d51d067edfd56cc0dfaa.png
提示
以上概念相互独立;
role也是一个相互独立的概念,用户和组都可以被赋予一个或多个角色。

如果我们希望使用keystone作为认证服务器:

  1. 需要在keystone服务上创建service、region、endpoint、role。Swift支持跨region部署,所以可以创建多个region和endpoint。
  2. 当创建用户时,需要创建user、group、project。Swift上一个用户对应一个组,对应一个独立的project。
  3. 为用户和组分配角色。Swift中包括全局管理员和普通用户,全局管理员可以操作所有用户的数据,普通用户只能操作自己的数据。

更多keystone操作,参见这里

认证中间件配置

现在,让我们来看一下keystone认证中间件的配置。

[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
auth_uri = http://192.168.100.20:5000
auth_url = http://192.168.100.20:35357
auth_plugin = password
username = xxx
password = yyy
project_name = admin
project_domain_name = default
user_domain_name = default
# delay_auth_decision defaults to False, but leaving it as false will prevent other auth systems, staticweb, tempurl, formpost, and ACLs from working. This value must be explicitly set to True.
delay_auth_decision = True
cache = swift.cache

authtoken设置的Swift的管理员的账户信息,它拥有在keystone下管理用户的权限。

[filter:keystoneauth]
use = egg:swift#keystoneauth
reseller_prefix = AUTH
operator_roles = admin,swiftoperator,admin-readonly
reseller_admin_role = admin

keystoneauth指明:拥有admin角色的用户或组,在Swift中是全局管理员。拥有admin,swiftoperator,admin-readonly角色的用户和组,在Swift中是普通用户。

提示
一个user,对应一个project
Account = AUTH_$(project)
keystone返回的role只是一个标记。该标记如何被解释由中间件自己决定;
ACL 是keystoneauth权限的补充,ACL是由认证中间件实现的。

更多信息请参见:这里和这里

swift auth middleware

84d5c836c1bc0670f00255dd56af993f.png

ubuntu安装keystone
项目地址:https://github.com/swiftstack/keystone_install
安装步骤
- 安装vim和curl
- 拷贝keystone到opt目录下面(如果keystone源代码下载过慢的话,可以将代码事先放置在/opt下,注意修改安装脚本)
- 安装特定版本的oslo.config: apt-get update; apt-get -y install git python-pip; pip install 'oslo.config==1.7.0'
- keystone_install项目

redhat-7上安装keystone
安装向导:http://confluence.chinac.com/pages/viewpage.action?pageId=5381923
注意:在/etc/keystone/keystone.conf文件中provider = fernet不需更改,这样安装会更快一点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值