2012年05月24日

MongoDB ユーザ認証

便利な MongoDB ですが、デフォルトは認証無し、誰でもパスワード無しでアクセス出来てしまいます。
これでは本番運用するにはちょっと・・・やっぱり最低限のユーザ認証は必要ですね。
もちろん MongoDB もユーザ認証に対応しているのですが、設定が少し面倒なので、簡単な設定の仕方をメモっておきます。

○MongoDBのインストール
rpm でのインストールを前提
設定ファイル /etc/mongodb.conf
デフォルトは、ユーザ認証無し、IPアドレス(127.0.0.1)でのアクセス制限あり

○管理用ユーザの登録
まず MongoDB の管理者の登録をします。
最初に管理者を登録しておかないと、設定変更した時にアクセス出来なくなってしまいますからね(試してみた、というか間違った経験あり(^^;)

管理者登録方法
$ mongodb
> use admin
> db.addUser("admin","password");


※もちろんユーザ名とパスワードはちゃんと設定しましょう。

○ユーザ認証ありで再起動
/etc/mongodb.conf を変更します。
auth = true  # コメントアウトされているので有効にする
#bind_ip = 127.0.0.1  # ネットワークからアクセス出来るようにする場合はコメントアウトする

MongoDB を再起動することでユーザ認証がないとアクセス出来なくなります。

○管理者でログインしてみる。
$ mongo
> use admin
> db.auth("admin","password");


ちなみに、adminデータベースは管理者というよりも、デフォルトのユーザ認証に使われるデータベースです。ここでは管理者と書いたけど、実際はadminデータベースで認証した場合は何でも出来るってことで、特に管理者って権限があるわけではないようです。

追加
adminにユーザを作ってしまうと何でも出来てしまうので、アクセス制限したい場合は、データベース毎にユーザを作りましょう。
さらに、読み取り専用ユーザというものも作れて、書込む必要がないユーザにはこちらの方が便利かも
読み取り専用ユーザを作るには、trueを追加するだけ
> db.addUser("readonly","password", true);
ラベル:MongoDB AUTH
posted by zjapan at 16:13| Comment(0) | TrackBack(0) | DB | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック