Keystone集成LDAP

转自 http://wsfdl.com/openstack/2016/01/13/Keystone%E9%9B%86%E6%88%90LDAP.html

得益于 Keystone 优良的架构,它允许 Service 适配多种 Backend。Keystone 目前有 Identity, Resource, Assigment, Token, Policy, Catatlog 等 service,在 K 版本中,Identity, Resource, Assigment 都支持 LDAP 作为其 Backend,但是因为 Resource 和 Assigment 中的某些属性在 LDAP 并不能很好的支持,因此从 M 版本后,只有 Idendity 支持 LDAP 作为 Backend。本文的例子也仅将 Identity 的数据存储在 LDAP 中,其它 Services 的数据依旧存储在 SQL 里。

  • Identity: User and Group
  • Resource: Project and Domain
  • Assigment: Role and Role Assigment

基本配置如下:

  • Linux: Ubuntu 14.04 LTS
  • OpenStack: Kilo
  • LDAP: slapd 2.4.31

LDAP 的 DN(Distinguished Names) 默认由主机域名生成,本地的 DNS 设置如下:

[email protected]:~# cat /etc/hosts
10.10.1.100    keystone.com
127.0.0.1   localhost

Install LDAP

sudo apt-get install slapd ldap-utils

安装完成后可通过以下命令和步骤完成 LDAP 的基本配置:

sudo dpkg-reconfigure slapd

* Omit OpenLDAP server configuration? No

* DNS domain name?  keystone.com

* Organization name?  admin

* Administrator password? YourPassword

* Use the password you configured during installation, or choose another one
  Database backend to use? HDB

* Remove the database when slapd is purged? No

* Move old database? Yes

* Allow LDAPv2 protocol? No

Configure LDAP

由于 LDAP 的用户属性和 Keystone 默认的用户属性有所差异,所以 LDAP 需生成与 Keystone 中的 User 和 Group 相匹配的对象,可通过以下脚本(add_user_group.ldif)添加该对象,并生成 demo 和 admin 两个用户。

# Users
dn: ou=users,dc=keystone,dc=com
ou: users
objectClass: organizationalUnit

# Group
dn: ou=groups,dc=keystone,dc=com
objectClass: organizationalUnit
ou: groups

# demo user
dn: cn=demo,ou=users,dc=keystone,dc=com
cn: demo
displayName: demo
givenName: demo
mail: [email protected]
objectClass: inetOrgPerson
objectClass: top
sn: demo
uid: demo
userPassword: 123456

# admin user
dn: cn=admin,ou=users,dc=keystone,dc=com
cn: admin
displayName: admin
givenName: admin
mail: [email protected]
objectClass: inetOrgPerson
objectClass: top
sn: admin
uid: admin
userPassword: 123456

由以下命令把上述配置文件内容更新至 LDAP:

ldapadd -x -W -D "cn=admin,dc=example,dc=com" -f add_user_group.ldif

Keystone 的配置文件如下:

[identity]
driver = keystone.identity.backends.ldap.Identity

[assignment]
driver = keystone.assignment.backends.sql.Assignment

[ldap]
# LDAP 服务器地址,tree_dn 目录下管理员的账号和密码等
url = ldap://keystone.com
query_scope = sub
user = "cn=admin,dc=keystone,dc=com"
password = 123456
tree_dn = "dc=keystone,dc=com"

# 以下配置定义 Keystone 和 LDAP 二者的属性的 mapping 关系。
user_tree_dn = "ou=users,dc=keystone,dc=com"
user_objectclass = inetOrgPerson
user_id_attribute = cn
user_name_attribute = cn
user_mail_attribute = mail
user_pass_attribute = userPassword
user_enabled_attribute = enabled

group_tree_dn = "ou=groups,dc=keystone,dc=com"
group_objectclass = groupOfUniqueNames
group_id_attribute = cn
group_name_attribute = cn
group_member_attribute = uniquemember
group_desc_attribute = description

user_allow_create = true
user_allow_update = true
user_allow_delete = true

group_allow_create = true
group_allow_update = true
group_allow_delete = true

Test

用 admin_token 创建 project 和 role,并赋予 demo 和 admin 用户在 project 中的 role 后,即可使用该用户获得 scope token 访问 Keystone 的 API。

[email protected]:~# openstack user list
+--------------------+--------------------+
| ID                 | Name               |
+--------------------+--------------------+
| demo               | demo               |
| admin              | admin              |
+--------------------+--------------------+

[email protected]:~# openstack user show demo
+-----------+------------------+
| Field     | Value            |
+-----------+------------------+
| domain_id | default          |
| email     | [email protected] |
| id        | demo             |
| name      | demo             |
+-----------+------------------+

