为Replica Set配置访问控制

原文地址:https://docs.mongodb.com/manual/tutorial/deploy-replica-set-with-keyfile-access-control/#deploy-repl-set-with-auth 

概述
强制对Replica Set进行访问控制,需要如下配置:
在本教程中,每一个Replica Set节点都使用相同的内部认证机制( internal authentication mechanism )以及配置。
强制的内部认证同样强制用户访问控制( user access control )。
思考
操作系统:
本教程主要使用mongod进程,如果是windows用户,那么可以使用mongod.exe。
Keyfile安全保障
Keyfile是最低限度的安全保障,最好只用于测试和开发环境,千万不要应用到生产环境。对于生产环境,我们建议使用   x.509 certificates
访问控制
本教程包含了在且仅在admin数据库创建最少数量的管理员账户的方法。对于用户认证,本教程采用默认的 SCRAM-SHA-1 身份认证机制。 Challenge-response安全机制最适合于测试与开发环境。对 于生产环境,我们建议使用 x.509 certificates 或者 LDAP Proxy Authentication  (仅在MongoDB Enterprise版本里面支持)或者 Kerberos Authentication  (仅在MongoDB Enterprise版本里面支持)。
想了解更多的关于使用指定认证方式创建用户的方式,请参考mongodb官网。
Configure Role-Based Access Control 了解用户创建于管理的最佳实践。
使用Keyfile访问控制部署新的Replica Set
1. 创建Keyfile
Keyfile的内容就像是一个共享的密码一样在全部Replica Set节点上使用。全部节点的Keyfile内容必须完全一致。
你可以使用任何方式生成你的Keyfile,Keyfile的内容必须在6-1024个字节之间。
在unix系统上,Keyfile一定不能有group或者world的权限。在Windows系统上, keyfile的权限一定不能被勾选。
下面是使用openssl生成一个复杂的伪随机的1024个字符的字符串,用来填充keyfile。然后使用chmod设置文件的所有者只有读权限。
openssl rand -base64 756 > <path-to-keyfile>chmod 400 <path-to-keyfile>
关于keyfile的更多信息,请点击: Keyfiles
(其实自己就可以写一个keyfile,我就是在一个txt文件里面写了一下随机的字母数字就可以了,注意这里只能写字母数字,不能用其它字符)
复制keyfile到每一个Replica Set节点
各节点的存储路径要一致,不能使用共享路径,也不能使用可移动存储设备,例如U盘等。
在Replica Set的每一个节点上强制应用访问控制
在只用mongod是添加keyfile参数,这样就可以启用 Internal Authentication Role-Based Access Control
1. 使用命令行,代码如下:
mongod --keyFile <path-to-keyfile> --replSet <replicaSetName>
2. 使用config文件:
config文件内容如下:

执行mongod: mongod --config <path-to-config-file>
使用localhost interface连接到一个Replica Set节点
登录到mongo的物理机,然后执行mongod,因为在这个时候没有创建任何用户,所以只能在本机上执行mongo控制台。
如:
"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe" --dbpath "C:\Program Files\MongoDB\data\db" --directoryperdb --logpath "C:\Program Files\MongoDB\log\mongod.log" --logappend --install --serviceName MongoDB --serviceDisplayName "MongoDB" --replSet "rs0" --keyFile "C:\Program Files\MongoDB\keyfile.txt"
初始化Replica Set
和初始化其它Replica Set一样 (但是要先切换到admin数据库:use admin):

创建管理员账户
这个账号作为第一个数据库用户,需要有最高的权限,比如有权限创建其它用户, 因此一般给它userAdminAnyDatabase的角色。
同样登录到Primary服务器,链接到mondo控制台,切换到admin数据库,

给新账户管理员认证

为复制集创建管理员
clusterAdmin 角色拥有复制集操作的权限,比如配置复制集。

添加其他用户
目前支持的用户角色: Database User Roles

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值