Mongodb集成LDAP授权
一、环境简介
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集成LDAP授权的更多相关文章
- ldap配置系列二:jenkins集成ldap
ldap配置系列二:jenkins集成ldap jenkins简介 jenkins是一个独立的.开放源码的自动化服务器,它可以用于自动化与构建.测试.交付或部署软件相关的各种任务. jenkins官方 ...
- MongoDB数据库未授权访问漏洞及加固
1.漏洞危害 开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增删改高危动作)而且可以远程访问数据库. 2.漏洞成因 在刚安装完毕的 ...
- 【原】Spring与MongoDB集成:配置
MongoDB的API提供了DBObject接口来实现BSONObject的操作方法,BasicDBObject是具体实现.但是并没有提供DBObject与BeanObject的转换.在还没有了解到与 ...
- Solr与MongoDB集成,实时增量索引
Solr与MongoDB集成,实时增量索引 一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中, ...
- hive、impala集成ldap
1.概要 1.1 环境信息 hadoop:cdh5.10 os:centos6.7 user:root hive.impala已集成sentry 1.2 访问控制权限 这里通过使用openldap来控 ...
- ldap配置系列三:grafana集成ldap
ldap配置系列三:grafana集成ldap grafana的简介 grafana是一个类似kibana的东西,是对来自各种数据源的数据进行实时展示的平台,拥有这牛逼的外观.给一个官方的demo体验 ...
- Confluence 6 用户目录图例 - 使用 LDAP 授权,在用户第一次登陆时拷贝用户
上面的图:Confluence 连接到一个 LDAP 目录只用作授权,当用户登录 Confluence 的时候,使用 LDAP 授权并且将用户信息同步到本地路服务器上. https://www.cwi ...
- Confluence 6 使用 LDAP 授权连接一个内部目录 - 拷贝用户到登录
在登录时拷贝用户(Copy User on Login) 这个选项在用户尝试登录的时候将会被触发.如果这个选择框被选择的话,当用户使用 LDAP 授权的用户名和密码登录系统的时候,用户将会在内部目录自 ...
- Confluence 6 使用 LDAP 授权连接到 Confluence 内部目录
希望连接一个内部目录但是使用 LDAP 检查登录授权: 在屏幕的右上角单击 控制台按钮 ,然后选择 General Configuration 链接. 单击左侧面板上面的 用户目录(User Dire ...
随机推荐
- CentOS7日志管理工具 journalctl
1.简介 日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息. Systemd统一管理所有Unit的启动日志.带来的好处就是,可以只用jo ...
- 『动善时』JMeter基础 — 52、使用JMeter测试Dubbo接口
目录 1.Dubbo介绍 2.准备测试Dubbo接口的环境 3.Dubbo Sample界面详解 4.Dubbo Sample组件的使用 (1)测试计划内包含的元件 (2)使用zookeeper协议请 ...
- Linux:CentOS7防火墙 开放端口配置
查看已开放的端口 firewall-cmd --list-ports 开放端口(开放后需要要重启防火墙才生效) firewall-cmd --zone=public --add-port=3338/t ...
- 11 shell中内置关键字[[]]:检查条件是否成立
0.[[]] [] (())的对比 1.[[]]支持正则表达式 0.[[]] [] (())的对比 [[ ]] 对数字的比较不友好,所以使用 if 判断条件时,建议用(())来处理整型数字,用[[]] ...
- PHP7与php5
php在2015年12月03日发布了7.0正式版,带来了许多新的特性,以下是不完全列表: 性能提升:PHP7比PHP5.6性能提升了两倍. Improved performance: PHP 7 is ...
- leetcode 面试题 17.22. 单词转换(DFS+回溯)
题目描述 思路分析 这题回溯,先想出它的空间解是什么,这里空间解,其实就是给的原字符串到结束字符串中间的变形过程,那么就可以容易的画出一个解空间树,用深度搜索进行搜索, 剪枝后,进入下一个维度,再进行 ...
- [小工具] chrome上日语翻译工具
rikaikun -> 日语 "理解君" 下载地址: https://chrome.google.com/webstore/detail/rikaikun/jipdnfibh ...
- C# 8.0和.NET Core 3.0高级编程 分享笔记二:编程基础第二部分
这一篇是接上一篇笔记的第二部分. 2.5深入研究控制台应用程序 前面创建并使用了基本的控制台应用程序,下面更深入地研究它们. 控制台应用程序是基于文本的,在命令上运行的.它们通常执行需要编写脚本的简单 ...
- B站蹦了,关我A站什么事?
昨天的大瓜,B站蹦了,大伙都跳起来分析了一波异常原因,着实给大伙的秋招准备了一波热乎乎的素材!在大家都在关注 B站的时候, 我大A站终于要站起来了!!!经过多方网友的极力引流,我A站也蹦了- 紧急通知 ...
- MAC系统如果碰到报错信息:sudo:command not found
** 一般要考虑最近是否有别人或者自己修改过环境变量,这种报错往往是因为环境变量设置错误导致的. ** 1. 首先要获得创建,或者是打开bash_profile的权限,请在命令行中输入: export ...