0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

mongodbレプリカセットのアクセス制御を有効化する

Posted at

はじめに

img-products-mongodb.png
前回のmongodbレプリカセット構築の続きです。
mongodbはデフォルトではアクセス制御が有効になっていないため、
誰でもアクセス可能な状態になっています。
今回はmongodbにアクセス可能なユーザを作成した後に、アクセス制御を設定してみようと思います。

この記事でわかる・できること

  • EC2内にmongodbレプリカセットに対してアクセス制御をかける方法

動作環境・使用するツールや言語

  • OS バージョン

    • amazonlinux2
  • 言語 バージョン

    • mongodb 5系

前提

  • mongodbがインストール済であること

手順

mongoシェルでログイン

$ mongo localhost:27018

mongoユーザパスワード設定

$ use admin
$ db.createUser({user:"root", pwd:"pwd", roles:["root"]})
$ db.system.users.find()
   →作成したユーザが存在すること確認
$ db.auth("root","pwd")
   →認証が通るか確認

rolesのrootはアクセス制限のないロールになります

アクセス制御設定

$ mkdir -p /usr/data/keys
$ cd /usr/data/keys
$ openssl rand -base64 756 > keyfile
$ chmod 400 keyfile
$ vi /usr/data/db1/mongod.conf
$ vi /usr/data/db2/mongod.conf
$ vi /usr/data/db3/mongod.conf
mongod.conf
# ファイル末尾に追加
security:
    authorization: enabled
    keyFile: /usr/data/keys/keyfile

レプリカセットのアクセス制御をする際は、すべてのDBで同じkeyfileを使用する必要があります。
そのためdb1,db2,db3内のmongod.confで追記するものはすべて同じ内容で問題ありません

mongo.shファイル修正(--authの追記)

#! /bin/bash
mongod --auth -f /usr/data/db1/mongod.conf
mongod --auth -f /usr/data/db2/mongod.conf
mongod --auth -f /usr/data/db3/mongod.conf

修正後は設定を反映させるために、EC2を再起動 or mongodのプロセスを再起動させてください。

動作確認

mongoプロセスを再起動後に実際にアクセス制御が聞いているか試してみてください

# mongoにログイン
$ mongosh

# mongoの構成確認
$ rs.status()
 →ユーザ認証していないため失敗

# ユーザ認証
$ db.auth("root","pwd")

# mongoの構成確認
$ rs.status()
 →ユーザ認証後のため成功

参考資料

自己管理型配置におけるロールベースのアクセス制御
キーファイル認証を使用した自己管理型レプリカセットの配置

おわりに・まとめ

mongodbレプリカセットのアクセス制御手順をまとめてみました。
デフォルトだと誰でも操作可能な状態なので、セキュリティ的も必ずやっておきたいものです。
今回は操作権限のないrootロールを使用しましたが、機会があればロールの種類もまとめてみたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?