副本集安全认证|学习笔记

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 快速学习副本集安全认证

开发者学堂课程【MongoDB精讲课程(下)副本集安全认证】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/727/detail/12994


副本集安全认证

 

集群认证和单机是一样的,一样的是都需要通过用户名和密码登录。

image.png

其实副本集的环境和分片集群是一样的,他都属于一种集群的安全。例如app去登陆访问副本集的时候,如果开启了安全认证是需要用户名和密码,和单机是一样的,之后才可以对副本集进行操作。这是外部的访问和单实例是一样的,因为副本集不是单个的 myrs 服务了,有多个 myrs 服务,这个服务之间的互相访问,就是他们之间的这个互相访问,其实还是需要通过一些这个安全机制,他的这个安全机制通过的是认证的这个 key 文件。

[rcctabobohost~]#openssrand -base64 90-out./mongo.keyfile

[rcctobobohost-]#chmod 400/mongo.keyfile

[rcctubobohost~]11 mongo.keyfile

-r-------.1 root root 122 8 14 14:23mongokeyfile

Key 文件访问之后,主节点存在一个 key 文件,副本节点存在一个 key 文件,仲裁者也存在 key 文件,他们之间的 key 文件要保持一致的,他们之间的通信都是通过去验证 key 文件是否一致,一致之后才会产生连接。除了创建普通用户还要生成一个 key 文件,跟单机一样,要先生成一个普通用户和管理员用户,刚开始还是需要通过用户名和密码来连接他的,连接之前把他的单机符给删掉。

[root@instance-2ki2pjry ~]# ps -ef i grep mongo

root 12500 1 0 11:26 ? 00:00:05 /usr/1ocal/mongodb/bin/mongod -f /mongodb/single/mongod.conf

root 12834 10114 0 11:48 pts/0 00:00:00 grep --color=auto mongo

[root@instance-2ki2pjry ~]# kill -2 12500

[root@instance-2ki2pjry ~]# ps -ef i grep mongo

root 12837 10114 0 11:49 pts/0 00:00:00 grep--color=auto mongo

[root@instance-2ki2pjry ~]#

恢复到一个完整的初始化环境,之后把他的副本集启动起来

//客户端登录服务,注意,这里通过 7oca7host 登录,如果需更远程登录,必须先登录认证才行。

mongo --port 27017

//告知副本集说本机要下线

rs.stepdown()

//#切换到 admin 库

use admin //关闭服务

db.shutdownserver()

分别启动副本集节点:

/usr/1cca1/mongodb/bin/mongod -f/mcngcdb/replica_sets/myrs_27017/rongod.conf

/usr/1cca1/mongodb/bin/mongod-f/mongcdb/repica_sets/myrs_27018/ongod.conf

/usr/1cca1/mongodb/bin/mongod-f/mongcdb/repica_sets/myrs_27019/rongod.conf

之后直接登录普通用户,登录主节点

[rootRinstance-2k12p;ry~]#/uar/Local/mngodb/bin/mongo-port  27017

进入主节点之后和单实例环境是一样的,先创建一个管理员账户

创建超管用户:myroot,密码:123456

myrs:FRIMARY> use admin

switched to dbadmin

myrs:FRIMARY>db.createUserCfuser:"myrcot"pwd:"123456",ro7es: ("roct"]})

successfully added user: { "user" : "myroot"."roles": [ "root" ] } 

创建 key 文件

[rcot@bobohost~]#openssrand -base64 90-out/mongo.keyfile

[rcot@bobohost~]chmod 400/mongo.keyfile

[rcotebobohost~]11mongo.keyfile

-r--------. 1 root root 122 8 14 14:23 mongokeyfile

当前生成的 keyfile 的读写比较多,其他用户也可以读,如果想要提高安全权限,可以调成400,400就是对当前用户可读。这步进不进行都可以。

Key 生成后就需要把每个文件copy到每个节点下面

这里将该文件分别拷贝到多个目录中;[roct@bobohost~]#cpmongo.keyfile/mongodb/replica_sets/myrs_27017

