一、环境简介

Mongodb enterprise v4.0.16

OpenLDAP v2.4.44

二、Mongodb集成LDAP的授权过程

  1. 客户端指定某种外部验证方式链接Mongodb;
  2. Mongodb根据配置中设置的ip、用户、密码等来绑定LDAP服务器;
  3. Mongodb根据配置的查询模板构建查询语句,并向LDAP服务器发送请求获得验证用户所属的用户组信息;
  4. LDAP服务器执行查询并返回用户组的信息;
  5. Mongodb在admin数据库中查找跟用户组对应的role,并对应的权限授权给当前用户;
  6. 客户端在授权的数据库上进行操作;

三、配置过程

在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授权的更多相关文章

  1. ldap配置系列二:jenkins集成ldap

    ldap配置系列二:jenkins集成ldap jenkins简介 jenkins是一个独立的.开放源码的自动化服务器,它可以用于自动化与构建.测试.交付或部署软件相关的各种任务. jenkins官方 ...

  2. MongoDB数据库未授权访问漏洞及加固

    1.漏洞危害 开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增删改高危动作)而且可以远程访问数据库. 2.漏洞成因 在刚安装完毕的 ...

  3. 【原】Spring与MongoDB集成:配置

    MongoDB的API提供了DBObject接口来实现BSONObject的操作方法,BasicDBObject是具体实现.但是并没有提供DBObject与BeanObject的转换.在还没有了解到与 ...

  4. Solr与MongoDB集成,实时增量索引

    Solr与MongoDB集成,实时增量索引 一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中, ...

  5. hive、impala集成ldap

    1.概要 1.1 环境信息 hadoop:cdh5.10 os:centos6.7 user:root hive.impala已集成sentry 1.2 访问控制权限 这里通过使用openldap来控 ...

  6. ldap配置系列三:grafana集成ldap

    ldap配置系列三:grafana集成ldap grafana的简介 grafana是一个类似kibana的东西,是对来自各种数据源的数据进行实时展示的平台,拥有这牛逼的外观.给一个官方的demo体验 ...

  7. Confluence 6 用户目录图例 - 使用 LDAP 授权,在用户第一次登陆时拷贝用户

    上面的图:Confluence 连接到一个 LDAP 目录只用作授权,当用户登录 Confluence 的时候,使用 LDAP 授权并且将用户信息同步到本地路服务器上. https://www.cwi ...

  8. Confluence 6 使用 LDAP 授权连接一个内部目录 - 拷贝用户到登录

    在登录时拷贝用户(Copy User on Login) 这个选项在用户尝试登录的时候将会被触发.如果这个选择框被选择的话,当用户使用 LDAP 授权的用户名和密码登录系统的时候,用户将会在内部目录自 ...

  9. Confluence 6 使用 LDAP 授权连接到 Confluence 内部目录

    希望连接一个内部目录但是使用 LDAP 检查登录授权: 在屏幕的右上角单击 控制台按钮 ,然后选择 General Configuration 链接. 单击左侧面板上面的 用户目录(User Dire ...

随机推荐

  1. 入“坑”mybatis后如何挣脱?

    既然已经入"坑"mybatis了,你竟然还想着挣脱,我是不会让你挣脱的~ 当然我有一个算是挣脱的办法.那就是把它学会.理解透.这样我们也就不用在坑里一直徘徊,也算得上是一种挣脱吧! ...

  2. ES6 数组的方法

     数组的类 数组的类是Array 数组的定义 var arr=[元素] var arr=new Array(3) 数字3,代表有三个元素或者三个空位 如果数组定义采用 new 实例,类中跟的是一个数字 ...

  3. 什么是DDoS黑洞路由?

    1. 什么是DDoS黑洞路由? DDoS黑洞路由/过滤(有时称为黑孔)是缓解DDoS攻击的一种对策,网络流量将被路由到"黑洞"中并且丢失.如果在没有特定限制条件下实施黑洞过滤,合法 ...

  4. 『无为则无心』Python序列 — 21、Python字典及其常用操作

    目录 1.字典的应用场景 2.字典的概念 3.创建字典的语法 4.字典常见操作 (1)字典的增加操作 (2)字典的删除操作 (3)字典的修改 (4)字典的查找 (5)copy()复制 1.字典的应用场 ...

  5. 9.4、安装zabbix(1)

    1.什么是zabbix: zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案: zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以 ...

  6. POJ 3984 迷宫(BFS)

    入门BFS,第一次做,部分借鉴了大牛的 #include <iostream> #include <cstdio> #include <queue> using n ...

  7. MySQL不支持DELETE使用表别名?

    最近做的需求经常和数据库在打交道, 因为系统页面上某些展示的字段并不是在前端写死的, 而是配置在数据库中, 这样的话便于维护和扩展. 于是遇到了一个MySQL中比较细节性的问题. 日常开发中不少程序员 ...

  8. spring集成flyway

    最近给公司项目集成flyway,由于我们项目移动端使用的是spring框架,网上看了很多博客,感觉这方面的东西还是很少的,毕竟现在是springboot的天下,大多数都是springboot集成fly ...

  9. vmware使用U盘安装系统

    创建好系统 创建一个新的硬盘,选择"physicalDrive1" 如果识别不到physicalDrive 1,使用下面的方法. 1.在本机的服务里面启用下面的服务. 2.重启 V ...

  10. 利用C语言判定用户输入数据从而给出结果(利用判定用户体重范围)同求最优解!!!

    例子: 要求:医务工作者通过广泛的调查和统计分析,根据成人的身高与体重因素给出了按"体质指数"进行判断的方法,具体如下: 体质指数t=体重 w/(身高h)2(w的单位为kg,h的单 ...