[email protected]:~# openstack user create hello --password 123456
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | default                          |
| enabled   | True                             |
| id        | hello                            |
| name      | hello                            |
+-----------+----------------------------------+

[email protected]:~# openstack project create test_project
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | cbdf05b17cf54587b3b58a11f49252e7 |
| name        | test_project                     |
+-------------+----------------------------------+
时间: 2024-11-25 10:56:10

Keystone集成LDAP的相关文章

liferay 集成ldap

1.下载并安装(Active direcotry 下面统一为AD) https://directory.apache.org/studio/download/download-windows.html http://directory.apache.org/apacheds/download/download-windows.html 2.安装完成后启动apacheDs服务和LDAP管理,如果遇到无法启动的问题,可以查看本文的问题解决方案 3.配置一个新的连接: 4.填写相关的信息,connec

Zeppelin集成LDAP的部署和实践

环境信息: Zeppelin版本:0.7.0 Kylin版本:1.6.0 Zeppelin部署: 1.      修改$ZEPPELIN_HOME/conf/shiro.ini文件,配置Zeppelin集成LDAP: ### A sample for configuring LDAP DirectoryRealm ldapRealm = org.apache.zeppelin.realm.LdapGroupRealm ## search base for ldap groups (onlyrel

Keystone+LDAP+LAMでOpenStack管理

Quantum周りのたった1つの問題に1週間以上ハマって絶望するも.絞りだすような勘で生還してブログ再開!! 今回はなんとっ!KeystoneデータをLDAPで管理するという一風変わった情報をお届けします! LDAPを採用した理由 どうしてわざわざLDAPにしたのか.というと. まず.既にLDAPが存在し.他の複数のソフトウェアのアカウント管理に用いていたため.OpenStackも同様に既存のLDAPユーザでログインしたかった.というのが1つ. 次に.LDAPユーザから削除された(例えば退職した

svn集成ldap

参考文章 http://solin.blog.51cto.com/11319413/1918718 基本搭建 http://lansgg.blog.51cto.com/5675165/1844836 http://www.361way.com/subversion-apache-ldap/2863.html svn集成ldap http://jiyude.blog.51cto.com/7582964/1730447   SVN服务器集群(基于LDAP) http://zengestudy.blo

Samba集成Ldap认证

Samba集成Ldap认证 1.基础安装 yum -y install samba-common samba samba-client smbldap-tools  openldap-clients  nss-pam-ldapd 2.配置authconfig-tui 执行命令 "authconfig-tui" 验证配置 # getent passwd zhangsan:x:6460:18650:zhangsan:/home/zhangsan:/bin/bash  #此账户为LDAP用户

ldap配置系列二:jenkins集成ldap

ldap配置系列二:jenkins集成ldap jenkins简介 jenkins是一个独立的.开放源码的自动化服务器,它可以用于自动化与构建.测试.交付或部署软件相关的各种任务. jenkins官方文档: https://jenkins.io/doc/ jenkins安装 jenkins下载地址: https://jenkins.io/download/ # jdk1.8下载 [[email protected]_0_15_centos local]# wget http://download

gitlab集成ldap

出于公司账号太多的缘故,遂萌生了gitlab集成ldap的念头.ldap在此不做描述,推荐用docker镜像安装,简单了事.gitlab集成ldap比较简单只需修改gitlab配置文件:/etc/gitlab/gitlab.rb .....(中间配置不动,此处省略) 注意:uid:由于我的ldap用户全是英文,所以我的值是cn,此处没配置好,登录最易报错. 配置完成后,gitlab-ctl reconfigure 即可. 检查ldap用户: gitlab-rake gitlab:ldap:che

Rancher 部署Grafana+项目监控并集成LDAP

业务服务暴露了prometheus的指标,现需要获取该指标值,并用grafana进行展示,并集成ldap验证登入grafana 1.启动监控 在rancher对应的业务的项目下启用监控,工具 -> 监控.在服务列表中能够找到两个服务,这两个服务都可以访问prometheus数据. http://access-prometheus http://expose-prometheus:8080 2.部署Grafana 镜像 grafana/grafana:6.5.1 密文:grafana GF_SEC

Samba4集成LDAP详细安装及配置

近期公司的项目组给我们提需求,让我们搭建几套打印机测试环境,测试打印机的bug,环境分别为:1.windows2012 LDAP的匿名.SSL(636).kerbors.2.Samba4集成的LDAP服务的匿名.SSL(636).kerbors.3domino9.0.1FP3的LDAP服务的匿名.SSL(636).kerbors服务.花了一些时间搭建完成了,所以分享给有需求的参考.其实对于以上提到的服务相信大家都已经很熟悉了.大概思路讲解:windows LDAP顾名思义就是Microsoft的