在 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 配置(例如,可能用於指定信任儲存庫),請將 sslRef 屬性新增至 MongoDB 配置元素。 使用 sslRef 屬性指定 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