[reatabobohost~1#cpmongokevfile/monoodbireplicasets/mvrs 27018[rootabobohost~]#cpmongo.keyfile/mongodb/replica_sets/myrs_27019

修改配置文件指定 keyfile

分别编辑几个服务的 mongod.con 文件,添加相关内容

/mongodb/replica_sets/mrs_27017/mongod.conf

security:

#KeyFi1e 鉴权文件

keyFile:/mongodb/repica_sets/myrs_27017/mongo.keyfle

#开启认证方式运行

authorization:enablea

/mongodb/replica_set/myrs 27018/mongod.conf

security:

#KeyFile 鉴权文件

keyFile:imongodb/repicasets/myrs_27018/niongo.keyfile

#开启认证方式运行

authorization: enabled

修改副本集文件27017、27018、27019

Wq保存,接下来和单实例一样,需要把刚刚的服务删掉。重启之后产生认证效果,启动的时候注意一定要是 successfully,如果不是就是之前追加的配置文件有问题。

在主节点上添加普通账号

#先用管理员账号登录

#切换到 adnin 库

use admin

#管理员账号认证

db. auth("myroot","123456")

#切换到要认证的库 use articledb

#添加普通用户

db.createUser(fuser:"bobo",pwd:"123456",ro1es:["readwrite"]})

登录的时候登录主节点就可以了,因为创建账户主节点和副本节点之间会同步的。登录状态显示是1表示登录成功。

myrsiPRiMARY> show dbs

myrs:PriMarY> use admin switched to db admin

myrs:PRIMARY> db.auth("myroot","123456")

myrs:PRIMARY> show dbs

admin 0.000GB

articledb 0.000GB

config 0.000GB

local 0.000GB

myrs:PRIMARY>

到现在为止只创建了一个超管用户,用在业务上还是需要用普通账户。

#先用管理员账号登录

#切换到 admin 库 use admin

#管理员账号认证

db.auth("myroot","123456")

#切换到要认证的库 use articledb

#添加普通用户

db.createuser({user: "bobo",pwd:"123456",roles: ["readwrite"]})

副本集除了keyfile需要指定一下,其他的操作基本上和单实例是一致的。创建普通用户就需要指定的库,如果不想在后边写库名,想要使用简便的方式的话,就先要把他切换到 articledb,之后再来创建账户

myrs:PRIMARY> use articledb

switched to db articledb

myrs:PRIMARY> db.createUser({user: "bobo", pwd:"123456",roles: ["readWrite"]})

Successfully added user: { "user”: "bobo","roles” : [ "readWrite" ] )

myrs:PRIMARY>

创建之后就具备了读写权限了,接下来连接副本集

spring:

#款据源配置

data:

mongedb:

#副本集有认让的情况下,字符串连接

uri:

ronaodb://bobo:123456018076.159126:2701718071127019/art cledb?connect-replicaSet&sTaveok-true&replicaSet-myrs

同样,用户名或者密码错误,是不可以连接的。

副本集和单机的区别在于多出来的 keyfile 文件,keyfile 文件需要自己配置,配置之后内部的通信就是相对安全的了,他们之间会通过 keyfile 建立安全连接,推到分片集群也是一样的,之间通过用户名和密码来连接就可以了。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
22天前
|
NoSQL 容灾 MongoDB
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
|
4月前
|
消息中间件 API 数据安全/隐私保护
就软件研发问题之RocketMQ ACL 2.0加强集群组件间访问控制的问题如何解决
就软件研发问题之RocketMQ ACL 2.0加强集群组件间访问控制的问题如何解决
|
安全 NoSQL MongoDB
mongdb安全认证详解
mongdb安全认证详解
140 0
|
存储 NoSQL 安全
MongoDB基本操作(五)——分片集群与安全认证
MongoDB基本操作(五)——分片集群与安全认证
451 0
MongoDB基本操作(五)——分片集群与安全认证
|
Kubernetes 开发者 容器
K8s 集群部署-k8s 集群部署后验证 | 学习笔记
快速学习 K8s 集群部署-k8s 集群部署后验证
511 0
K8s 集群部署-k8s 集群部署后验证 | 学习笔记
|
安全 NoSQL MongoDB
分片集群安全认证|学习笔记
快速学习分片集群安全认证
分片集群安全认证|学习笔记
|
NoSQL MongoDB 开发工具
配置副本集搭建|学习笔记
快速学习配置副本集搭建
配置副本集搭建|学习笔记
|
NoSQL 安全 MongoDB
课程目标 副本集的三个角色|学习笔记
快速学习课程目标 副本集的三个角色
|
运维 NoSQL MongoDB
(3)MongoDB 副本集运维策略
本文聊一聊 MongoDB 副本集运维窗口期的操作策略,最大程度地减少主节点不可用的时间。
|
运维 NoSQL 测试技术
【私货】MongoDB 副本集的运维部署
【私货】MongoDB 副本集的运维部署