MongoDB 在 CentOS 上的权限配置指南
一 启用访问控制与创建管理员
security:
authorization: enabled
sudo systemctl restart mongod
mongo
use admin
db.createUser({
user: "admin",
pwd: "StrongPass!23",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
mongo -u admin -p StrongPass!23 --authenticationDatabase admin
二 基于角色的访问控制与最小权限实践
use sales
db.createUser({
user: "sales_rw",
pwd: "SalesRw@2025",
roles: [ { role: "readWrite", db: "sales" } ]
})
use admin
db.createUser({
user: "useradmin",
pwd: "UaPass!23",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
use admin
db.grantRolesToUser("sales_rw", [ { role: "dbAdmin", db: "sales" } ])
db.revokeRolesFromUser("sales_rw", [ { role: "dbAdmin", db: "sales" } ])
use admin
db.runCommand({ rolesInfo: 1, showPrivileges: true, showBuiltinRoles: true })
use admin
db.createUser({
user: "ops",
pwd: "OpsPass!23",
roles: [ { role: "clusterMonitor", db: "admin" } ],
authenticationRestrictions: [
{ clientSource: ["10.0.0.0/24"] }
]
})
三 网络与加密访问控制
net:
bindIp: 127.0.0.1,10.0.1.10
port: 27017
sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp
sudo firewall-cmd --reload
# 生成自签名证书(示例)
sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 \
-keyout /etc/ssl/private/mongodb-key.pem \
-out /etc/ssl/certs/mongodb-cert.pem
# mongod.conf
net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/private/mongodb-key.pem
CAFile: /etc/ssl/certs/mongodb-cert.pem
sudo systemctl restart mongod
四 运维与审计要点
setParameter:
auditAuthorizationSuccess: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
五 常见问题与快速排查