如何将Percona Operat雷竞技下载官网or for MongoDB与OpenLDAP集成¶
OpenLDAP、Microsoft Active Directory等软件提供的LDAP服务被广泛应用于企业,用于集中控制用户、系统、网络、服务和应用等信息,以及认证/授权过程中相应的访问权限。
下面的指南介绍了已经安装的OpenLDAP服务器与Percona Distribution for MongoDB和Operator的简单集成。雷竞技下载官网您可以了解更多关于LDAP概念和LDIF文件,并找到如何安装和配置OpenLDAP在官方OpenLDAP和雷竞技下载官网MongoDB的Percona服务器文档。
OpenLDAP端¶
您可以在下面添加所需的OpenLDAP设置LDIF部分:
0-雷竞技下载官网percona-ous.ldif:|-dn: ou 雷竞技下载官网= perconadba特区= ldap, dc =当地对象类:organizationalUnit或者:p雷竞技下载官网erconadba1-雷竞技下载官网percona-users.ldif:|-dn: uid 雷竞技下载官网= percona, ou = perconadba, dc = ldap, dc =当地对象类:上对象类:账户posixAccount objectClass:对象类:shadowAccountcn: 雷竞技下载官网perconauid: 雷竞技下载官网perconauidNumber: 1100gid号:100homeDirectory: /home/雷竞技下载官网perconaloginShell: /bin/bashgecos: 雷竞技下载官网perconauserPassword:{地穴}xshadowLastChange: 1shadowMax: 1shadowWarning: 12-group-cn.ldif:|-dn: cn = admin, 雷竞技下载官网ou = perconadba, dc = ldap, dc =当地cn:管理对象类:groupOfUniqueNames)对象类:上或者:p雷竞技下载官网erconadbauniqueMember: uid 雷竞技下载官网= percona, ou = perconadba, dc = ldap, dc =当地
此外,还应该为数据库发出的用户查找创建只读用户。如果一切都正确,下面的命令应该工作,重置percona用户密码:雷竞技下载官网
美元ldappasswd- s雷竞技下载官网- d“cn = admin, dc = ldap, dc =当地”- w密码- x“uid 雷竞技下载官网= percona, ou = perconadba, dc = ldap, dc =当地”
请注意
如果您不确定在用户和组对象之间进行引用的方法,简化覆盖提供一种可能的方法。
MongoDB和Operator端¶
根据分片是开启(默认行为)还是关闭,下面的步骤看起来会有所不同。
为了让MongoDB在非分片(ReplicaSet)的MongoDB集群中连接到OpenLDAP,我们需要配置两件事:
- Mongod
- mongodb内部角色
为mongod创建配置秘密:
安全:授权:“启用”ldap:authz:queryTemplate:”{USER} memberOf ?基地”服务器:“openldap”transportSecurity:没有一个绑定:queryUser:“cn =只读的,dc = ldap, dc =当地”queryPassword:“密码”userToDNMapping:”({匹配:“(+)”,ldapQuery:“OU 雷竞技下载官网= perconadba, DC = ldap, DC =地方? ?子? (uid ={0})”}]“setParameter:authenticationMechanisms:“平原,SCRAM-SHA-1”
请注意
这个片段为mongod提供了特定于LDAP的参数,例如LDAP服务器的FQDN (服务器)、显式查找用户、域规则等。
将代码片段放在本地机器上,并创建一个Kubernetes Secret对象您的MongoDB集群名称:
美元kubectl创建秘密通用的< your_cluster_name > -rs0-mongod——从文件=mongod.conf=my_mongod.conf
下一步是启动MongoDB集群,如中所述在Kuberne雷竞技下载官网tes上为MongoDB安装Percona服务器。成功完成本文档中的步骤后,我们将继续为MongoDB内部的“外部”(由LDAP管理)用户设置角色。为此,以管理员身份登录MongoDB:
美元蒙戈“mongodb + srv: / / userAdmin: < userAdmin_password > @ < your_cluster_name > -rs0。< your_namespace > .svc.cluster.local /管理?replicaSet = rs0&ssl = false”
请注意
基于TLS的LDAP尚未得到运营商的支持。
登录后执行如下操作:
莫ngos >db.getSiblingDB (“admin”) .create角色({角色:“cn = admin, 雷竞技下载官网ou = perconadba, dc = ldap, dc =当地”,特权:[],角色:({“角色”:“readAnyDatabase”,“数据库”:“admin”},{“角色”:“dbAdminAnyDatabase”,“数据库”:“admin”},{“角色”:“clusterraybet雷竞技竞猜在线官网Monitor”,“数据库”:“admin”},{“角色”:“readWriteAnyDatabase”,“数据库”:“admin”},{“角色”:“恢复”,“数据库”:“admin”},{“角色”:“备份”,“数据库”:“admin”}],})
请注意
上面示例中列出的额外角色只是为了显示不止一种可能的变体。
现在新的雷竞技下载官网OpenLDAP内部创建的用户能够以管理员身份登录MongoDB。使用以下命令验证用户角色是否正确识别:
美元蒙戈——用户名雷竞技下载官网——密码“雷竞技下载官网percona”——authenticationMechanism“普通”——authenticationDatabase“外部美元”——主机< mongodb-rs-endpoint >——港口27017
在这种情况下,为了让MongoDB连接到OpenLDAP,我们需要配置三件事:
- Mongod
- mongodb内部角色
- 蒙戈
路由接口(mongos)和配置ReplicaSet (mongod)都必须配置,以使LDAP服务器成为身份验证/授权链的一部分。
请注意
mongos只是一个分片和底层数据库实例之间的路由器,配置ReplicaSet负责保存关于数据库用户和角色的信息。因此,路由器只能执行身份验证,而授权是配置ReplicaSet的责任。
分别为路由器和配置ReplicaSet创建配置秘密。
路由器的秘密应该如下所示:
安全:ldap:服务器:“openldap”transportSecurity:没有一个绑定:queryUser:“cn =只读的,dc = ldap, dc =当地”queryPassword:“密码”userToDNMapping:”({匹配:“(+)”,ldapQuery:“OU 雷竞技下载官网= perconadba, DC = ldap, DC =地方? ?子? (uid ={0})”}]“setParameter:authenticationMechanisms:“平原,SCRAM-SHA-1”
将代码片段放在本地机器上,并创建一个Kubernetes Secret对象您的MongoDB集群名称:
美元kubectl创建秘密通用的< your_cluster_name >蒙戈——从文件=mongos.conf=my_mongos.conf
配置ReplicaSet的秘密应该如下:
安全:授权:“启用”ldap:authz:queryTemplate:”{USER} memberOf ?基地”服务器:“openldap”transportSecurity:没有一个绑定:queryUser:“cn =只读的,dc = ldap, dc =当地”queryPassword:“密码”userToDNMapping:”({匹配:“(+)”,ldapQuery:“OU 雷竞技下载官网= perconadba, DC = ldap, DC =地方? ?子? (uid ={0})”}]“setParameter:authenticationMechanisms:“平原,SCRAM-SHA-1”
将代码片段放在本地机器上,并创建一个Kubernetes Secret对象您的MongoDB集群名称:
美元kubectl创建秘密通用的< your_cluster_name > -cfg-mongod——从文件=mongod.conf=my_mongod.conf
两个文件都差不多,除了authz小节,它只出现在配置ReplicaSet中。
下一步是启动MongoDB集群,如中所述在Kuberne雷竞技下载官网tes上为MongoDB安装Percona服务器。成功完成本文档中的步骤后,我们将继续为MongoDB内部的“外部”(由LDAP管理)用户设置角色。为此,以管理员身份登录MongoDB:
美元蒙戈“mongodb: / / userAdmin: < userAdmin_password > @ < your_cluster_name >蒙戈。< your_namespace > .svc.cluster.local /管理?ssl = false”
请注意
基于TLS的LDAP尚未得到运营商的支持。
登录后执行如下操作:
莫ngos >db.getSiblingDB (“admin”) .create角色({角色:“cn = admin, 雷竞技下载官网ou = perconadba, dc = ldap, dc =当地”,特权:[],角色:({“角色”:“readAnyDatabase”,“数据库”:“admin”},{“角色”:“dbAdminAnyDatabase”,“数据库”:“admin”},{“角色”:“clusterraybet雷竞技竞猜在线官网Monitor”,“数据库”:“admin”},{“角色”:“readWriteAnyDatabase”,“数据库”:“admin”},{“角色”:“恢复”,“数据库”:“admin”},{“角色”:“备份”,“数据库”:“admin”}],})
请注意
上面示例中列出的额外角色只是为了显示不止一种可能的变体。
现在新的雷竞技下载官网OpenLDAP内部创建的用户能够以管理员身份登录MongoDB。使用以下命令验证用户角色是否正确识别:
美元蒙戈——用户名雷竞技下载官网——密码“雷竞技下载官网percona”——authenticationMechanism“普通”——authenticationDatabase“外部美元”——主机< your_cluster_name >蒙戈——港口27017
登录后执行如下操作:
莫ngos >db.run逗号nd ({有限公司向ction年代俄罗斯少女组合:1})
输出应该如下所示:
{“authInfo”:{“authenticatedUsers”:({“用户”:“雷竞技下载官网percona”,“数据库”:“外部”美元}],“authenticatedUserRoles”:({“角色”:“恢复”,“数据库”:“admin”},{“角色”:“readAnyDatabase”,“数据库”:“admin”},{“角色”:“clusterraybet雷竞技竞猜在线官网Monitor”,“数据库”:“admin”},{“角色”:“dbAdminAnyDatabase”,“数据库”:“admin”},{“角色”:“备份”,“数据库”:“admin”},{“角色”:“cn = admin, 雷竞技下载官网ou = perconadba, dc = ldap, dc =当地”,“数据库”:“admin”},{“角色”:“readWriteAnyDatabase”,“数据库”:“admin”}]},“ok”:1,“clusterTime美元”:{“clusterTime”:次助教议员(1663067287,4),“签名”:{“希”:Bin达助教(0,“ZaLGSVj4ZwZrngXZSOqXB5rx + oo = "),“keyId”:NumberLong (“7142816031004688408”)}},“operationTime”:次助教议员(1663067287,4)}莫ngos >