MongoDBに認証を設定する
MongoDBに認証を設定する
MongoDBはデフォルトでは認証が設定されていません。
つまり、MongoDBに接続できれば、誰でもDBを操作することができてしまいます。
このままでは、セキュリティ的に大問題なので、ユーザー認証を設定し、ログインしないとDB操作できないようにします。
管理ユーザーを作成する
まず、はじめに、データベース全体を管理する管理ユーザーを作成します。
管理ユーザーはadmin
データベースに作成します。
ユーザーの作成はcreateUser()
です。
use admin db.createUser({ user: "admin", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, ] })
やっていることは、use admin
でadminデータベースを選択し、createUser()
でユーザーを作成しているだけです。
権限として、userAdminAnyDatabase
を指定することで、
各データベースの管理ユーザーとしています。
管理ユーザーでログイン
db.auth("ユーザー名", "パスワード")
でログインすることができます。
db.auth("admin", "password")
ログインに成功すれば1が返ってきます。
ログイン失敗時は0です。
一般ユーザーを作成
では、一般のデータベースを選択し、そのデータベースのユーザーを作成していきます。
ここでは、testというデータベースに一般ユーザーを作成しています。
use test db.createUser({ user: "user1", pwd: "password", roles: [ { role: "readWrite", db: "test" }, ] })
認証をONにしてMongoDBを起動
ユーザーを作成できたので、MongoDBのアクセスに認証を必要とします。
サーバーの起動時に、--auth
オプションを付けることで、認証が必要になります。
$ mongod --auth
mongoコマンドでログインする
mongo
コマンドでアクセスする場合、-u
オプションでユーザー名、-p
オプションでパスワードを設定することでログインすることができます。
このとき、--authenticationDatabase
でデータベースを指定します。
$ mongo -u "user1" -p "password" --authenticationDatabase "test"
終わり