2013年11月9日土曜日

【mongo】DBアクセス時に認証を追加する方法

■環境
mongo 2.4.6
CentOS 5.9 64bit

■認証設定
とりあえず通常通りmongoを起動します
mongod

今回はtest1というDBに対して権限を追加します
use test1
db.addUser({user:"guest",pwd:"hogehoge",roles:["dbAdminAnyDatabase","readWrite"]})
test1というDBに対してのみ認証設定を実施するので他のDBに対しては操作することはできません
なので他のDBに対しても操作したい場合はtest1にした処理を同様に他のDBにも実施する必要があります

「dbAdminAnyDatabase」はroles名です、指定できるrole名の一覧は以下を参照してください
http://docs.mongodb.org/manual/reference/user-privileges/

adminコレクションに対しても認証させたい場合は「use admin」を実施したあとで同様のaddUserを実施してください
よくわからないのですが、ユーザ追加のクエリは若干時間がかかります(と言っても数秒です)

■認証ありでのmongod起動
一旦、mongodを停止します( kill or db.shutdownServer() )
認証モードでmongodを起動します
mongod --auth
これで認証が必要な状態でmongodが起動しました

再度、mongoでログインして「show dbs」等を実行しようとすると以下のエラーになるかと思います
Tue Nov  5 12:48:22.596 listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:46

先ほど追加したユーザでmongoにログインしてみます
mongo test1 -u guest -p hogehoge
show collections を実行するとコレクションの一覧を確認することができると思います
show dbs は他のDBに触ることになるのでエラーとなります
test1 配下のコレクションに関してはfindやsaveができます
ログインの方法はdb.auth("guest", "hogehoge")でも可能です

■参考サイト

0 件のコメント:

コメントを投稿