Sie können anwendungs- oder containergesteuerte Sicherheit für MongoDB-Verbindungen in Liberty konfigurieren.
Informationen zu diesem Vorgang
Sie können MongoDB-Anwendungen mit anwendungsgesteuerter Sicherheit, containergesteuerter Sicherheit, mit SSL verwalteter Sicherheit oder Zertifikatsauthentifizierung schützen. Der MongoDB-Server muss für alle Sicherheitstypen mit einer Authentifizierung ausgeführt werden, die explizit für die Sicherung von MongoDB-Verbindungen aktiviert wurde.
Vorgehensweise
- Konfigurieren Sie die anwendungsgesteuerte Sicherheit für MongoDB.
Wenn mit dem Konfigurationselement mongo keine Benutzer- und Kennwortattribute angegeben werden,
geht das Produkt davon aus, dass eine Anwendung entweder anwendungsgesteuerte Sicherheit oder keine Sicherheit
verwendet. Die Anwendung muss für die Aktivierung anwendungsgesteuerter Sicherheit eine Authentifizierung mit MongoDB-APIs durchführen. Beispiel:
<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());
}
...
}
- Konfigurieren Sie die containergesteuerte Sicherheit für MongoDB.
Im Konfigurationselement mongo muss für die Verwendung containergesteuerter
Sicherheit ein Benutzer und ein Kennwort angeben sein. Für jede
mongo-Konfiguration ist nur ein einziger Benutzer zulässig. Alle MongoDB-Instanzen verwenden die
angegebene Benutzer/Kennwort-Kombination. Alle MongoDB-Instanzen beispielsweise,
die mongo1 im folgenden Beispiel referenzieren, verwenden mongoUserName und 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"/>
Anwendungen, die containergesteuerte Sicherheit verwenden,
dürfen com.mongodb.DB.authenticate(user,
pass) nicht aufrufen.
Erstellen Sie eine SSL-Verbindung zwischen Liberty und dem MongoDB-Server. Wenn Sie eine SSL-Verbindung zwischen Liberty und dem MongoDB-Server erstellen, fügen Sie der Datei server.xml
das Liberty-Feature ssl-1.0 hinzu und geben Sie für das MongoDB-Konfigurationselement sslEnabled="true" an. SSL muss im MongoDB-Server explizit aktiviert werden, um sicherzustellen, dass Verbindungen verschlüsselt sind.
<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" />
Verwenden Sie eine angepasste SSL-Konfiguration. Wenn Sie eine angepasste SSL-Konfiguration verwenden möchten, die beispielsweise für die Angabe eines Truststores verwendet wird, fügen Sie dem MongoDB-Konfigurationselement das Attribut sslRef hinzu. Verwenden Sie das Attribut sslRef, um eine SSL-Konfiguration anzugeben, die in der Datei server.xml konfiguriert werden kann.
<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" />
Verwenden Sie die Zertifikatsauthentifizierung. Wenn Sie die Verwendung der Zertifikatsauthentifizierung mit MongoDB konfigurieren möchten, fügen Sie
useCertificateAuthentication hinzu und entfernen Sie die Angaben
userid und
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 ist nur erforderlich, wenn der Keystore mehrere Schlüssel enthält. Weitere Informationen zur Konfiguration des Keystores und Truststores finden Sie in der MongoDB-Dokumentation.
Nächste Schritte
Stellen Sie sicher, dass der MongoDB-Server ausgeführt wird, und testen Sie dann die
MongoDB-Sicherheit über Ihre Anwendung.