【MongoDB】MongoDB速查表「安全性」(外部访问限制·认证设置)

限制外部访问

更改端口号

如果需要修改设置,就需要重新启动mongoDB。

設置檔案的位置

对于Mac的情况,mongod.conf文件位于/usr/local/etc/目录下。

在Linux的情况下,可以找到mongod的配置文件在/etc/mongod.conf中。

修改配置文件的端口号

net:
 port:<変更するポート番号>

如果更改了端口,则在访问时需要在选项中指定。

mongo --port <変更後の番号>

如果要在Linux上将SElinux打开并更改端口号,请执行以下操作

sudo semanage port -a -t mongod_port_t -p tcp <変更番号>

限制连接IP地址。

net:
  bindIp: <IPアドレス>

//127.0.0.1は必ず指定する。
//例  [127.0.0.1, 192.168.100.100]
//制限を設けない場合は、0.0.0.0を指定

用户认证(独立构建)

MongoDB的默认状态下,未经认证的情况下任何人都可以访问,因此需要进行认证。
用户信息存储在”admin数据库”的”system.users”集合中。

在创建用户之前,如果提前设置认证,则会导致无法访问,请注意!

创建root用户。

use admin
//adminデーターベースに移動
db.createUser({
  user:"root",
  pwd:"root",
  roles:[{role:"root", db:"admin"}]
  })

确认列表

db.getUsers()

修改配置文件

vim /usr/local/etc/mongod.conf

設定進行認證

//末尾に追記
security:
  authorization: enabled

重新启动

brew services stop mongodb-community
brew services run mongodb-community

确认

mongo
use admin
show dbs

//表示されない。

db.auth("root","root")    //先程作ったユーザーでログインしてみる。(username, password)
show dbs

//今度は表示される。(認証がかかっている)

创建单独的每个数据库用户

use test //対象のデーターベースに移動(今回はtest)
db.createUser(
   {user:"tester", 
    pwd :"tester",
    roles:[{role:"readWrite" ,db: "test"}] //testデータベースに対し、読み書き権限をtesterに与える。
   }
)

验证认证

我离开了MongoDB。

mongo //mongodbにアクセス
use test
show collections

結果
Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus

确认验证已被启用。
再次从MongoDB中退出。

以验证方式登录

mongo -u tester -p -authenticationDatabase test

enter password

show collections

//表示されることを確認

主要角色列表

分類ロール名説明ユーザーDB操作用ロールreadコレクションに対する読みユーザーDB操作用ロールreadWriteコレクションに対する読み書きユーザーDB操作用ロールdbAdmindb管理用ロールユーザーDB操作用ロールuserAdmin指定したデーターベースに対してユーザー管理できるユーザーDB操作用ロールdbOwner指定したデータベースのオーナーシステム管理用ロール
以下のロールを含む
dbadmin
userAdmin
readWrite
分類ロール名説明クラスタ管理・操作用ロールclusterManagerクラスタ管理用ロールクラスタ管理・操作用ロールclusterMonitorクラスタ読み取り専用ロールクラスタ管理・操作用ロールhostManagerクラスタ操作用ロールクラスタ管理・操作用ロールclusterAdminクラスタ管理用ロー
clusterManager
clusterMonitor
hostManager
dropDatabaseアクション
分類ロール名説明バックアップ・リストア用ロールbackupバックアップ用ロールバックアップ・リストア用ロールrestoreリストア用ロール

只有管理员数据库用户才能指定的特殊角色

分類ロール名説明全DB管理操作用ロールreadAnyDatabase全DBの読み取り専用ロール全DB管理操作用ロールreadWriteAnyDatabase全DBの読み書き用ロール全DB管理操作用ロールuserAdminAnyDatabase全DB のユーザー管理用ロール全DB管理操作用ロールdbAdminAnyDatabase全DB 管理用ロール
分類ロール名説明システム管理用ロールrootシステム管理用ロールmongodb内部使用ロール_systemmongodbが内部で使用するロール

请先创建以下两类用户:

1. 最低要求的用户
2. 其他用户

管理员数据库:根用户
每个数据库:读写

bannerAds