이 튜토리얼에서는 mongosh 를 TLS지원 자체 관리 복제본 세트 에 연결하는 방법을 보여줍니다.
시작하기 전에
시작하기 전에 다음 항목이 있는지 확인하세요.
자체 관리배포서버에서 TLS 구성의 단계를 사용하여 TLS를 사용하도록 구성한 복제본 세트 입니다.
배포서버 에서 MongoDB 액세스 제어가 활성화되고 관리 사용자가 한 명 이상 생성되었습니다. 액세스 제어를 설정하다 하려면 자체 관리 배포서버에서 액세스 제어 활성화를 참조하세요. 이 사용자는
clusterMonitor권한이 있어야 합니다.X.509 인증 사용하여 배포서버 에 연결하려면 클라이언트 인증서를 생성할 수 있도록 OpenSSL이 설치되어 있어야 합니다.
단계
상호 TLS 또는 X.509 클라이언트 인증 사용하지 않으려면 이 절차를 따르세요. 서버 구성에서 를 로 allowConnectionsWithoutCertificates 설정하다 true 클라이언트가 인증서를 제시하지 않고 연결하고 대신 SCRAM 으로 인증할 수 있습니다.
다음을 사용하여 배포서버 에 연결합니다. mongosh
다음 옵션을 사용하여 mongosh 를 복제본 세트 에 연결합니다.
mongosh "mongodb://mongo0.example.com:27017,mongo1.example.com:27017,mongo2.example.com:27017" \ --tls --tlsCAFile /etc/ssl/mongodb/ca.pem
--tls연결에 대해 TLS 암호화 활성화합니다.--tlsCAFile가 서버 인증서에 서명한 CA 인증서로mongosh설정하다 되어 가 서버의 인증서를 확인할 수 있습니다.
클라이언트 인증서 없이 연결하면 TLS로 암호화된 세션이 설정되지만 인증되지는 않습니다. 대부분의 명령을 실행 하려면 SCRAM 과 같은 메커니즘으로 인증해야 합니다.
사용자 인증
db.auth() 메서드를 사용하여 관리자 사용자 이름 과 비밀번호로 인증합니다.
배포서버 에 연결할 때 상호 TLS 및 X.509 클라이언트 인증 사용하려는 경우 이 절차에 따라 클라이언트 인증서를 만들고 인증합니다.
클라이언트 인증서 생성
경고
서버 노드와 동일한 인증서를 사용하지 마세요. 서버 509 인증서가 클라이언트 인증 에 유효하더라도 X. 인증 에 대한 새 클라이언트 인증서를 생성해야 합니다.
TLS 서버 인증서 받기에 설명된 프로세스 사용하여 클라이언트 인증서를 생성합니다. 다음과 같이 조정합니다.
구성 파일 에서
serverAuth대신extendedKeyUsage = clientAuth를 설정하다 .노드 클라이언트 인증 인증서에 서명한 CA는 클라이언트 인증서에도 서명해야 합니다. 일반적으로
ca.pem입니다. 그러나 클라이언트 인증 위해 별도의 인증서를 얻은 경우 클라이언트 인증서에 대해 다른 CA를 가질 수 있습니다.인증서 튜토리얼에 사용된 노드별 이름 대신 출력 파일의 이름을
client.key,client.crt,client.pem로 지정합니다.
프로세스 완료한 후 mongosh를 실행 머신의 안전한 위치 에 client.pem 를 복사합니다.
cp client.pem /etc/ssl/mongodb/client.pem
클라이언트 주체 식별
클라이언트 인증서의 주체를 식별합니다. 연결 후 예상 클라이언트 인증서로 인증했는지 확인하려면 이 값이 필요합니다.
제목을 보려면 다음 명령을 실행 .
openssl x509 -in /etc/ssl/mongodb/client.pem -noout -subject
다음과 유사한 출력을 기록해 둡니다.
subject=C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser
이 튜토리얼의 뒷부분에서 사용할 수 있도록 주체 이름을 저장합니다. 이 예시 에서 주체 이름은 C=US, ST=New-York, L=New York City, O=MongoDB,
CN=myUser입니다.
클라이언트 인증서를 사용하여 배포서버 서버에 연결
다음 옵션을 사용하여 mongosh 를 복제본 세트 에 연결합니다.
mongosh "mongodb://mongo0.example.com:27017,mongo1.example.com:27017,mongo2.example.com:27017" \ --tls \ --tlsCAFile /etc/ssl/mongodb/ca.pem \ --tlsCertificateKeyFile /etc/ssl/mongodb/client.pem
--tls연결에 대해 TLS 암호화 활성화합니다.--tlsCAFile가 서버 인증서에 서명한 CA 인증서로mongosh설정하다 가 서버 연결을 확인할 수 있습니다.--tlsCertificateKeyFile서버 X와의 연결을 인증하는 데 사용하는 클라이언트 인증서와 비공개 키를 제공합니다.509
이렇게 하면 TLS를 통해 MongoDB deployment 에 연결됩니다.
관리자로 인증하기
db.auth() 메서드를 사용하여 관리자 사용자 이름 과 비밀번호로 인증합니다.
데이터베이스 에 $external 사용자 만들기
메서드를 사용하여 클라이언트 인증서의 주체 이름에 해당하는 데이터베이스 $external db.createUser() 에 사용자를 만듭니다. 사용자 이름 이전에 식별한 클라이언트 인증서의 주체로 바꿉니다.
db.getSiblingDB("$external").runCommand({ createUser: "C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser", roles: [ { role: "readWriteAnyDatabase", db: "admin" } ] })
사용자를 생성한 후 db.auth() $external 메서드를 사용하여 X를 사용하여 데이터베이스 에509 인증합니다.:
db.getSiblingDB("$external").auth({ mechanism: "MONGODB-X509", user: "C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser" })
최종 결과
이 튜토리얼을 완료하면 mongosh 가 SCRAM 또는 X로 인증된 암호화됨 TLS 연결을 통해 복제본 세트 에 연결됩니다.509