前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高可用mongodb集群(分片+副本):用户权限配置

高可用mongodb集群(分片+副本):用户权限配置

原创
作者头像
雪人
发布2022-10-13 09:31:30
9970
发布2022-10-13 09:31:30
举报
文章被收录于专栏:DataOpsDataOps

对于搭建好的mongodb副本集加分片集群,为了安全,需启动安全认证,使用账号密码登录。

默认的mongodb是不设置认证的。只要ip和端口正确就能连接,这样是不安全的。

mongodb官网声称,为了能保障mongodb的安全可以做以下几个步骤:

1、使用新的端口,默认的27017端口如果一旦知道了ip就能连接上,不太安全

2、设置mongodb的网络环境,最好将mongodb部署到公司服务器内网,这样外网是访问不到的。公司内部访问使用vpn等

3、开启安全认证。认证要同时设置服务器之间的内部认证方式,同时要设置客户端连接到集群的账号密码认证方式

以下详细描述如何配置安全认证。

■ 创建副本集认证的key文件

用openssl生成密码文件,然后使用chmod来更改文件权限,仅为文件所有者提供读取权限

cd /data/mongodb/conf

openssl rand -out mongo.keyfile -base64 90

chmod 600 mongo.keyfile

ll mongo.keyfile

-r-------- 1 mongod mongod 122 Aug 4 08:33 mongo.keyfile

提示:所有副本集节点都必须要用同一份keyfile,一般是在一台机器上生成,然后拷贝到其他机器上,且必须有读的权限,否则将来会报错:

permissions on /data/mongodb/conf/mongo.keyfile are too open

■ 修改配置文件指定keyfile

编辑各个服务的配置文件,添加如下内容:

vim /data/mongodb/conf/{config,shard1-3,mongos}.conf

keyFile = /data/mongodb/conf/mongo.keyfile

注:开启keyfile认证就默认开启了auth认证

拷贝到其他节点:

scp /data/mongodb/conf/{config.conf,shard1-3.conf,mongos.conf,mongo.keyfile} node2:/data/mongodb/conf

scp /data/mongodb/conf/{config.conf,shard1-3.conf,mongos.conf,mongo.keyfile} node3:/data/mongodb/conf

■ 重新启动节点

依次启动配置节点、分片节点、路由节点

■ 创建帐号和认证

客户端mongosh,通过localhost登录任意一个mongos路由

提示:相当于一个后门,只能在 admin 下添加用户

提示:通过mongos添加的账号信息,只会保存到配置节点的服务中,具体的数据节点不保存账号信息,因此分片中的账号信息不涉及到同步问题

建议:先创建超管用户和普通用户,然后再开启安全配置

创建管理员帐号:

use admin

db.createUser({user: "admin", pwd: "password", roles: "root"})

db.auth("admin", "password")

创建一个普通权限帐号:

use testdb

db.createUser({user: "liking", pwd: "password", roles: "readWrite"})

db.auth("liking", "password")

■ 用管理员帐号可查看整体的分片情况

use admin

db.auth("admin", "password")

sh.status()

■ 用普通帐号访问数据

use testdb

db.auth("liking", "password")

■ 客户端连接多个mongos的标准格式

mongo mongodb://admin:'password'@node1:20000,node2:20000,node3:20000/testdb?authSource=admin

用 mongosh 连接报错,暂时无法解决,只能去掉用户名及密码连接,连接后再鉴权:

mongosh mongodb://node1:20000,node2:20000,node3:20000/admin

db.auth("admin", "password")

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ■ 创建副本集认证的key文件
  • ■ 修改配置文件指定keyfile
  • ■ 重新启动节点
  • ■ 创建帐号和认证
  • ■ 用管理员帐号可查看整体的分片情况
  • ■ 用普通帐号访问数据
  • ■ 客户端连接多个mongos的标准格式
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档