keystone中间件的使用配置

  OpenStack的其他服务在使用keystone作为统一的身份认证服务器时,需要部署keystone中间件即keystonemiddleware,中间件的作用主要是拦截用户发往各个服务的请求,对其中用户的令牌(token)进行验证后拒绝用户的请求或将该请求传递给下一个中间件。

  OpenStack中有一些服务具有自己的认证方式,因此想要使用统一的身份认证方式就必须正确配置keystone中间件。

  本文就介绍如何配置和使用keystonemiddleware。

  

  1.  首先我们要在各个服务的paste.ini文件中,设置如下的两个filter(通常是自带的):

  [filter:authtoken]

  paste.filter_factory = keystonemiddleware.auth_token:filter_factory

  [filter:keystonecontext]

  paste.filter_factory = nova.api.auth:NovaKeystoneContext.factory

  2. 接着我们要将第一步中定义的authtoken keystonecontext中间件放置在目标pipeline的适当位置,这样我们就完成了对paste.ini文件的修改。事实上,第三步中写入到.conf文件中的配置信息[keystone_authtoken]中的内容也可以紧接着[filter:authtoken]字段补充,但是这样会使得paste.ini文件变得臃肿,所以我们将具体驱动的细节配置统一放入.conf文件,使得paste.ini文件简洁清晰。

  但是对于对象存储服务swift而言,该服务没有自己的paste.ini配置文件,不过这不重要,因为我们可以将filter的声明和具体配置都写入swift的.conf配置文件中。

  3.  在各个服务的.conf文件中设置:

  [DEFAULT]

  ...

  auth_strategy=keystone

  ...

  [keystone_authtoken]

  auth_port = 35357

  auth_host = 127.0.0.1

  admin_user = admin

  admin_password = keystone123

  注意这些设置内容可以在这两个配置文件中的任何一个设置,但是paste.ini文件中的配置信息具有优先权,一旦设置,将会取代.conf中的配置信息发挥作用。

  下面我们列出所有keystonemiddleware可选的配置项

  1.  auth_admin_prefix: 路径前添加的前缀

  2.  auth_host:(必须)提供keystone服务的API终端URL

  3.  auth_port: (可选, 默认35357)用来验证令牌的端口

  4.  auth_protocol: (可选, 默认https)用来验证令牌的协议类型

  5. auth_uri: (可选, 默认auth_protocol://auth_host:auth_port)认证令牌的完整URL

  6. auth_version: 要使用的管理API 版本

  7. delay_auth_decision: (可选, 默认off). 如果是on, 中间将将不会拒绝无效的认证请求,而是将决策的权利委托给下游的WSGI组件

  8. http_connect_timeout: (可选) 向keystone服务器请求多久就算超时

  9. http_request_max_retries: (默认3) 向keystone服务器请求的次数

  10.   http_handler: (可选) Allows to pass in the name of a fake http_handler callback function used instead of httplib.HTTPConnection orhttplib.HTTPSConnection. Useful for unit testing where network is not available.

  11.   admin_token: 必须指定该项或下面的全部三个选项,该选项的值应与keystone配置时设置的管理员令牌相同.

  12.   admin_user, admin_password, admin_tenant_name: 如果没有提供管理员令牌,那么这三个配置项就应该是已经在keystone中配置好的服务账户

  13.   certfile: (必须)如果keystone服务器要求客户端提供cert,那么该项必须提供

  14.   keyfile: (必须) 如果keystone服务器要求客户端提供cert,那么必须提供该项,如果certfile包含私钥,那么该项的值可以与certfile相同.

  15.   cafile: (可选, 默认使用系统的CA ) 用来验证https连接的CA 文件路径.

  16.   insecure: (可选, 默认False) 不要验证https连接.

  17.   signing_dir: (可选) 储存与PKI令牌相关文件的目录

  18.   memcached_servers: (可选)如果定义, 指定用于缓存的 memcache server(s)

  19.   token_cache_time: (默认300秒) 为了避免过度请求和验证,中间件会使用内存缓存机制来缓存每一个keystone服务器返回的令牌。该项仅在定义了memcache_servers 后才生效,设为-1将会完全关闭缓存

  20.   cache: (可选) Env key for the swift cache

  21.   memcache_security_strategy: (可选) 如果定义, 指示令牌数据是否需要认证或认证加密。可接受的值包括MAC和ENCRYPT 。MAC选项将会在缓存中采用HMAC算法认证令牌,ENCRYPT选项将会在缓存中加密和认证。任何不是这两个值或空值中的一个,那么中间件将会在初始化阶段报错。

  22.   memcache_secret_key: (定义memcache_security_strategy后必需)该选项用来导出密钥;

  23.   memcache_pool_dead_retry: (可选), 重试以前memcache服务器被认为“已死”的秒数;

  24.   memcache_pool_maxsize: (可选), 每个memcache服务器最大开放连接数;

  25.   memcache_pool_socket_timeout: (可选), 套接字连接memcache服务器的超时秒数;

  26.   memcache_pool_unused_timeout: (可选), 不用的memcached连接多久会被关闭;

  27.   memcache_pool_conn_get_timeout: (可选), 一个操作从连接池中获得一个memcache客户端连接所等待的时间;

  28.   memcache_use_advanced_pool: (可选), 采用高级(eventlet安全的)memcache客户池,当前该高级连接池仅适用于python 2.x.

  29.   include_service_catalog: (可选, 默认True) 指示是否设置X-Service-Catalog 字段. 如果为False, 中间件在验证令牌的过程中将不会获取服务目录,同时也不会设置X-Service-Catalog 字段。

  30.   enforce_token_bind: (默认 permissive) 用来控制令牌绑定的使用和类型。设置为disabled 将不会检查令牌绑定,permissive 将会验证系统已知的绑定类型,忽略那些系统中没有定义的绑定类型;strict验证系统已知的绑定类型,拒绝系统未知类型的令牌绑定;required允许任何类型的令牌绑定。最后,绑定的方法必须出现在令牌中。

  31.   check_revocations_for_cached: (默认False), 如果为true,则会检查缓存令牌的撤销列表,要求在keystone服务器上配置PKI令牌;

  32.   hash_algorithms: (默认md5), 用来哈希PKI令牌的算法,可以使一个或多个,只要是python标准的hashlib.new()支持的算法即可。按照该项给出的顺序进行哈希尝试,因此将最为偏好的算法设置在该项的第一个。当从一个较不安全的算法向一个较安全的算法过渡时,该项通常设置为多个值,一旦所有旧令牌都过期,该项应该被设置成单一的值从而提升性能。

  

时间: 2024-10-07 03:26:29

keystone中间件的使用配置的相关文章

centos 6.5 Atlas 中间件的安装配置

前言: Atlasy由奇虎出品,在mysqp-proxy上开发而已,自带lua脚本,th用于取代 mysql-proxy和amoebo ,后两者已经停止开发. atlas :192.168.168.130 master:192.168.168.128 slave: 192.168.168.129 配置master和slave 主从: 参考:http://752030200.blog.51cto.com/8936921/1853460 首先从官方下载rpm安装包.https://github.co

Apache Kafka 分布式消息队列中间件安装与配置 转载

bin/zkServer.sh start /home/guym/down/kafka_2.8.0-0.8.0/config/zookeeper.properties& bin/kafka-server-start.sh config/server.properties bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 1 --partition 1 --topic mykafka bin/kafka-list-topi

中间件安全基线配置

Apache 纵观 Apache的漏洞史,它曾经出现过许多次高危漏洞.但这些高危漏洞,大部分是由 Apache的 Module造成的, Apache核心的高危漏洞几乎没有. Apache有很多官方与非官方的 Module,默认启动的 Module出现过的高危漏洞非常少,大多数的高危漏洞集中在默认没有安装或 enable的 Module上.因此,检Apache安全的第一件事情,就是检查 Apache的 Module安装情况,根据“最小权限原则”,应该尽可能地减少不必要的 Module,对于要使用的

OpenStack基础学习及keystone服务配置

一.openstack基础学习 OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作.OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单.可大规模扩展.丰富.标准统一的云计算管理平台.OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成. 二.环

Ubuntu 12.04 LTS配置Icehouse版Keystone

keystone配置文件概况keystone的配置文件在/etc/keystone目录下,主要的配置文件包括:-----------------------------------------------------------------------------------------------------default_catalog.templates //目录配置文件,标注openstack其他服务的网络位置ec2rc keystone.conf.dpkg-dist //主配置文件模板

S1_搭建分布式OpenStack集群_04 keystone认证服务安装配置

一.新建数据库及用户(控制节点)# mysql -uroot -p12345678MariaDB [(none)]> CREATE DATABASE keystone;MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone123';MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO

初识keystone

前言 OpenStack概念不多讲了,因为讲不明白.只了解过keystone,其他服务是干什么的,怎么用的,目前还没有驱动力去了解,所以就自觉闭嘴了,只贴一张比较有意思的图. Openstack社区非常活跃,开发者很多,代码和文档更新也很频繁,最近几天看文档的过程中就发现过文档内容调整的情况,虽然官网上的文档非常多,但是感觉有点分散,加上V2和V3 版本并存,有些概念和设计在不断演进,新学者刚开始不太容易理出头绪,下面对这段时间学习keystone的一些心得做个总结. "keystone&quo

openstack-o版安装keystone

Keustone身份认证组件是openstack项目中默认的身份认证管理系统,所有的服务都需要keystone认证.根据用户的等级分配相应的权限. 那么我们现在配置最新版本openstack的认证服务keystone 前提准备:Centos7.3.163yum源.openstack-o版源.DNS.时间同步.数据库.rabbitmq.memcache 创建数据库 create database keystone: 为数据库用户赋予权限(赋予一个本地用户权限,一个远程登入权限) GRANT ALL

StaticFileMiddleware中间件如何处理针对文件请求

StaticFileMiddleware中间件如何处理针对文件请求 我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMiddleware的中间进行了全面的介绍,接下来我们将更近一步,将从实现原理的角度来进一步认识这个中间件. [本文已经同步到<ASP.NET Core框架揭秘>之中] 目录 一.StaticFileMiddleware二.Content