开源OpenStack项目提供了一个基础架构即服务(IaaS)层,用于构建公共云和私有云。 公司,服务提供商,增值经销商,中小型企业,研究人员和全球数据中心都使用OpenStack来部署大型私有或公共云。
轻型目录访问协议(LDAP)是用于访问和管理目录信息的客户端/服务器协议。 许多企业应用程序使用LDAP作为用户身份验证的基础。 (LDAP的实现包括IBM®Tivoli®Directory Server,Microsoft®Active Directory和OpenLDAP。)本文显示了如何使集成OpenStack / LDAP环境示例快速启动并正确运行。 了解如何:
通过使用DevStack(用于构建OpenStack开发环境的工具)安装LDAP服务器。 通过Keystone的LDAP身份驱动程序将Keystone配置为使用已安装的LDAP服务器。 使用符合Keystone的树结构填充LDAP服务器。 使用Keystone的单元测试库来测试基于LDAP的Keystone服务。另外,了解如何在不使用DevStack的情况下配置Keystone,以使用已经在生产环境中运行的LDAP服务器。
从OpenStack的2013年4月Grizzly版本开始,您可以通过标准的OpenStack开发环境安装工具DevStack将LDAP设置为Keystone后端。 DevStack是一个维护良好并有文档证明的Shell脚本,用于构建完整的OpenStack开发环境。
下载DevStack并在devstack根目录中创建一个名为localrc的文件。 在localrc中为OpenStack配置用户自定义。 要使DevStack能够代表您安装LDAP服务器,请将ldap添加到localrc中已启用服务的列表中。 例如:
ENABLED_SERVICES=key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,cinder,c-sch, c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,mysql,rabbit,ldap您还必须向localrc添加以下行,以通知DevStack您希望Keystone使用其LDAP后端身份驱动程序:
KEYSTONE_IDENTITY_BACKEND = ldap如果您希望DevStack清除现有的Keystone LDAP树并重新开始,请将此行添加到localrc文件:
KEYSTONE_CLEAR_LDAP=yes保存并关闭localrc。 现在从devstack根目录运行stack.sh脚本:
./stack.sh脚本完成后,您可以看到:
已安装OpenLDAP。 Keystone已配置为使用其LDAP后端身份驱动程序。 创建了一个初始的Keystone LDAP树,该树使用devstack \ files \ ldap \ openstack.ldif中的数据,如清单1所示:Keystone LDAP后端身份驱动程序使用的示例架构假定如图1所示的树结构:
在图1的示例LDAP树中, Users , UserGroups , Projects和Roles都是使用标准LDAP ObjectClass自己的子树。 在“ Users子树中,例如, ObjectClass=inetOrgPerson 。
如果您的环境中已经安装了LDAP(并且您在不使用DevStack的情况下安装了Keystone实例),则可以直接将Keystone重新配置为使用其LDAP后端身份驱动程序,而不是默认SQL身份驱动程序。 为此,请修改keystone.conf文件中的值(默认情况下位于/ etc / keystone目录中):
在keystone.conf的[identity]部分中,将driver = keystone.identity.backends.sql.Identity替换为driver = keystone.identity.backends.ldap.Identity 。 更新[ldap]部分以反映您的LDAP服务器配置。 清单2显示了一个示例:注意 :如果使用的是DevStack,则直接更新keystone.conf无效,因为每次运行stack.sh脚本时,DevStack都会自动生成一个新的keystone.conf文件。
Keystone提供了几个文件,用于对基于LDAP的Keystone服务进行单元测试。 这些文件默认位于/ opt / stack / keystone / tests中,但run_tests.sh文件除外,该文件位于/ opt / stack / keystone /目录中。 这些文件是:
tests_backend.py:包含适用于SQL和LDAP后端的测试。 test_backend_ldap.py:包含特定于LDAP的测试。 run_tests.sh:运行完整的回归测试。 在更新代码之前,请始终运行此文件。 _ldap_livetest.py:进行特定于LDAP的代码更改的开发人员应通过运行此文件中的代码来使用实时LDAP测试更改。 此测试假定开发环境中已安装LDAP服务器(例如,OpenLDAP)。 backend_liveldap.conf:提供运行实时LDAP测试所需的配置数据。 如果使用DevStack安装了LDAP,则可以通过设置正确的密码值按原样使用此文件。 如果您具有不同的LDAP配置,请确保此文件的配置数据反映您的LDAP配置。 backend_ldap.conf:提供在没有LDAP服务器的情况下运行完整回归测试所需的配置数据。接下来是一些测试示例。 在运行测试之前,请切换到Keystone安装目录(默认为/ opt / stack / keystone /)。
要运行LDAP的实时测试:
./run_tests.sh _ldap_livetest.py清单3显示了实时LDAP测试的示例输出:
要运行全套回归测试:
./run_tests.sh清单4显示了回归测试的示例输出:
目前,针对LDAP的回归测试使用的是伪造的LDAP服务器,因此在为LDAP开发时,运行实时LDAP测试很重要。
Keystone为所有OpenStack项目提供身份服务。 除默认SQL后端外,Keystone还支持LDAP和可插入身份验证模块。 本文介绍了如何通过安装新的LDAP服务器或将Keystone配置为使用现有的LDAP服务器来将LDAP用作Keystone后端。 Keystone中即将推出的功能将提供将身份验证与授权分开的功能,从而使与生产LDAP实例的集成更加容易。
翻译自: https://www.ibm.com/developerworks/cloud/library/cl-ldap-keystone/index.html
相关资源:openstack对接只读LDAP