Liberty でのセキュア MongoDB 接続の構成
Liberty で MongoDB 接続にアプリケーション管理セキュリティーまたはコンテナー管理セキュリティーを構成することができます。
始める前に
アプリケーションが MongoDB を使用できるようにします。 『MongoDB を使用する Liberty アプリケーションの作成』を参照してください。
このタスクについて
アプリケーション管理セキュリティー、コンテナー管理セキュリティー、SSL 管理セキュリティー、または証明書認証を使用して、MongoDB アプリケーションを保護することができます。すべてのセキュリティー・タイプでも、MongoDB サーバーは、MongoDB 接続を保護するように認証を明示的に有効にした状態で稼働していなければなりません。
手順
- MongoDB にアプリケーション管理セキュリティーを構成します。
mongo 構成エレメントで user と password の属性を指定しないと、アプリケーションがアプリケーション管理セキュリティーを使用しているか、セキュリティーを使用していないものと製品は想定します。アプリケーション管理セキュリティーを有効にする場合、アプリケーションは、MongoDB API を使用して認証される必要があります。以下に例を示します。
<mongo id="mongo1" libraryRef="MongoLib" /> <mongoDB jndiName="mongo/testdb" mongoRef="mongo1" databaseName="db-test-1"/>
{ ... // Java snippet @Resource(name = "mongo/testdb") protected DB db; private void auth() { if (!db.isAuthenticated()) db.authenticate("user", "password".toCharArray()); } ... }
- MongoDB にコンテナー管理セキュリティーを構成します。
コンテナー管理セキュリティーを使用する場合は、mongo 構成エレメントでユーザーとパスワードを指定する必要があります。 mongo の各構成ごとに、ユーザーは 1 つだけ指定できます。 すべての MongoDB インスタンスが、指定されたユーザーとパスワードを使用します。 例えば、次の例では、mongo1 を参照するすべての MongoDB インスタンスが mongoUserName と pw を使用します。
<mongo id="mongo1" libraryRef="MongoLib" user="mongoUserName" password="pw"/> <mongoDB jndiName="mongo/testdb" mongoRef="mongo1" databaseName="db-test-1"/> <mongoDB jndiName="mongo/testdb2" mongoRef="mongo1" databaseName="db-test-2"/>
コンテナー管理セキュリティーを使用するアプリケーションは、 com.mongodb.DB.authenticate(user, pass) を呼び出してはなりません。
Liberty と MongoDB サーバーの間に SSL 接続を作成します。
Liberty と MongoDB サーバーの間に SSL 接続を作成するには、server.xml ファイル内で ssl-1.0 Liberty フィーチャーを追加し、MongoDB 構成エレメントに sslEnabled="true" を指定します。接続が暗号化されるようにするため、MongoDB サーバーで SSL を明示的に使用可能にする必要があります。
<featureManager> <feature>mongodb-2.0</feature> <feature>ssl-1.0</feature> </featureManager><mongo id="mongo3" libraryRef="MongoLib" user="mongoUserName" password="pw" sslEnabled="true"/> <mongoDB jndiName="mongo/testdb3" mongoRef="mongo3" databaseName="db-test-3" />
カスタム SSL 構成を使用します。
カスタム SSL 構成を使用するには、MongoDB 構成エレメントに sslRef 属性を追加します。カスタム構成は、例えば、トラストストアを指定するために使用されることがあります。sslRef 属性を使用して SSL 構成を指定します。この SSL 構成は server.xml ファイル内でセットアップできます。
<featureManager> <feature>mongodb-2.0</feature> <feature>ssl-1.0</feature> </featureManager><keyStore id="myTrustStore" password="truststorepw" location="${server.output.dir}/resources/security/trustStore.jks"></keyStore> <ssl id="mySSLConfig" keyStoreRef="myTrustStore" /> <mongo id="mongo4" libraryRef="MongoLib" user="mongoUserName" password="mongopw" sslEnabled="true" sslRef="mySSLConfig"/> <mongoDB jndiName="mongo/testdb4" mongoRef="mongo4" databaseName="db-test-4" />
証明書認証を使用します。
MongoDB での証明書認証の使用を構成するには、useCertificateAuthentication を追加し、userid と password を削除します。<featureManager> <feature>mongodb-2.0</feature> <feature>ssl-1.0</feature> </featureManager><keyStore id="myTrustStore" password="truststorepw" location="${server.output.dir}/resources/security/trustStore.jks"></keyStore> <keyStore id="myKeyStore" password="keystorepw" location="${server.output.dir}/resources/security/keyStore.jks"></keyStore> <ssl id="mySSLConfigCertAuth" trustStoreRef="myTrustStore" keyStoreRef="myKeyStore" clientKeyAlias="alias_name_of_key" /> <mongo id="mongo5" libraryRef="MongoLib" sslEnabled="true" sslRef="mySSLConfigCertAuth" useCertificateAuthentication="true" /> <mongoDB jndiName="mongo/testdb5" mongoRef="mongo5" databaseName="db-test-5" />
clientKeyAlias は、鍵ストアに複数の鍵が含まれている場合のみ必要です。鍵ストアおよびトラストストアの構成について詳しくは、MongoDB 資料を参照してください。
次のタスク
MongoDB サーバーが稼働していることを確認し、アプリケーションから MongoDB のセキュリティーをテストします。

ファイル名: twlp_mongodb_secure.html