需要搭建帮助的可以去taobao搜索Easy Company技术服务,谢谢!!!
MongoDB安全认证实验主要是模拟如何通过配置用户和权限实现数据库的安全认证。
step1环境准备
确保你的MongoDB环境已安装并正常运行
step2配置MongoDB启用认证
mongodb默认不启用安全认证,所以需要手动去开启
找到mongodb的配置文件,修改配置文件,mongod.conf文件信息。
在配置文件中,启用以下选项:
# mongod.conf
# 存储配置
storage:
dbPath: /usr/local/mongodb/data
# 网络配置
net:
port: 27017
bindIp: 0.0.0.0 # 启用所有网络接口
# 日志配置
systemLog:
destination: file
logAppend: true
path: /usr/local/mongodb/logs/mongo.log
logRotate: reopen # 日志文件轮转
# 安全配置
security:
authorization: enabled # 启用角色基于的访问控制
# 进程管理配置
processManagement:
fork: true # 以守护进程模式运行
pidFilePath: /usr/local/mongodb/logs/mongod.pid
重启MongoDB服务
应用更改需要重启MongoDB服务:(或者,mongodb.conf)
mongod --config=/usr/local/mongodb/mongod.yaml
step3创建管理员用户
管理员用户将用于管理其他用户和数据库
启动Mongo Shell
连接到MongoDB(此时认证尚未启用):
mongosh --port 27017
切换到admin
数据库
use admin
创建管理员用户
执行以下命令创建管理员用户:
db.createUser({
user: "admin",
pwd: "wangjianxiong", // 替换为安全的密码
roles: [{ role: "root", db: "admin" }]
})
验证管理员用户
退出并使用管理员用户重新登录验证:
mongosh -u admin -p 'wangjianxiong' --authenticationDatabase admin
运行以下命令确认连接状态:
db.runCommand({ connectionStatus: 1 })
step4创建普通用户
普通用户仅限于操作特定的数据库。
切换到目标数据库
例如,创建一个只能操作testDB
的用户:
use testDB
创建用户
为该数据库创建具有读写权限的用户:
db.createUser({
user: "testUser",
pwd: "test123", // 替换为安全的密码
roles: [{ role: "readWrite", db: "testDB" }]
})
step5验证普通用户权限
使用普通用户登录测试:
mongosh -u testUser -p 'test123' --authenticationDatabase testDB
尝试以下操作:
插入数据:
db.collection.insert({ key: "value" })
查询数据:
db.collection.find()
尝试访问其他数据库(应返回权限不足错误):
use admin
db.collection.find()
step6模拟未授权访问
测试在未认证状态下的限制:
不带用户信息登录:
mongosh
尝试访问数据库:
db.testDB.find()
正常会出现下述
step7MongoDB Compass认证连接
至此成功完成了MongoDB安全认证的实验。MongoDB实现了基于角色的访问控制,并验证了用户权限的有效性。可以进一步扩展实验,如启用SSL/TLS加密或使用外部身份认证(如LDAP)。