[MongoDB]は、オープンソースのNoSQLデータベースです。従来のMongoDBセットアップには、データのセキュリティが心配な場合に必要なセキュリティ機能がいくつか欠けています。データベースを実行するサーバーを保護するには、いくつかの方法があります。VPNをセットアップし、VPNに接続されているクライアントのみにアクセスを制限できます。その後、証明書を使用してクライアントとサーバー間のトランスポート層を暗号化できます。このチュートリアルでは両方を行います。[Docker]を使用してMongoDBインスタンスを実行します。これにより、複数のサーバーでMongoDB構成と証明書の再利用性を確保できます。前提条件このチュートリアルを完了するには、次のものが必要です。OpenVPNサーバー。16.04でOpenVPNサーバーをセットアップするには]。サーバーを作成するときに、[プライベートネットワーキング]ボックスを必ずチェックしてください。Dockerイメージを作成し、MongoDBをコンテナーで実行します。このサーバーでもプライベートネットワークを有効にします。両方のサーバーでsudo特権を持つ非rootユーザー。16.04の初期セットアップガイドでセットアップ方法を説明しています。[ローカルマシンにインストールされたMongoDB]。これを使用して、MongoDBサーバーへの接続をテストします。前提条件のOpenVPNの記事に従った場合、プライベートネットワークではなくパブリックネットワークインターフェイスにリクエストを転送するようにサーバーを構成した可能性があります。このチュートリアルでは、VPN接続を介してのみアクセスできるプライベートインターフェイスでのみアクセスできるようにMongoDBサーバーを構成します。VPNクライアントからのトラフィックがプライベートネットワークにもルーティングされるように、VPNサーバーのIP転送ルールを変更する必要があります。OpenVPNサーバーに接続します。@次に、DigitalOceanダッシュボードに移動して、VPNドロップレットを選択し、プライベートIPアドレスを見つけます。プライベートIPアドレスを取得したら、VPNドロップレットで次のコマンドを実行して、そのIPアドレスを使用するネットワークインターフェイスを特定します。grep次のような出力が表示されます。src出力のネットワークインターフェイスに注意してください。+」ですが、実際のインターフェースは異なる場合があります。before.rules」を編集します。/etc/ufw/before.rules前提条件のチュートリアルで定義した次のようなセクションを見つけます。RULESプライベートネットワークインターフェイスの新しいルールを追加します。+`をプライベートネットワークのインターフェースに置き換えてください。次に、ファイルを保存してエディターを終了します。ファイアウォールを無効にしてから再度有効にします。enable次に、VPNサーバーからログアウトします。exit次に、ローカルコンピューターからVPNサーバーへのVPN接続を確立します。このチュートリアル全体でこの接続を維持します。次に、プライベートIPアドレスを使用してMongoDBサーバーに接続し、ファイアウォールを構成しましょう。MongoDBサーバーのファイアウォールのセットアッププライベートIPアドレスを使用してMongoDBサーバーに接続します。DropletのプライベートIPアドレスを見つけてください。ここでサーバーに接続するために使用し、その後データベースサーバーへのアクセスをVPNクライアントに制限しようとしているので、後でそれを使用してMongoDBに直接接続します。これにより、データベースを公開する必要がなくなります。これは、セキュリティ対策が必須です。VPNに接続していることを確認し、プライベートIPを使用してMongoDBサーバーにSSH接続します。@ログインしたら、既存のファイアウォールルールをすべて削除して、外部からのアクセスを防ぎます。2376/tcp次に、VPNに接続されたコンピューターからのみSSHとMongoDBにアクセスできる2つの新しいルールを追加します。そのためには、オリジンIPにVPNサーバーのプライベートIPアドレスを使用します。tcpこれらが構成されている唯一の2つのルールであることを確認します。status次のような出力が表示されるはずです。ALLOWファイアウォールを有効にして、サーバーからログアウトします。enableexit次に、MongoDBサーバーに再度ログインして、IPフィルターを有効にした後もサーバーにアクセスできることを確認します。@SSH接続を確立できない場合は、VPNに接続していることと、プライベートネットワークでトラフィックを転送するようにVPNサーバーを設定していることを確認してください。Console]を使用してログインし、チェックしますファイアウォールルール。MongoDBサーバーのプライベートIPではなく、ルールでVPNサーバーのプライベートIPを指定したことを確認してください。UFWチュートリアル]をご覧ください。基本的なセキュリティ対策を構成したので、MongoDBの構成に進みます。ステップ3-MongoDB構成ファイルの作成このステップでは、SSL証明書を使用するようにMongoDBを構成するカスタムMongoDB構成を作成します。構成と関連ファイルを保持するディレクトリ構造を作成しましょう。`ディレクトリを作成します。+`というディレクトリを作成します。次のコマンドで構造を作成します。config`フォルダーに切り替えます。+」という新しいファイルを開きます。`上のすべてのネットワークインターフェースにバインドするようにデータベースを設定します。0.0.0.0+」へのバインドはセキュリティの問題ではありません。ファイアウォールはいずれにしても外部からの接続を許可しないためです。VPN内のクライアントからの接続を許可する必要があります。ファイルに次を追加します。+」セクションで、SSL証明書へのパスを設定し、証明書のパスフレーズを指定します。実際の証明書ファイルとパスフレーズをすぐに作成します。requireSSL最後に、デフォルトのストレージディレクトリを設定し、ジャーナリングを有効にします。[MongoDBのドキュメントをご覧ください]をご覧ください。ここでは、ファイルを保存してエディターを終了します。使用するSSL証明書を生成します。ステップ4-SSL証明書の生成データ転送を保護するには、MongoDB用に2つのSSL証明書を生成する必要があります。1つはサーバー用で、もう1つはデータベースにアクセスするクライアント用です。+`ディレクトリに移動し、サーバー証明書とキーのペアを生成します。プロンプトに選択した情報を入力します。Phrase」フィールドに注意してください。server.key次の出力が表示され、途中で詳細を入力するよう求められます。.PEMパスフレーズの入力を求められたら、前のステップでMongoDB構成ファイルで使用したのと同じ値を使用していることを確認してください。+`ファイルに結合します。>>次に、クライアントの証明書とキーのペアを生成します。-keyout以前と同じプロセスに従いますが、今回は、VPNサーバーのプライベートIPを使用します。PEMのパスフレーズは、このステップでどのようなものでも構いません。client.pem次に、両方の証明書ファイルをローカルマシンにコピーして、MongoDBサーバーにリモートで接続できるようにします。+`ファイルをローカルマシンに転送します。次に、Dockerイメージを作成し、コンテナでデータベースエンジンを実行して、この構成の移植性を高めましょう。安全なMongoDB構成を作成し、証明書を生成しました。それでは、Dockerでポータブルにしましょう。MongoDBのカスタムイメージを作成しますが、コンテナーを実行するときに構成ファイルと証明書を渡します。イメージを構築するには、Dockerfileが必要です。プロジェクトのルートディレクトリに切り替えて、エディターで空のDockerfileを開きます。Dockerfile新しいファイルに次を追加します。Xenialに基づいてイメージを作成し、最新のMongoDBバイナリをダウンロードし、構成ファイルとデータベースを保存するいくつかのディレクトリを作成するようにDockerに指示します。コンテナーのポート「28018」をホストで使用できるようにし、ユーザーがコンテナーを再起動するたびにMongoを実行します。ファイルを保存して、エディターを終了します。次に、イメージをビルドします。.イメージが構築されたら、イメージに基づいてコンテナを実行します。+」ディレクトリをマウントします。\mongo実行中のMongoDBインスタンスができたので、ローカルコンピューターからアクセスします。ステップ6-MongoDBへのアクセスローカルマシンの新しいターミナルで、MongoDBサーバーのプライベートIPアドレスを使用してデータベースに接続します。ローカルマシンにダウンロードしたclient.pemファイルとserver.pemファイル、およびクライアント証明書の作成時に使用したパスフレーズを提供します。このコマンドを実行してください。28018すべてが正常であれば、MongoDBプロンプトが表示されるはずです。エラーが表示される場合は、VPNサーバーのIPアドレスではなく、MongoDBサーバーのプライベートIPに接続していることを再確認してください。キーの場所とパスフレーズが正しいこと、およびVPNへの接続がまだ実行されていることを確認します。結論これで、Dockerコンテナーで実行されるカスタム構成のMongoDBができました。そのセキュリティは、SSLクライアントサーバー認証とトランスポート暗号化によって許可されます。VPNサーバーに接続されたクライアントへのデータベース接続を制限するようにファイアウォールを構成することにより、セキュリティを追加しました。このセットアップはテストに最適ですが、実稼働環境では、信頼できる認証局と署名付き証明書を使用する必要があることに注意してください。セキュリティニーズを分析し、それに応じて行動する必要があります。データベースにユーザー、パスワード、およびロールを設定することができます。16.04にMongoDBをインストールして保護する方法]の詳細についてはユーザーを作成することは、本番環境のセットアップに向けた優れた次のステップです。