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的用户管理员。
然后启用认证和授权。
最后注册普通用户。

环境

使用環境バージョンCentOS7.4.1708MongoDBv3.4.9

用户管理员的注册

首先,我们需要注册用户管理员。这是一个负责注册普通用户和分配权限的用户,可以通过创建用户或授予角色等方式进行操作。他们会被分配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の名前"

滚动列表

以下是已设定好的角色。详细信息请参阅“内置角色”。

種別ロール名概要Database User Rolesreadシステム系のDBやコレクション以外のデータを読む権限
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内部処理用の権限。割り当ててはいけない。
bannerAds