在 Liberty 中配置安全 MongoDB 连接
可以在 Liberty 中为 MongoDB 连接配置应用程序管理的安全性或容器管理的安全性。
开始之前
启用应用程序来使用 MongoDB。请参阅创建使用 MongoDB 的 Liberty 应用程序。
关于此任务
可以使用应用程序管理的安全性、容器管理的安全性、SSL 管理的安全性或证书认证来保护 MongoDB 应用程序。对于所有类型的安全性,必须在显式启用认证的情况下运行 MongoDB 服务器,以便保护 MongoDB 连接。
过程
- 为 MongoDB 配置应用程序管理的安全性。
如果 mongo 配置元素未指定用户和密码属性,那么产品会假定应用程序使用应用程序管理的安全性或者未使用安全性。应用程序必须使用 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 配置只接受一个用户。所有 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 配置(例如,可用于指定信任库的 SSL 配置),请将 sslRef 属性添加到 MongoDB 配置元素。可在 server.xml 文件中使用 sslRef 属性指定 SSL 配置的设置。
<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