外部アクセスの制限
ポート番号の変更
設定を変更する場合は、mongoDBを再起動させる必要がある。
設定ファイルの場所
macの場合
/usr/local/etc/mongod.conf
linuxの場合
/etc/mongod.conf
設定ファイルのポート番号を変更する
net:
port:<変更するポート番号>
ポートを変更した場合は、アクセスする場合にオプションで指定する必要がある。
mongo --port <変更後の番号>
linuxでSElinuxをONにしたまポート番号を変更する場合
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()
configファイルの修正
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
//今度は表示される。(認証がかかっている)
dbごとの個別のユーザーを作成
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操作用ロール | dbAdmin | db管理用ロール |
ユーザーDB操作用ロール | userAdmin | 指定したデーターベースに対してユーザー管理できる |
ユーザーDB操作用ロール | dbOwner | 指定したデータベースのオーナーシステム管理用ロール 以下のロールを含む dbadmin userAdmin readWrite |
分類 | ロール名 | 説明 |
---|---|---|
クラスタ管理・操作用ロール | clusterManager | クラスタ管理用ロール |
クラスタ管理・操作用ロール | clusterMonitor | クラスタ読み取り専用ロール |
クラスタ管理・操作用ロール | hostManager | クラスタ操作用ロール |
クラスタ管理・操作用ロール | clusterAdmin | クラスタ管理用ロー clusterManager clusterMonitor hostManager dropDatabaseアクション |
分類 | ロール名 | 説明 |
---|---|---|
バックアップ・リストア用ロール | backup | バックアップ用ロール |
バックアップ・リストア用ロール | restore | リストア用ロール |
adminデーターベースのユーザーにのみ指定できる特別なロール
分類 | ロール名 | 説明 |
---|---|---|
全DB管理操作用ロール | readAnyDatabase | 全DBの読み取り専用ロール |
全DB管理操作用ロール | readWriteAnyDatabase | 全DBの読み書き用ロール |
全DB管理操作用ロール | userAdminAnyDatabase | 全DB のユーザー管理用ロール |
全DB管理操作用ロール | dbAdminAnyDatabase | 全DB 管理用ロール |
分類 | ロール名 | 説明 |
---|---|---|
システム管理用ロール | root | システム管理用ロール |
mongodb内部使用ロール | _system | mongodbが内部で使用するロール |
最低限、以下の2つのユーザーは作成しておく
adminデータベース:rootユーザー
各データベース:readWrite