ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Mongodb集成LDAP授权

2021-08-08 11:01:00  阅读:259  来源: 互联网

标签:集成 Mongodb LDAP dc 查询 mango mongodb


一、环境简介

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

image

在LDAP服务器中新建dbrole组,并通过memberUid进行关联,这里需要填写用户的全限定名

image

在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,dc,查询,mango,mongodb
来源: https://www.cnblogs.com/wufengtinghai/p/15114316.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有