開発運用

Ubuntu 18.04におけるMongoDBのインストールとセキュリティ

MongoDBをUbuntu 18.04にインストールし、セキュリティを強化する手順について、詳細なガイドを提供します。MongoDBは、スケーラブルで高パフォーマンスなNoSQLデータベースであり、特にデータ量が多いアプリケーションでよく使用されます。この記事では、インストール手順とセキュリティの設定方法について深掘りします。

1. MongoDBのインストール

まず、Ubuntu 18.04にMongoDBをインストールする手順を説明します。

1.1 MongoDBリポジトリの追加

Ubuntuの公式リポジトリにはMongoDBが含まれていますが、最新の安定版をインストールするためには、MongoDBの公式リポジトリを追加する必要があります。以下の手順でリポジトリを追加します。

bash
sudo apt update sudo apt install gnupg wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -

次に、MongoDBリポジトリをsources.list.dディレクトリに追加します。

bash
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

1.2 MongoDBのインストール

リポジトリを追加した後、パッケージリストを更新してMongoDBをインストールします。

bash
sudo apt update sudo apt install mongodb-org

インストールが完了したら、MongoDBを起動します。

bash
sudo systemctl start mongod

MongoDBが正常に起動していることを確認するために、ステータスを確認します。

bash
sudo systemctl status mongod

1.3 MongoDBの自動起動設定

システムの再起動時にMongoDBを自動で起動するように設定します。

bash
sudo systemctl enable mongod

2. MongoDBのセキュリティ強化

MongoDBをインターネット上で公開する場合、そのセキュリティを強化することは非常に重要です。以下では、MongoDBを安全に保つための設定をいくつか紹介します。

2.1 認証の有効化

デフォルトでは、MongoDBは認証なしで動作しますが、これはセキュリティリスクを伴います。認証を有効にするには、MongoDBの設定ファイル(/etc/mongod.conf)を編集し、securityセクションを追加します。

bash
sudo nano /etc/mongod.conf

設定ファイル内で、以下のようにsecurityセクションを追加します。

yaml
security: authorization: "enabled"

この設定を保存して終了後、MongoDBを再起動します。

bash
sudo systemctl restart mongod

2.2 ユーザーの作成

認証が有効になった後、MongoDBにアクセスするためのユーザーを作成します。まず、MongoDBシェルにアクセスします。

bash
mongo

次に、adminデータベースに切り替え、管理者ユーザーを作成します。

bash
use admin db.createUser({ user: "admin", pwd: "your_secure_password", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

上記のコマンドでadminというユーザーを作成し、強力なパスワードを設定します。userAdminAnyDatabaseロールは、すべてのデータベースに対して管理者権限を付与します。

2.3 ファイアウォール設定

MongoDBはデフォルトでポート27017を使用します。このポートがインターネットに公開されていると、悪意のある攻撃者に狙われる可能性があります。そのため、ファイアウォールでポートを制限することが重要です。

UFW(Uncomplicated Firewall)を使用して、MongoDBがローカルホスト(127.0.0.1)からの接続のみを受け入れるように設定します。

bash
sudo ufw allow from 127.0.0.1 to any port 27017

これにより、ローカルホスト以外のIPアドレスからMongoDBにアクセスできなくなります。

2.4 MongoDBのネットワークバインディング設定

デフォルトでは、MongoDBはすべてのネットワークインターフェースにバインドされますが、外部からアクセスを許可したくない場合、設定を変更してローカルインターフェースのみにバインドすることができます。

mongod.confファイルを編集して、bindIpオプションを設定します。

bash
sudo nano /etc/mongod.conf

以下のように設定します。

yaml
net: bindIp: 127.0.0.1 # ローカルホストのみにバインド

設定を保存した後、MongoDBを再起動します。

bash
sudo systemctl restart mongod

2.5 TLS/SSLの有効化

データ通信のセキュリティを強化するために、MongoDBでTLS/SSLを有効にすることが推奨されます。これにより、データが暗号化されて送受信されます。

まず、SSL証明書を準備します。次に、mongod.confファイルを編集し、以下のように設定します。

yaml
net: ssl: mode: requireSSL PEMKeyFile: /path/to/your/certificate.pem PEMKeyPassword: your_certificate_password

設定を保存後、MongoDBを再起動します。

bash
sudo systemctl restart mongod

3. MongoDBのバックアップと監視

データベースのバックアップと監視は、運用環境では非常に重要です。以下に、簡単なバックアップ手順を示します。

3.1 バックアップの取得

mongodumpコマンドを使用して、MongoDBのバックアップを取得できます。バックアップを保存するディレクトリを指定して、以下のように実行します。

bash
mongodump --out /path/to/backup/directory

3.2 監視ツールの設定

MongoDBには、mongostatmongotopといった監視ツールが用意されています。これらを使用して、データベースのパフォーマンスやリソースの使用状況を監視できます。

例えば、mongostatを使用して現在のステータスを確認するには、次のコマンドを実行します。

bash
mongostat

4. まとめ

Ubuntu 18.04にMongoDBをインストールし、セキュリティを強化する方法について説明しました。認証の有効化、ユーザーの作成、ファイアウォールの設定、ネットワークバインディングの設定など、MongoDBを安全に運用するための基本的な手順をカバーしました。セキュリティの向上とともに、バックアップや監視を行い、運用環境での安定性を確保しましょう。

Back to top button