关于Swift的Tempauth和Keystone

本文深入探讨了Swift认证系统与Keystone的集成过程,包括认证/授权机制、Tempauth与Keystone的区别以及如何扩展认证服务。文章详细介绍了如何在Swift中实现不同级别的用户权限管理和如何利用Keystone进行统一身份验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于Swift的Tempauth和Keystone

一、介绍


Swift集成认证系统的耦合度很低,所使用的认证系统也是一些已存在的认证系统。关于认证系统有一下几点:

1)认证/授权部分可以是一个外部认证系统或一个子系统以WSGI中间件形式运行在Swift。

2)swift用户的每次请求附件一个授权的token

3)swift采用外部认证系统或子系统验证每个token,并且缓存结果。

4)每次请求token不会改变,但是token有有效期


二、认证/授权过程


以下是我画的Keystone认证/授权过程


三、Tempauth


在一个账户(account)中有admin、non-admin 用户

  1. admin用户具有所有所有权限

  2. non-admin用户需要根据container的X-Container-Read和X-Container-Write ACLs来授权操作,更多参见swift.common.middleware.acl

  3. 如果认证系统设置了请求环境的swift_owner为True,则代理将会返回额外的头信息。例如,GET或HEAD一个container 的X-Container-Sync-Key

配置文件中的格式:

user_<account>_<user>= <key> [group] [group] [...] [storage_url]

特殊的组.admin,.reseller_admin = can do anything to any account for this auth

  1. .reseller_admin 具有对任何account操作的权限。

  2. .admin 具有对所在的account 操作的权限。

如果没有设置以上组,则用户只能访问那些被.admin或.reseller_admin所允许的container。


四、Keystone


基本术语:租户(tenant )、用户(user )、角色(role ),相对swift 在Keystone中:

  1. A tenant对应于swift中的an account

  2. A user对应于swift中的a user 

  3. A role 对应于swift中的a group 

在swift中一个账户里面的一个用户默认是没有任何权限,但是有用户可以为其用户操作container设置ACL。Keystone中间件中我们称作Operator,通过匹配中间件配置文件中的设置(keystone_swift_operator_roles= Admin, SwiftOperator)来知道那一个用户具有admin权限。一旦用户具有swiftOperator角色,他将具有访问、创建container及其他用户设置ACL等任何权限。


五、扩展Auth


TempAuth 是一个wsgi 中间件,因此实现你自己的auth集成到Proxy中, 就像写一新的wsgi中间件一样容易, KeyStone和Swauth 是认证服务的附加实例。Auth 服务和中间件参见:http://docs.openstack.org/developer/swift/development_auth.html


六、附录:

  1. http://docs.openstack.org/developer/swift/overview_auth.html

  2. http://docs.openstack.org/developer/swift/development_auth.html

  3. http://blog.chmouel.com/2011/11/24/swift-and-keystone-middleware-part1/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值