mongo的身份验证和授权

Posted tuhooo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongo的身份验证和授权相关的知识,希望对你有一定的参考价值。

问题来源

技术分享图片

刚装好的mongo,准备登陆进去测一把的,结果就给我报这个错,鄙人是新手,还不太清楚这个,现学一下~

Mongo的身份验证

在上一篇安装mongo的博客中(https://www.cnblogs.com/tuhooo/p/9673685.html),提供了一个简单的配置文件,其中有个选项是

auth=true

这里的意思是开启身份验证,有用户,密码,角色,权限之类的东西,如果把auth设为false的话,那么mongo就相当于裸奔了,谁都可以连进来。如果服务器安全性挺高的,裸奔倒也不是问题。但是现在的版本还是推荐把这个auth给打开。

认证、授权和用户

身份认证:验证用户的身份,你是谁

授权:判定用户在通过了身份验证的数据库上可以进行那些操作,比如读,写,只读,只写等

auth=true会禁止对数据库的匿名访问。

Mongo中用户的信息在system.users集合中,改集合存在于管理数据库中(我这里的是admin),它存储了用户id,密码和创建该集合所面向的数据库以及对用户授权的权限。

技术分享图片

在打印的用户信息的第一行中,"user" : "tuhooo", "db" : "admin",表示了tuhooo这个用户及其关联的数据库"admin",它们两个唯一标识了Mongo中的一个用户。如果两个用户具有相同名称,但是关联到了不同的数据库,那么它们被认为是两个不同的用户。

在用户信息的倒数第二行:"roles" : [ { "role" : "read", "db" : "admin" }, { "role" : "userAdminAnyDatabase", "db" : "admin" } ]表明了tuhooo在这个用户可以有不同数据库的不同权限(这里只有一个库,因为我还没来得及建测试库)。如果两个用户具有相同的名称但是关联到了不同的数据库,那么它们被认为是两个不同的用户。

小结:

用户名和关联的数据库唯一标识了Mongo中的一个用户。

一个用户可以在不同数据库中具有不同授权级别的多个角色。

技术分享图片

Mongo中的角色

Mongo中可用的角色有以下:

read

readWrite

dbAm

ensureIndex、dropIndex、reIndex、indexStats

userAdmin

clusterAdmin

readAnyDatabase

readWriteAndDatabase

userAdminAnyDatabase

dbAdminAnyDatabase

其他角色

从2.6版本开始,一个用户管理员还可以通过提供集合级别以及命令级别的访问权限来创建遵循最小权限策略的用户定义的角色。用户定义的角色仅作用于创建它的数据库中,并且被数据库


待续~有点事情~


以上是关于mongo的身份验证和授权的主要内容,如果未能解决你的问题,请参考以下文章

什么是身份验证和授权 身份验证和授权介绍【详解】

Mongo使用护照身份验证创建用户错误

Mongo db中的身份验证:如何选择?

Docker mongo 身份验证失败,带有 URI

通过 ansible playbook 启用 mongo 身份验证

在 mongo、node、passport 和 heroku 上对用户进行身份验证。几天后停止工作