复制集中使用访问控制需要配置:
1.启用内部认证机制 -- keyfiles机制
2.客户端与复制集连接启用用户访问控制
启用keyfiles访问控制
1.创建keyfile并修改文件权限为只读
openssl rand -base64 755 > keyfile
chmod 400 keyfile
2.复制文件到各成员,文件存放路径一致,确保访问用户都能访问这个文件
3.shutdown成员
shutdown所有成员,包括arbiters,为了避免rollback的潜在风险,必须保证primary是最后shutdown的成员
admin用户使用db.shutdownserver()
use admin
db.shutdownServer()
4.使用配置文件重启mongod,使用原来的replsetname
配置文件形如:
security:
keyFile:
replication:
replSetName:
5.登录primary(通过rs.status()验证)添加管理用户
db.getSiblingDB()
Used to return another database without modifying the db variable in the shell environment.
创建一个能够创建其他用户权限的用户 -- useradminanydatabase
执行以下操作
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "fred",
pwd: "changeme1",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
6.认证用户登录
(1)登录后-->db.getSiblingDB("admin").auth("fred", "changeme1" )
(2)mongo -u "fred" -p "changeme1" --authenticationDatabase "admin"
7.创建并授权集群管理用户
db.getSiblingDB("admin").createUser(
{
"user" : "ravi",
"pwd" : "changeme2",
roles: [ { "role" : "clusterAdmin", "db" : "admin" } ]
}
)
参考文档:
file-access-control-in-existing-replica-set/
阅读(629) | 评论(0) | 转发(0) |