[MongoDB]-权限验证管理

[MongoDB]-权限验证管理

senge | 2023年9月

背景说明:现有两套MongoDB副本集群给开发人员使用时未开启认证。

产生影响:用户若输入账号以及密码则会进行校验,但用户可以在不输入用户名和密码的情况下也可直接登录。


倘若黑客借此进行攻击勒索,后果是比较严重的。所以下面我们一起为我们的集群增加认证。

当前版本:4.4.15

1. 生成Keyfile文件

某个节点下面进行操作:

shell 复制代码
openssl rand -base64 753 > /data/mongodb/etc/mongo.keyfile

chmod 600 /data/mongodb/etc/mongo.keyfile

将生成的文件复制到其他节点:

shell 复制代码
scp /data/mongodb/etc/mongo.keyfile user@host:/dir

2. 修改配置文件

shell 复制代码
# 配置文件末尾添加:
security:
    keyFile: /xxx/mongo.keyfile
    authorization: enabled

3. 重启实例

可以先将slave节点停止,再重启Primary节点后,启动slave节点,这样不会更改主节点。

4. 验证集群状态

shell 复制代码
> rs.status()

"health" : 1 即为某节点正常

5. 用户角色

在增加认证登录后,我们还可以对用户的权限进行设置,增加安全性。

5.1 创建用户

json 复制代码
> use admin

> db.createUser(
    {
        user:"username",
        pwd:"xxxxxx",
        roles:[{role:"xxx",db:"xxx"}]
    }
)

关于 role 有以下几种:

5.2 修改用户密码

shell 复制代码
> use admin

> db.changeUserPassword('用户名','新密码');

> db.auth('用户名','新密码');

5.3 用户赋权

shell 复制代码
db.grantRolesToUser(
    "username",
    [
        { role: "xxxx", db: "xxxx" }
    ]
)

不会影响已有权限

5.4 回收权限

shell 复制代码
db.revokeRolesFromUser(
    "username",
    [
        { role: "xxxx", db: "xxxx" }
    ]
)

5.5 更新用户

shell 复制代码
db.updateUser(
    "username",
    {
        customData: { info: "user for username" },
        roles: [
            { role: "dbabd", db: "admin" },
            { role: "read", db: "admin" }
        ]
    }
)

customData: 账户信息描述

到此,我们的对于MongoDB的权限介绍就结束了,如果不对之处,敬请指正,溜啦~~

相关推荐
月光水岸New2 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6752 小时前
数据库基础1
数据库
我爱松子鱼2 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo2 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser3 小时前
【SQL】多表查询案例
数据库·sql
Galeoto3 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)3 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231114 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白4 小时前
PostgreSQL:更新字段慢
数据库·postgresql
敲敲敲-敲代码4 小时前
【SQL实验】触发器
数据库·笔记·sql