本番環境のMongoDBサーバーを安全に構成する

MongoDBが選択したドキュメントストアである場合、この記事は、本番環境に対応するためにすべてを安全かつ適切に構成するのに役立ちます。

MongoDBインストールチュートリアルでは、MongoDBをドロップレットにインストールする方法について説明しています。

いつものように、セキュリティと認証に関する公式ドキュメントをお読みください。

手順

利用可能な2つの異なる推奨パスがあります。 1つは、SSHトンネルを介してデータベースに安全に接続することです。 別の方法は、インターネットを介したデータベースへの接続を許可することです。 2つの選択肢のうち、前者をお勧めします。

SSHトンネル経由で接続

SSHトンネルを介してMongoVIrtualPrivate Serverに接続することで、多くの潜在的なセキュリティ問題を回避できます。 注意点は、VPSを完全にロックダウンし、他のポートをほとんどまたはまったく開かないようにする必要があることです。 推奨されるSSH構成は、キーのみまたはキー+パスワードです。

SSHトンネルを設定するには、次のことを確認する必要があります。

  • MongoDropletにSSHで接続できます
  • Mongoインスタンスはローカルホストにバインドされています

次に、次のコマンドを実行して接続を初期化します。

# The \s are just to multiline the command and make it more readable
ssh \
-L 4321:localhost:27017 \
-i ~/.ssh/my_secure_key \
[email protected]_db_droplet_host_or_ip

このステップバイステップを実行してみましょう:

  1. SSHトンネリングにはSSHが必要です-必要な他の特別なプログラム/バイナリはありません
  2. `-L`オプションは、SSHに、現在のマシンのポート4321がSSHで接続されているMongoDropletのポート`27017`のホスト`localhost`に転送するトンネルを設定するように指示しています。
  3. `-i`オプションは、パスワードではなくSSHキーで接続するための上記の推奨事項を表しているにすぎません。
  4. `ssh_user @ mongo_db_droplet_host_or_ip`は、SSH接続を確立するための標準です

2番目は本当に指導の要です。 これにより、アプリケーションまたはサービスにMongoDBドロップレットに接続するように指示する方法が決まります。

インターネット経由で接続

SSHトンネルを介して接続することが必ずしもオプションではない場合は、いつでもインターネットを介して接続できます。 ここで考慮すべきセキュリティ戦略がいくつかあります。

1つは、非標準のポートを使用することです。 これは難読化の手法であり、デフォルトの接続アダプターが機能しないことを意味します。

# In your MongoDB configuration file, change the following line to something other than 27017
port = 27017

次に、MongoをアプリケーションサーバーのIPアドレスに直接バインドする必要があります。 これを127.0.0.1に設定すると、Mongoはローカルでの接続のみを受け入れるようになります。

# In your MongoDB configuration file, change the following line to your application server's IP address
bind_ip = 127.0.0.1

最後に、MongoDBの認証機能の使用を検討し、ユーザー名とパスワードを設定します。 これを設定するには、 `mongo`コマンドを使用して管理者としてMongoDBシェルに接続し、ユーザーを追加します。 それが完了したら、MongoDB接続文字列に新しく追加されたユーザー名/パスワードを追加していることを確認してください。

結論

上記の出発点を考慮してください。MongoDBセキュリティのすべてを網羅するものではありません。 ここで言及されていない重要な要素は、サーバーファイアウォールルールです。 MongoDBの10genファイアウォールの推奨事項を確認するには、セキュリティドキュメントにアクセスしてください。

資力

EtelSverdlov著