作者简介
李志伟
专注于应用系统基础架构、中间件架构规划实施,对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.6,saslauthd 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吧~~