暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Couchbase生产部署最佳实践(番外篇)——LDAP权限控制

DBInfos 2021-07-14
971

作者简介

李志伟

专注于应用系统基础架构、中间件架构规划实施,对jenkins ,Websphere、MQ、Tomcat、Nginx、Squid、ELK等有丰富的运维经验,善于解决crash、内存溢出、连接池满等问题。



前言

一个Couchbase集群中可以创建多个Buckets,Bucket概念类似于关系型数据库系统中的DB,各项目组分别使用不同的Bucket以实现资源的读写隔离,但是如果项目组想编辑、查看自己的文档,就需要进行相应的权限配置。Couchbase从4.6开始支持LDAP认证进行RBAC权限集成,以便和企业内部的账户体系进行集成。本文作为《Couchbase生产部署最佳实践》的番外篇,着重介绍如何配置LDAP服务、与Couchbase RBAC进行集成,以实现Couchbase外部权限分配。



Couchbase RBAC


自4.6版本开始Couchbase Web控制台的权限管理控制更加丰富,添加了以下多种管理角色:

  • Full Administrator

  • Read-onlyAdministrator

  • Cluster Administrator

  • Bucket Administrator

  • View Administrator

  • Replication (XDCR) Administrator



环境规划


主机名

系统

部署服务

host1

RHEL  6.6

Couchbase Server EE 4.6saslauthd agent

host2

RHEL  6.6

LDAP  server




部署

(一) LDAP配置

  • 通过yum源安装LDAP

yum install openldap openldap-* -y

  • 初始化数据库配置文件

cp usr/share/openldap-servers/DB_CONFIG.example var/lib/ldap/DB_CONFIG

  • 修改配置文件/etc/openldap/slapd.conf,主要修改以下参数,其它参数根据实际需要调整。

  • 修改文件夹权限

chown -R ldap.ldap etc/openldap

chown -R ldap.ldap var/lib/ldap

  • 启动ldap,默认openLDAP 服务所使用的端口为389

service slapd start

service slapd status

  • 添加新用户

在/etc/openldap下创建new.ldif文件,内容如下:

#创建iap部门

dn: ou=iap,dc=my-domain,dc=com

ou: iap

objectclass: organizationalUnit

#在iap部门在新增sitiap记录

dn: cn=sitiap,ou=iap,dc=my-domain,dc=com

objectClass: inetOrgPerson

cn: sitiap

sn: sitiap

uid: sitiap

ou: iap

userPassword: 654321

uid是用于登录Couchbase Web控制台的用户名,userPassword是输入密码。

然后使用ldapadd命令打开一个到 LDAP 服务器的连接,增加一个条目:

ldapadd-x -D 'cn=Manager,dc=my-domain,dc=com' -W -f mon.ldif

之后可以执行ldapsearch命令打开到 LDAP 服务器的连接,绑定并使用指定的参数进行搜索:

ldapsearch-x -b 'dc=my-domain,dc=com'

应可以看到新增记录:

sitiap用户成功添加,同时可以看到LDAP对密码进行了加密。


(二) 配置saslauthd代理

saslauthd代理用于代表Couchbase Server处理认证请求。使用LDAP服务的远程认证需要正确配置saslauthd代理,且将其安装在Couchbase服务器节点上。

首先确保cyrus-sasl rpm已经安装。

然后安装saslauthd,我们的测试环境中已经默认安装,安装过程不再表述。

修改saslauthd配置文件/etc/saslauthd.conf,注意部分参数需要和slapd.conf中的保持一致。

(1)设置ldap_servers

如果有多个ldap server可以用空格分开

例如:

ldap_servers: ldaps://10.1.1.25  ldaps://10.1.1.15

(2)设置ldap_search_base

ldap_search_base:dc=my-domain,dc=com

(3)设置ldap_filter

ldap_filter:(uid=%u)

(4)设置LDAP访问密码,和LDAP配置文件中的rootpw值保持一致。

ldap_password:123456


(三) 开启LDAP认证

登录到Couchbase Web控制台,单击Security > External User/Roles。单击disable,切换成enable。

添加用户,用户名输入ldap 中新增的sitiap用户,角色按照需求进行选择。


配置好后,权限如下:



验证


使用sitiap用户成功登录,该用户只能查看、编辑自己具有权限的Bucket。




总结

不难发现Couchbase添加外部管理权限的步骤比较繁琐,尤其是openLDAP的配置,官方文档中并没有给出详细部署步骤,只能靠读者自己摸索,这会让不少新手会望而生畏。

此外Bucket Admin权限不能使用Query的功能,无法执行N1QL和调优,这使得使用LDAP控制权限的需求大大减少。

庆幸的是Couchbase 5.0已经充分考虑了权限分配的简单性,直接在控制台中就能创建用户、分配权限,如下图。

具体如何使用该功能,在此不再赘述,各看官还是自己动手,赶快下载安装Couchbase 5.0吧~~

文章转载自DBInfos,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论