フリーのwikiサーバGROWIでユーザー認証を後から設定変更する手順について紹介します。今、ネットで検索するとヒットする手順は、DBにユーザーを設定していないので、セキュリティ的に問題になることがあります。ある記事では、ウイルスに感染してデータが飛んだという内容が書かれていました。
Linuxもセキュリティ対策が必要な時代なので、トレンドマイクロの製品でも入れて置きましょう。パフォーマンスを要求される場合は、DBを分けるとか、セキュリティを考えて置いたほうがいいですね。
そして、話を元に戻して、後からMongoのユーザー追加する手順からです。
MongoDB3系でユーザーを作成し、認証を有効にする設設定
MongoDB3のデータベースに接続すると「WARNING: Access control is not enabled for the database」というエラーが出力されますが、これを消す方法イコール、ユーザーを定義することになります。
以下は手順です。
keyfileの作成
# mkdir -p /usr/local/mongodb/conf
# openssl rand -base64 741 > /usr/local/mongodb/conf/mongodb-keyfile
権限の設定
# chmod 600 /usr/local/mongodb/conf/mongodb-keyfile
# chown -R mongod.mongod /usr/local/mongodb/conf/mongodb-keyfile
# vi /etc/mongod.conf
----
----
security:
keyFile: /usr/local/mongodb/conf/mongodb-keyfile
-----
サービス再起動
サービス再起動
# systemctl restart mongod
接続してみて、エラーが表示されないことを確認します。
MongoDB shell version v3.6.4connecting to: mongodb://127.0.0.1:27017/MongoDB server version: 3.6.4>
管理ユーザを作成します。
# mongo
------
> use admin
switched to db admin
> db.createUser({user:"ユーザー名",pwd:"パスワード",roles:[{role:"userAdminAnyDatabase",db:"DB名"}]})
Successfully added user: {
"user" : "myUserAdmin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
------
ユーザー名、パスワードは環境に応じて変更してください。
ユーザー名、パスワードは環境に応じて変更してください。
# vi /etc/mongod.conf
------
security:
keyFile: /usr/local/mongodb/conf/mongodb-keyfile
authorization: enabled
------
# systemctl restart mongod
# mongo
> use admin
switched to db admin
> db.auth("ユーザー名","パスワード")
1
※「1」で成功。
とりあえず管理者ユーザーまでの作成が完了しました。
ちなみに、DBに対して権限を与えるだけで使えるようになりますので、例えば、すでに「TestDB」というデータベースがある場合は、以下の手順でユーザー作成、権限を付与します。権限は「readWrite」を与えています。
> use TestDB
> db.createUser({user:"test",pwd:"test",roles:[{role:"readWrite",db:"TestDB"}]})
Ctrl+Cで抜けて、testユーザで接続
# mongo -u "test" -p "test" --authenticationDatabase "TestDB"
# use TestDB
以下のコマンドでエラーが出なければ問題ないはずです。
# show collections
GROWIからMongoDBへ接続
一旦、上にならいDB名は「TestDB」にしていますが、環境に合わせてください。
# MONGO_URI=mongodb://test:test@MONGO_HOST:MONGO_PORT/TestDB npm start
PORT=3000NODE_ENV=productionREDIS_URL="redis://localhost:6379"ELASTICSEARCH_URI="http://localhost:9200"#SECRET_TOKEN=PASSWORD_SEED="`openssl rand -base64 128 | head -1`"FILE_UPLOAD=local
[wq!]で保存。
-------------
念の為、サーバー再起動して、以下のURLで接続できればOKです。「/var/log/messages」でエラーがでていないこともチェックしておきます。
http://IPアドレス:3000