MongoDB的用户管理
首先
请参考官方手册,了解有关MongoDB用户管理的详细信息。
简要描述
如果对于MongoDB,默认情况下,身份验证和授权功能是禁用的,可以无限制地使用。在这里,我们将记录MongoDB身份验证和授权功能的概述和使用方法。
MongoDB提供了多种认证方式,包括SCRAM-SHA-1、MONGODB-CR(Challenge and Response)和X.509公钥认证,在版本3.0及以上默认使用SCRAM-SHA-1。此外,Enterprise版还支持Kerberos认证和LDAP代理认证。
任务的流程 de
首先,注册MongoDB的用户管理员。
然后启用认证和授权。
最后注册普通用户。
环境
用户管理员的注册
首先,我们需要注册用户管理员。这是一个负责注册普通用户和分配权限的用户,可以通过创建用户或授予角色等方式进行操作。他们会被分配userAdmin角色或者userAdminAnyDatabase角色。
MongoDB的用户信息在admin数据库中进行管理。连接到admin数据库并注册用户管理员。
# MongoDBに接続する。
mongo
# adminデータベースに接続する。
use admin
# ユーザ管理者を登録する。
db.createUser({
user:"管理者のID(adminなど)",
pwd:"パスワード",
roles:[{ role:"userAdminAnyDatabase", db:"admin" }]
})
启用MongoDB的认证和授权
为了启用认证和授权功能,将重新启动MongoDB的实例。在运行mongod命令时,加上–auth选项。
mongod --auth --dbpath /var/lib/mongo
补充说明,如果使用systemctl启动,则需在/etc/mongod.conf文件中添加以下内容。
# security:のコメントアウトを外し忘れないように!
security:
authorization: enabled
这将使认证和授权生效。
以用户管理员身份登录
在MongoDB中作为用户管理员连接。连接后可以使用mongo命令通过db.auth方法登录为用户管理员,或者在执行mongo命令时直接以用户管理员身份登录。
- db.authで認証する方法
$ mongo
> use admin
> db.auth("管理者のID", "パスワード")
- mongoコマンドで認証する方法
$ mongo -u "ユーザ管理者" -p "パスワード" --authenticationDatabase="admin"
用户注册
在注册用户时,需要指定目标数据库进行注册。这个数据库称为认证数据库。
当用户使用mongo命令登录时,需要使用–authenticationDatabase选项指定该数据库。
通过分配权限给用户,可以使其能够连接认证数据库以外的其他数据库。
用户注册的命令如下所示。
> use [データベース名(authentication databaseとなる)]
> db.createUser(
{
user: "ユーザ名",
pwd:"パスワード",
roles:[
{role:"readWrite", db:"使用するデータベース名"},
{role:"readWrite", db:"使用するデータベース名"},
・・・
]
}
)
在roles当中,这个用户可以指定多个数据库以及针对这些数据库的角色。
让我试着连接
要连接到已创建的用户的数据库,请执行以下操作。
$ mongod -u "ユーザ名" -p "パスワード" --authenticationDatabase="登録時に指定したauthentcation databaseの名前"
滚动列表
以下是已设定好的角色。详细信息请参阅“内置角色”。
readWriteシステム系のDBやコレクション以外のデータを読み書きする権限Database Administration RolesdbAdminデータベースの管理権限
dbOwnerシステム全体の管理権限。readWrite、dbAdmin、userAdminロールと関連付いている。
userAdminユーザやロールの管理者Cluster Administration RolesclusterAdminクラスタの管理権限。clusterManager、clusterMonitor、hostManagerロールと紐付く。
clusterManagerクラスタの運用管理権限
clusterMonitorクラスタのモニタリングツールに対する参照権限
hostManagerサーバの運用管理権限Backup and Restore Rolesbackupデータのバックアップ権限
restoreバックアップデータからのリストア権限ALL-Database RolesreadAnyDatabase全てのDBの読み取り権限
readWriteAnyDatabase全てのDBの読み書き権限
userAdminAnyDatabase全てのDBのユーザ管理権限
dbAdminAnyDatabase全てのDBのデータベース管理権限。dbAdminと同等。Superuser Rolesrootシステム全体の管理権限。readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin roles、restore、backupが紐付く。Internal Role__system内部処理用の権限。割り当ててはいけない。