热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OpenStackSwift认证系统

Swift目前已经支持keystone认证,不过官方的安装文档中还使用了TempAuth,这篇翻译,关于auth帮助我们更好的理解swiftauth,TheAuthSystem认证系统TempAuthSwift的认证系统松散的基于Rackspace架构下存在的认证系统-事实上来自于一些存在的认证系统-因

Swift目前已经支持keystone认证,不过官方的安装文档中还使用了TempAuth,这篇翻译,关于auth帮助我们更好的理解swift auth,

The Auth System 认证系统

TempAuth

Swift的认证系统松散的基于Rackspace架构下存在的认证系统-事实上来自于一些存在的认证系统-因此有一些杂乱。得到了一下的几点:
1.鉴权的部分可以使一个外部的系统或者子系统运行在Swift作为WSGI中间件。
2.在每次请求中,Swift的用户通过需要认证令牌。
3.Swift确认每一个令牌通过一个额外的认证系统或者认证子系统缓存这个结果。
4.令牌在请求直接不会改变,倒是存在有效期。

能通过Swift的令牌使用X-Auth-Token或者X-Storage-Token 头部。都有相同的格式:只是一个简单的字符串代表这个令牌。有些认证系统使用UUID令牌,有些使用唯一的MD5值,还有使用其他方法的,但是共同点是令牌是一个字符串可以没送回认证系统进行校验。

Swift将会调用认证系统,给予认证令牌进行校验。对于一个有效的令牌,认证系统响应一个整体有效的秒数从现在开始。Swift将缓存这个令牌知道期满。

包括TempAuth也admin和non-admin的概念在一个账户中。admin用户可以做任何事在账户内,non-admin用户只能执行操作容器基于容器的X-Container-Read和X-Container-Write ACLs.更多的信息在ACLs,see
swift.common.middleware.acl

此外,如果认证系统设置request environ的swift_owner的值为True,代理服务器将会返回一个额外的头段信息在一些请求中,就像是X-container-Sync-Key对于容器的GET或者HEAD。

用户开始一段会话通过发送一个ReST 请求到认证系统去接受认证令牌和一个URL到Swift 系统。

Keystone Auth

Swift 可以认证通过OpenStack keystone取道 swift.common.middleware.keystoneauth 中间件。
为了使用keystoneauth中间件 authtoken中间件通过keystone,需要进行相关的配置。

authtoken中间件执行认证令牌确认和取回真实用户的认证信息。它可以在Keystone分布中找到。

keystoneauth中间件执行认证和映射keystone角色到Swift's ACLs。

Configuring Swift to use Keystone

配置Swift使用Keystone 是相当直接的。第一步是确保你已经安装了auth_token中间件,分布在keystone,它可以访问通过你的python路径或者keystone包的安装路径。

你需要首先确认你有一个服务端点的类型object-store在keystone指向你的Swift代理服务器。例如有如下配置在你的/etc/keystone/default_catalog.templates

catalog.RegionOne.object_store.name = Swift Service
catalog.RegionOne.object_store.publicURL = http://swiftproxy:8080/v1/AUTH_$(tenant_id)s
catalog.RegionOne.object_store.adminURL = http://swiftproxy:8080/
catalog.RegionOne.object_store.internalURL = http://swiftproxy:8080/v1/AUTH_$(tenant_id)s

在你的Swift代理服务器你将调整你的主管道加入auth_token和keystoneauth在你的/etc/swift/proxy-server.conf

pipeline:main]
pipeline = [....] authtoken keystoneauth proxy-logging proxy-server
添加authtoken中间件的配置:
[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
auth_host = keystonehost
auth_port = 35357
auth_protocol = http
auth_uri = http://keystonehost:5000/
admin_tenant_name = service
admin_user = swift
admin_password = password

这些变量真实的值需要被设置依赖于你的情况。更多的信息,请参考Keystone文档关于auth_token中间件,简而言之:
1.这些变量以auth_开始指向Keystone admin服务。这些信息被用来通过中间件来真实的查询Keystone关于变量的认证令牌。
2.admin认证授权(admin_user,admin_tenant_name,admin_password)将会用来取回一个admin认证。那个认证将会用来鉴权用户令牌在之后的场景中。

注意: 如果需要支持未检测的用户(通过匿名访问)或者用 tempurl/formposts 中间件,认证需要配置delay_auth_decision设置为1。

最后你可以添加keystoneauth配置:

[filter:keystoneauth]
use = egg:swift#keystoneauth
operator_roles = admin, swiftoperator

默认下只有用户可以给予ACL或者创建其他容器是那些Keystone角色指定 operator_roles设置。

有那些角色其中之一的用户有能力给予ACLs到其他用户的容器,看ACL的文档 swift.common.middleware.acl

Extending Auth 扩展认证

TempAuth被作为wsgi中间件,随意实现你自己拥有的认证就像是写一个新的wsgi中间件一样简单,把它插入到你的代理服务器。Keystone和Swauth项目都是额外认证服务的例子。


推荐阅读
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 探讨如何通过编程技术实现100个并发连接,解决线程创建顺序问题,并提供高效的并发测试方案。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 邮件(带附件,模拟文件上传,跨服务器)发送核心代码1.测试邮件发送附件接口***测试邮件发送附件*@parammultipartFile*@return*@RequestMappi ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文探讨了在不使用服务器控件的情况下,如何通过多种方法获取并修改页面中的HTML元素值。除了常见的AJAX方式,还介绍了其他可行的技术方案。 ... [详细]
author-avatar
A198806192616
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有