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 서버 간의 연결을 작성하십시오.
Liberty 및 MongoDB 서버 간의 SSL 연결을 작성하려면 ssl-1.0 Liberty 기능을 server.xml 파일에 추가하고 MongoDB 구성 요소에서 sslEnabled="true"를 지정하십시오. 연결이 암호화되었는지 확인하려면 SSL이 MongoDB 서버에서 명시적으로 사용되어야 합니다.
<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 속성을 사용하여 server.xml 파일에서 설정될 수 있는 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