Docs Menu
Docs Home
/ /
/ / /

TLS 지원 복제본 세트에 연결

이 튜토리얼에서는 mongoshTLS지원 자체 관리 복제본 세트 에 연결하는 방법을 보여줍니다.

시작하기 전에 다음 항목이 있는지 확인하세요.

  • 자체 관리배포서버에서 TLS 구성의 단계를 사용하여 TLS를 사용하도록 구성한 복제본 세트 입니다.

  • 배포서버 에서 MongoDB 액세스 제어가 활성화되고 관리 사용자가 한 명 이상 생성되었습니다. 액세스 제어를 설정하다 하려면 자체 관리 배포서버에서 액세스 제어 활성화를 참조하세요. 이 사용자는 clusterMonitor 권한이 있어야 합니다.

  • X.509 인증 사용하여 배포서버 에 연결하려면 클라이언트 인증서를 생성할 수 있도록 OpenSSL이 설치되어 있어야 합니다.

  • mongosh에 액세스합니다.

상호 TLS 또는 X.509 클라이언트 인증 사용하지 않으려면 이 절차를 따르세요. 서버 구성에서 를 로 allowConnectionsWithoutCertificates 설정하다 true 클라이언트가 인증서를 제시하지 않고 연결하고 대신 SCRAM 으로 인증할 수 있습니다.

1

다음 옵션을 사용하여 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 과 같은 메커니즘으로 인증해야 합니다.

2

db.auth() 메서드를 사용하여 관리자 사용자 이름 과 비밀번호로 인증합니다.

3

다음을 실행하여 인증 상태 확인합니다.

db.adminCommand({ connectionStatus: 1 })

authInfo.authenticatedUsers 에 예상 사용자가 포함되어 있는지 확인합니다.

배포서버 에 연결할 때 상호 TLS 및 X.509 클라이언트 인증 사용하려는 경우 이 절차에 따라 클라이언트 인증서를 만들고 인증합니다.

1

경고

서버 노드와 동일한 인증서를 사용하지 마세요. 서버 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
2

클라이언트 인증서의 주체를 식별합니다. 연결 후 예상 클라이언트 인증서로 인증했는지 확인하려면 이 값이 필요합니다.

제목을 보려면 다음 명령을 실행 .

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입니다.

3

다음 옵션을 사용하여 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 에 연결됩니다.

4

db.auth() 메서드를 사용하여 관리자 사용자 이름 과 비밀번호로 인증합니다.

5

메서드를 사용하여 클라이언트 인증서의 주체 이름에 해당하는 데이터베이스 $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"
})
6

다음을 실행하여 인증 상태 확인합니다.

db.adminCommand({ connectionStatus: 1 })

authInfo.authenticatedUsers 에 예상 사용자가 포함되어 있는지 확인합니다.

이 튜토리얼을 완료하면 mongosh 가 SCRAM 또는 X로 인증된 암호화됨 TLS 연결을 통해 복제본 세트 에 연결됩니다.509

돌아가기

배포서버에서 구성

이 페이지의 내용