Mongodb集成LDAP授权
2023-09-27 14:28:03 时间
一、环境简介
Mongodb enterprise v4.0.16
OpenLDAP v2.4.44
二、Mongodb集成LDAP的授权过程
- 客户端指定某种外部验证方式链接Mongodb;
- Mongodb根据配置中设置的ip、用户、密码等来绑定LDAP服务器;
- Mongodb根据配置的查询模板构建查询语句,并向LDAP服务器发送请求获得验证用户所属的用户组信息;
- LDAP服务器执行查询并返回用户组的信息;
- Mongodb在admin数据库中查找跟用户组对应的role,并对应的权限授权给当前用户;
- 客户端在授权的数据库上进行操作;
三、配置过程
在LDAP服务器新建用户mongodb
在LDAP服务器中新建dbrole组,并通过memberUid进行关联,这里需要填写用户的全限定名
在mongod.conf中新增LDAP的配置
security:
ldap:
servers: "192.168.32.15:389"
authz:
queryTemplate: "dc=mango,dc=com?cn?sub?(&(objectClass=posixGroup)(memberUid={USER}))"
bind:
queryUser: "cn=root,dc=mango,dc=com"
queryPassword: "mango"
method: "simple"
重启mongdb服务
systemctl restart mongod
在mongodb的admin数据库中新建角色
use admin
db.createRole({
"role" : "dbrole",
"privileges" : [],
"roles" : [{
"role" : "dbOwner",
"db" : "test"
}]
})
使用mongodb shell连接数据库
mongo --username uid=mongodb,ou=db,dc=mango,dc=com --password mangodb --authenticationMechanism PLAIN --authenticationDatabase '$external'
四、security.ldap.authz.queryTemplate查询语法
首先这个查询模板是LDAP server执行的,所以其最终是满足LDAP的查询语法;
[ dn [ ? [attributes] [ ? [scope] [ ? [filter] [ ? [Extensions] ] ] ] ] ]
dn:定义查询开始的基点对象;
attributes:定义返回命中的条目的哪个字段;如果不定义则返回条目对应的dn;
scope:进一步控制相对基点的搜索范围,可以取值one、sub、base;
filter:定义过滤条件,LDAP有自己的一套语法;
具体的查询语法,网上已经比较多,这里只简单介绍一下mongod.config里配置的查询语句
dc=mango,dc=com?cn?sub?(&(objectClass=posixGroup)(memberUid={USER}))
在dc=mango,dc=com的节点下,查找objectClass=posixGroup,同时memberUid=当前登录用户的节并返回节点的cn字段;
这里的{USER}在查询之前,mongodb会将它替换为登录的用户id;基于当前版本的mongodb的实现机制,这里是不能直接使用常量值;
相关文章
- MongoDB 安装 Windows XP
- 修改mongodb(带仲裁节点的副本集)各机器端口
- 【转载】8天学通MongoDB——第四天 索引操作
- mongodb的用户管理
- 005.MongoDB索引及聚合
- 【MongoDB】安全认证
- mongodb实现多数据源 & 集成高版本mongodb3.11.2
- 通过一步步创建sharded cluster来认识mongodb
- MongoDB安装、管理工具、操作
- MongoDB(课时14 正则运算)
- MongoDB(课时18 修改器)
- CentOS6.4 安装MongoDB
- replcation set (复制集)配置过程 --mongodb
- Node.JS + MongoDB技术浅谈
- mysql和mongodb的区别和使用场景
- mongodb 最佳可视化工具mongobooster
- python向MongoDB插入时间字段