【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
以下のロールを含む
dbadmin
userAdmin
readWrite
分類ロール名説明クラスタ管理・操作用ロールclusterManagerクラスタ管理用ロールクラスタ管理・操作用ロールclusterMonitorクラスタ読み取り専用ロールクラスタ管理・操作用ロールhostManagerクラスタ操作用ロールクラスタ管理・操作用ロールclusterAdminクラスタ管理用ロー
clusterManager
clusterMonitor
hostManager
dropDatabaseアクション
clusterManager
clusterMonitor
hostManager
dropDatabaseアクション
分類ロール名説明バックアップ・リストア用ロールbackupバックアップ用ロールバックアップ・リストア用ロールrestoreリストア用ロール
只有管理员数据库用户才能指定的特殊角色
分類ロール名説明全DB管理操作用ロールreadAnyDatabase全DBの読み取り専用ロール全DB管理操作用ロールreadWriteAnyDatabase全DBの読み書き用ロール全DB管理操作用ロールuserAdminAnyDatabase全DB のユーザー管理用ロール全DB管理操作用ロールdbAdminAnyDatabase全DB 管理用ロール
分類ロール名説明システム管理用ロールrootシステム管理用ロールmongodb内部使用ロール_systemmongodbが内部で使用するロール
请先创建以下两类用户:
1. 最低要求的用户
2. 其他用户
管理员数据库:根用户
每个数据库:读写