SSLは、信頼できないネットワーク上でデータのプライバシーと有効性を維持するために非常に重要です。インターネット上に本番データベースクラスターを展開する場合、SSLは間違いなく検討する必要があります。 ScaleGridは、MongoDBサーバーでSSLを有効にすることをサポートするようになりました。
SSLの有効化は、MongoDB作成ウィザードのチェックボックスをオンにするのと同じくらい簡単になりました:
では、なぜMongoDBでSSLを使用するのですか?
-
プライバシー
セキュリティで保護されていないネットワークを介してMongoDBサーバーに接続している場合、データは暗号化されずに移動し、盗聴と改ざんの両方の影響を受けやすくなります。 SSLはデータを暗号化するため、2つのエンドポイントのみが暗号化されていないデータにアクセスできます。
-
認証
PKI(秘密鍵インフラストラクチャ)を使用して、適切なCAからの証明書を持つクライアントのみがMongoDBサーバーに接続できるようにします。これは追加の手順であり、カスタム証明書またはCAを使用しないことを選択できます。エンドツーエンドの暗号化により、プライバシーのメリットを引き続き享受できます。
MongoDBSSLの欠点
-
パフォーマンスオーバーヘッド
SSLを使用すると、パフォーマンスのオーバーヘッドが確実に発生します。包括的なテストはまだ実行していませんが、SSLを使用しているため、明確なオーバーヘッドがあります。
-
MongoDBUIの欠如
人気のあるMongoDB UIのほとんどは、そのままではSSLをサポートしていません。そのため、有料版を購入するか、mongoコンソールを使用する必要があるかもしれません。
SSL対応のMongoDBサーバーへの接続
SSLが有効になっているMongoDBサーバーに接続している場合、MongoDB接続コードにはいくつかの違いがあります。詳細については、ドライバーのドキュメントを参照してください。
-
Mongo Shell
デフォルトのmongoクライアントはSSL対応サーバーへの接続をサポートしていません。SSL対応のMongoDBビルドが必要です。 SSL対応サーバーにSSHで接続し、サーバー上のmongoクライアントを使用して接続できます。 ScaleGridが提供する管理者ユーザーを使用して接続するための構文は次のとおりです。
mongo <span style="color: #758e9f;">--ssl --sslCAFile <file.crt></span> -u admin -p <pass> servername/admin
-
コード
MongoDB接続文字列に「ssl=true」プロパティを追加する必要があります。また、特定のプラットフォーム(JDKなど)では、サーバーに接続する前に、SSL証明書の公開鍵を信頼できるパスに追加する必要があります。デフォルトでは、自己署名証明書がクラスターごとに生成されます。 UIからSSL証明書の公開鍵をダウンロードするか、サーバーの/etc/ssl/mongodb-cert.crtから証明書をダウンロードできます。 UIでは、SSL公開証明書をダウンロードするためのリンクが接続文字列モーダルで利用できます:
インスタンスにSSHで接続する方法の詳細については、このブログ投稿の「VM資格情報」セクションを参照してください。 crtファイルは、サーバーの/etc/ssl/mongodb-cert.crtにあります。公開鍵をダウンロードしたら、信頼できるキーストーンに追加する必要があります:
keytool -import -alias "MongoDB-cert" -file "/etc/ssl/mongodb-cert.crt" -keystore "/usr/java/default/jre/lib/security/cacerts" -noprompt -storepass "changeit"
cacertsストアのデフォルトのパスワードは「changeit」です。セキュリティ上の理由から、このパスワードを自分のものに変更する必要があります。証明書を追加したら、キーストーンで証明書を列挙して、証明書が追加されたことを確認します。
keytool -list -keystore cacerts -storepass changeit
-
Mongo UI:Robo 3T
Robo 3T(以前のRobomongo)は、SSLとの接続をサポートする数少ないMongoDBUIの1つです。 MongoDBサーバーへの接続を作成するときは、SSLオプションを選択します。証明書には、公開鍵と秘密鍵の両方を含む.pemファイルを使用します。このファイルは、MongoDBサーバーの/ etc/sslにあります。詳細については、Robo3TMongoDB接続ガイドを確認してください。
いつものように、ご不明な点がございましたら、[email protected]までお問い合わせください。