Openshift 3.11和LDAP的集成
1. OpenLDAP的安装
只记录主要步骤,详细可参考
https://access.redhat.com/solutions/2484371
# yum install -y openldap openldap-clients openldap-servers [root@rhel7 ~]# cd /etc/openldap/slapd.d/
[root@rhel7 slapd.d]# ls -l
drwxr-x---. ldap ldap Aug : cn=config
-rw-------. ldap ldap Aug : cn=config.ldif
[root@rhel7 slapd.d]# cd cn\=config
[root@rhel7 cn=config]# ls -l
drwxr-x---. ldap ldap Aug : cn=schema
-rw-------. ldap ldap Aug : cn=schema.ldif
-rw-------. ldap ldap Aug : olcDatabase={}config.ldif
-rw-------. ldap ldap Aug : olcDatabase={-}frontend.ldif
-rw-------. ldap ldap Aug : olcDatabase={}monitor.ldif
drwxr-x---. ldap ldap Aug : olcDatabase={}hdb.ldif [root@rhel7 cn=config]# vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{\}hdb.ldif
olcSuffix: dc=mydomain,dc=com [root@rhel7 cn=config]# vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{\}hdb.ldif
olcRootDN: cn=Manager,dc=example,dc=com
olcRootPW: redhat [root@rhel7 cn=config]# vi olcDatabase\=\{\}config.ldif
olcRootDN: cn=config
olcRootPW: secret [root@rhel7 cn=config]# slaptest -u
config file testing succeeded
启动
# systemctl start slapd
插入主要的schema(/etc/openldap/schema)
[root@node2 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -f ./cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
adding new entry "cn=cosine,cn=schema,cn=config" [root@node2 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -f ./inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
adding new entry "cn=inetorgperson,cn=schema,cn=config"
加入用户和组的信息
$ cat base.ldif
dn: dc=mydomain,dc=com
objectClass: dcObject
objectClass: organization
o: mydomain.com dn: ou=users,dc=mydomain,dc=com
objectClass: organizationalUnit
objectClass: top
ou: users dn: ou=groups,dc=mydomain,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups
[root@node2 ~]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat -f base.ldif
adding new entry "dc=mydomain,dc=com" adding new entry "ou=users,dc=mydomain,dc=com" adding new entry "ou=groups,dc=mydomain,dc=com"
加入用户信息
设置密码
slappasswd -s welcome1
[root@node2 ~]# cat users.ldif
dn: cn=admin,ou=users,dc=mydomain,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: admin
sn: admin
displayName: admin
mail: admin@mydomain.com
userPassword: {SSHA}KX9+kEHfc/ywaGlZTF3ZsqSecbARs9Yp
[root@node2 ~]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat -f users.ldif
adding new entry "cn=admin,ou=users,dc=mydomain,dc=com"
再加一个
[root@node2 ~]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat -f eric.ldif
adding new entry "cn=eric,ou=users,dc=mydomain,dc=com"
基于search可以全部列出
ldapsearch -x -D 'cn=Manager,dc=mydomain,dc=com' -b dc=mydomain,dc=com -w redhat
2.OpenShift和LDAP集成
- 修改master的配置文件
 
/etc/origin/master/master-config.yaml
主要是oauth部分,我把完整的贴上来
oauthConfig:
assetPublicURL: https://master.example.com:8443/console/
grantConfig:
method: auto
identityProviders:
- challenge: true
login: true
mappingMethod: claim
name: my_ldap_provider
provider:
apiVersion: v1
attributes:
email:
id:
- dn
name:
- cn
preferredUsername:
- uid
bindDN: ''
bindPassword: ''
ca: ''
insecure: true
kind: LDAPPasswordIdentityProvider
url: ldap://192.168.56.105:389/ou=users,dc=mydomain,dc=com?cn
masterCA: ca-bundle.crt
masterPublicURL: https://master.example.com:8443
masterURL: https://master.example.com:8443
sessionConfig:
sessionMaxAgeSeconds:
sessionName: ssn
sessionSecretsFile: /etc/origin/master/session-secrets.yaml
tokenConfig:
accessTokenMaxAgeSeconds:
authorizeTokenMaxAgeSeconds:
- 修改后重启master
 
# master-restart api
# master-restart controllers
注意点如下:
- 只修改identityProviders部分,其他的不要修改,我不小心一个删除,然后定位了一下午才知道错误在哪里
 - 不需要bindDN和bindPassword,虽然在LDAP录入的时候需要Manager的密码,但这里完全不需要。
 
3.如何定位问题
- 打开log level设置,缺省为2,最高为8,各级别如下
 
[root@master ~]# cat /etc/origin/master/master.env # Proxy configuration
# See https://docs.openshift.com/container-platform/latest/install_config/http_proxies.html#configuring-hosts-for-proxies-using-ansible DEBUG_LOGLEVEL=

- 基于命令master-logs查看
 
/usr/local/bin/master-logs api api
当然也有
# /usr/local/bin/master-logs controllers controllers
# /usr/local/bin/master-logs api api
# /usr/local/bin/master-logs etcd etcd
没有错误后,发现ldap用户登录成功,可以用oc get users进行验证一下
[root@master ~]# oc get users
NAME UID FULL NAME IDENTITIES
admin c746e175-f46f-11e8-ba5a-080027dc991a htpasswd_auth:admin
alice 0b722de4-f7b9-11e8-88eb-080027dc991a alice my_ldap_provider:cn=alice,ou=users,dc=mydomain,dc=com
cn=eric,ou=users,dc=mydomain,dc=com 03ae746c-f7b9-11e8-88eb-080027dc991a eric my_ldap_provider:cn=eric,ou=users,dc=mydomain,dc=com
tom 4c9a87fd-f7b9-11e8-88eb-080027dc991a tom my_ldap_provider:cn=tom,ou=users,dc=mydomain,dc=com
显示格式有问题,看这个图

为什么NAME字段eric有一堆的后缀,查了一下ldif文件,发现eric没有定义uid, 删除重新加
[root@node2 ~]# ldapdelete -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat "cn=eric,ou=users,dc=mydomain,dc=com"
[root@node2 ~]# vi eric.ldif
[root@node2 ~]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat -f eric.ldif
adding new entry "cn=eric,ou=users,dc=mydomain,dc=com"
同步时间太长了。
4.LDAP组的同步
现在LDAP中插入组,方法和插入用户一致
[root@node2 ~]# cat group.ldif
dn: cn=admins,ou=groups,dc=mydomain,dc=com
objectClass: groupOfNames
cn: admins
owner: cn=Manager,dc=mydomain,dc=com
member: cn=eric,ou=users,dc=mydomain,dc=com
写一个执行同步的yaml文件
kind: LDAPSyncConfig
apiVersion: v1
url: ldap://192.168.56.105:389
insecure: true
rfc2307:
groupsQuery:
baseDN: "ou=groups,dc=mydomain,dc=com"
scope: sub
derefAliases: never
filter: (objectclass=groupOfNames)
groupUIDAttribute: dn
groupNameAttributes: [ cn ]
groupMembershipAttributes: [ member ]
usersQuery:
baseDN: "ou=users,dc=mydomain,dc=com"
scope: sub
derefAliases: never
pageSize:
userUIDAttribute: dn
userNameAttributes: [ dn ]
tolerateMemberNotFoundErrors: true
tolerateMemberOutOfScopeErrors: true
运行及验证
[root@master ~]# oc adm groups sync --sync-config=groups.yaml --confirm
group/admins
[root@master ~]# oc get groups
NAME USERS
admins cn=eric,ou=users,dc=mydomain,dc=com
授权LDAP用户 alice为集群管理员
[root@master ~]# oc adm policy add-cluster-role-to-user cluster-admin alice
cluster role "cluster-admin" added: "alice"
alice登录后也能看到admin能看到的所有的项目了。

Openshift 3.11和LDAP的集成的更多相关文章
- python+selenium自动化软件测试(第11章):持续集成jenkins和GitHub的使用
		
11.1 jenkins持续集成环境 相关安装包下载链接:http://pan.baidu.com/s/1qYhmlg4 密码:dcw2赠送jenkins集成selenium环境视频链接http:// ...
 - (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案二
		
http://blog.csdn.net/yerenyuan_pku/article/details/52894958 前面我们已经集成了Spring4.2.5+Hibernate4.3.11+Str ...
 - (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
		
http://blog.csdn.net/yerenyuan_pku/article/details/52888808 前面我们已经集成了Spring4.2.5+Hibernate4.3.11这两个框 ...
 - openshift 3.11安装部署
		
openshift 3.11 安装部署 openshift安装部署 1 环境准备(所有节点) openshift 版本 v3.11 1.1 机器环境 ip cpu mem hostname OSsys ...
 - openshift 3.11 安装部署
		
openshift 3.11 安装部署 openshift安装部署 1 环境准备(所有节点) openshift 版本 v3.11 1.1 机器环境 ip cpu mem hostname OSsys ...
 - Istio在Openshift 3.11的安装
		
详细安装步骤及解释参考 https://docs.openshift.com/container-platform/3.11/servicemesh-install/servicemesh-insta ...
 - OpenShift 3.11离线环境的jenkins演示
		
离线安装完成后,一般情况下只装了个基础环境,catalog镜像没有导入,本文主要侧重在jenkins的一些环境设置和演示. 1.导入镜像 首先follow下面链接下载镜像 https://docs.o ...
 - SonarQube配置LDAP认证集成
		
1.准备工作 获取LDAP服务信息.admin账号.安装sonarldap插件. 2.LDAP配置 #LDAP settings #admin sonar.security.realm=LDAP ld ...
 - [SharePoint2010开发入门经典]11、与Office集成
		
本章概要: 1.创建office集成解决方案使用代码或非代码形式 2.使用内容类型作为能映射到文档库的文档 3.使用InfoPath管理表单 4.使用工作流管理业务流程 5.使用office2010服 ...
 
随机推荐
- Three.js基础探寻七——Lamber材质与Phong材质
			
材质(Material)是独立于物体顶点信息之外的与渲染效果相关的属性.通过设置材质可以改变物体的颜色.纹理贴图.光照模式等. 本篇将介绍基本材质以及两种基于光照模型的材质(Lamber与Phong) ...
 - LoadRunner函数–lr_vuser_status_message
			
http://wenku.baidu.com/link?url=KbKGldKUkam4VyH5Z2doesA0ovQpuwM9nX_SnVMtWjo6rJPxj9DqB51z_m1giMbVo5Db ...
 - Python类总结-析构函数和__call__方法
			
class Foo: def __init__(self): pass #析构函数 def __del__(self): print('解释器要销毁我了,我要做最后一次呐喊') def __call_ ...
 - mac linux 命令笔记 - 权限管理
			
壹 权限 在使用命令行工具时,可能需要临时切换到管理员/root权限,如何切换呢? 正文 进入 root 权限: sudo -i 提示输入密码,这个密码就是锁屏的解锁密码. 在操作完成之后,使用 ex ...
 - Java常用工具类之自定义访问对象
			
package com.wazn.learn.util; import javax.servlet.http.HttpServletRequest; /** * 自定义访问对象工具类 * * 获取对象 ...
 - FastReport.Net使用:[6]HTML标签使用
			
使用HTML标签的基础知识 1.FastReport所支持的HTML标签包括: ●粗体:<b>...</b> ●斜体:<i>...</i> ●下划线:& ...
 - [BZOJ4423][AMPPZ2013]Bytehattan(对偶图+并查集)
			
建出对偶图,删除一条边时将两边的格子连边.一条边两端连通当且仅当两边的格子不连通,直接并查集处理即可. #include<cstdio> #include<algorithm> ...
 - CodeForces - 1009D  Relatively Prime Graph
			
题面在这里! 直接暴力找点对就行了,可以证明gcd=1是比较密集的,所以复杂度略大于 O(N log N) #include<bits/stdc++.h> #define ll long ...
 - c++string函数详解
			
string,一个极为好用了函数,学好了这些函数,在模拟以及字符串问题上,回节省很多很多的写代码时间,代码复杂度以及错误率,那么这一类函数都有那些功能呢?我们来逐一介绍(让你大吃一惊,还有这种操作?) ...
 - wampserver -- 取消PHP页面Warning和Notice级别的报错
			
Learn from:http://yige.org/p/91 一般遇到这样的问题,有两个方法:1.如果有服务器权限,直接把服务器上的php.ini的配置改了,改成不输出Warning和Notice级 ...