MongoDB 2.2 的认证
https://docs.mongodb.com/v2.2/administration/security/
- 提供了数据库级别的用户身份认证和授权
- 用户认证授权信息保存在每个数据库的 db.system.users 集合中
- 用户对数据库的操作权限有:只读和读写两种
- 具有读写权限的用户可以为该数据库添加其它用户
- 对 admin 数据库具有读写权限的用户,可以读写访问其它所有数据库
- 对 admin 数据库具有只读权限的用户,可以只读访问其它所有数据库,除了写 admin.system.users
MongoDB 要求首先在 admin 上创建一个管理员用户,再通过此管理员去管理其它普通用户
建管理员用户
use admin
db.addUser("admin","admin")
建普通用户
use admin
db.auth("admin","admin")
use 数据库
db.addUser("用户名","密码", 是否只读)
MongoDB 2.4 的认证
https://docs.mongodb.com/manual/release-notes/2.4/#security-enhancements
https://docs.mongodb.com/v2.4/reference/security/
- 引入了基于角色的权限模型
- 引入了新的权限配置文档
- 仍然兼容旧的 2.2 版本的权限模型(目前 DBA 线上数据库用的就是旧版的方式)
建管理员用户
use admin
db.addUser({user:"admin",pwd:"admin",roles:["userAdminAnyDatabase"]})
建普通用户
use admin
db.auth("admin","admin")
use 数据库
db.addUser({user:"用户名",pwd:"密码",roles:[角色,...]})
支持跨库授权(仅限于对 admin 库用户授予其它库的角色)
use admin
db.addUser( { user: "Carlos",
pwd: "Moon1234",
roles: [ "clusterAdmin" ],
otherDBRoles: { config: [ "readWrite" ]
} } )
MongoDB 2.6 的认证
https://docs.mongodb.com/v2.6/release-notes/2.6/#security-improvements
https://docs.mongodb.com/v2.6/security/
- 支持自定义角色(admin.system.roles)
- 权限的粒度支持到集合级别
- 全局用户管理。用户信息统一保存到 admin 库(admin.system.users)
- 提供了一套新的管理命令
建管理员用户
use admin
db.createUser(
{
user: "admin",
pwd: "admin",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
建超级管理员用户。root 角色拥有最大的权限。通常用于执行集群配置等操作
use admin
db.createUser(
{
user: "superuser",
pwd: "12345678",
roles: [ "root" ]
}
)
建普通用户
use 数据库
db.createUser(
{
user: "用户名",
pwd: "密码",
roles: [ { role: "read", db: "db1" }, {role:"readWrite", db: "db2"}, ... ]
}
)
MongoDB 3.0 的认证
https://docs.mongodb.com/v3.0/release-notes/3.0/#security-improvements
https://docs.mongodb.com/v3.0/security/
- 新版本的默认认证机制为 SCRAM-SHA-1,也仍支持旧版的 MONGODB-CR
- 对 Localhost Exception 采取更加严格的限制
略
MongoDB 3.2 的认证
https://docs.mongodb.com/v3.2/security/
没有新变化
-eof-