OpenStack Keystone 与只读 LDAP 集成(修正版)
云计算已经成为炙手可热的话题,越来越多的企业已经开始了数据中心云计算化
的实施规划。随着 OpenStack 的崛起以及迅速走红,很多企业已经将 OpenStack 作
为自身私有云建设的首选。但是在企业内部部署 OpenStack 的过程中,跟企业内部
现有服务进行整合的过程中也出现各种必须面对的问题。
例如企业内部统一身份验证的问题。企业内部已有成熟的 LDAP 服务,如何与
OpenStack 的验证服务进行整合,以实现统一身份验证便是一个较为普遍的问题。
OpenStack 现在的 Grizzly 版本对 LDAP 验证机制已经有非常好的支持。但是却对
LDAP 服务有较为严苛的要求,例如需要拥有写权限,需要按照 Keystone 的需求建
立 LDAP 中的组织结构及角色定义。
但是,通常成熟的 LDAP 服务组织结构及角色定义都已经成型不宜进行改变,并
且通常只会开放只读权限,以提供身份验证服务。因此,OpenStack 中对 LDAP 的支
持并不适合那些已经拥有成熟 LDAP 服务的企业及组织。
本文主要向读者介绍利用 OpenStack 现有对 SQL 及 LDAP 验证的支持,自定义
一个通过只读 LDAP 进行验证的混合验证后端,使 OpenStack 可以通过顺利通过企
业内部已有的只读 LDAP 服务进行统一身份验证。
1) Keystone 简介
Keystone 是 OpenStack 的一个核心项目,其作用是为 OpenStack 其他各个组
件提供统一的身份验证服务,例如 nova、glance、cinder 等。
Keystone 的主要功能
Keystone 服务主要提供两个功能:
用户管理:记录用户信息及用户权限信息•
Keystone 主要通过 users(用户帐号),tenants(租户),roles(权限)来进行用户
管理。
而用户具体可以访问的资源,可以通过 policy.json 进行限制及调整。
服务目录:提供可用可用服务的目录以及可用服务的• API 服务接入点。
Keystone 通过 services(服务),endpoints(接入点)来提供服务目录的管理。
Keystone 的主要概念
在 OpenStack Keystone 中,主要存在以下几个重要概念:
•User:用户。
在 keystone 中,user 是指使用 OpenStack 云服务的人、系统、或者服务的帐
号。
•Credentials:数字凭证。
是指有用户拥有并且由用户生成的数据。例如,匹配的用户名和密码。
•Authentication:验证。
在 keystone 环境中,验证是指确认用户的身份或者某服务声明的真实性的行为。
在 keystone 服务中,keystone 会首先通过数字凭证(Credential,即
keystone 里面所存储的用户名和密码)来进行初始验证。验证通过后,keystone 服
务会给用户分配一个令牌(Token)。用户即可通过该令牌进行权限范围内的后续操作。
•Token:令牌。