문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

회원 인증에 x.509 인증서 사용

이 페이지의 내용

  • 노드 x.509 인증서
  • 복제본 세트/샤드 클러스터 구성
  • 추가 정보

MongoDB는 보안 TLS/SSL 연결에 사용할 수 있도록 x.509 인증서 인증을 지원합니다. 샤드 클러스터 멤버와 복제본 세트 멤버는 키 파일을 사용하는 대신 x.509 인증서를 사용하여 클러스터 또는 복제본 세트에 대한 멤버십을 확인할 수 있습니다. 멤버십 인증은 내부 프로세스입니다.

참고

MongoDB가 TLS 1 지원을 비활성화합니다. TLS가 1 인 시스템에서 0 암호화.1+를 사용할 수 있습니다.

내부 인증을 사용하도록 설정하면 역할 기반 액세스 제어도 사용할 수 있습니다. 배포 시 연결하고 작업을 수행하려면 클라이언트가 사용자로 인증되어야 합니다.

중요

TLS/SSL, PKI(공개 키 기반 구조) 인증서, 특히 x.509 인증서 및 인증 기관에 대한 자세한 설명은 이 문서에 설명되어있지 않습니다.이 튜토리얼은 유효한 x.509 인증서에 액세스할 수 있고, TLS/SSL에 대한 딕셔너리 지식을 갖고 있다고 가정합니다.

참고

유효한 x.509 인증서가 있어야 합니다.

MongoDB 4.0부터는 다음과 같은 x.509 인증 옵션을 지정할 경우 유효하지 않은 인증서로도 TLS 연결을 설정할 수는 있지만, 인증에는 충분하지 않습니다.

  • --sslAllowInvalidCertificates 또는 net.ssl.allowInvalidCertificates: true(MongoDB 4.0 이상의 경우)

  • --tlsAllowInvalidCertificates 또는 net.tls.allowInvalidCertificates: true(MongoDB 4.2 이상의 경우)

멤버 인증서를 사용하여 샤드 cluster 또는 복제본 세트에 대한 멤버 자격을 확인합니다. 멤버 인증서는 net.tls.clusterFilenet.tls.certificateKeyFile 에 저장됩니다. 회원 인증서 요구 사항:

  • 단일 인증 기관 (CA)은 샤딩된 클러스터 또는 복제본 세트의 멤버에 대해 모든 x.509 인증서를 발급해야 합니다.

  • x.509 인증서는 만료되지 않아야 합니다.

    참고

    mongod / mongos 는 x가 표시되면 연결 시 경고를 기록합니다.509 인증서가 mongod/mongos 호스트 시스템 시간으로부터 30 일 이내에 만료됩니다. x를 참조하세요. 자세한 내용은 509 인증서 만료 임박 trigger 경고 를 참조하세요.

  • 회원 인증서의 subject 에 있는 고유 이름(DN)은 다음 속성 중 하나 이상 에 대해 비어 있지 않은 값을 지정해야 합니다.

    • 조직 (O)

    • 조직 단위 (OU)

    • 도메인 구성 요소 (DC)

  • 멀티 클러스터 배포에서는 각 클러스터가 서로 다른 X.509 멤버 인증서를 사용해야 합니다. 각 인증서는 O, OUDC DN(고유 이름) 필드에 고유한 값을 가져야 합니다.

    두 클러스터에 DN 값이 동일한 인증서가 있는 경우 한 클러스터의 손상된 서버가 다른 클러스터의 구성원으로 인증할 수 있습니다.

  • 각 cluster 멤버 인증서의 net.tls.clusterFilenet.tls.certificateKeyFile 인증서에는 동일한 O , OUDC가 포함되어야 합니다. 이는 설정된 경우 tlsX509ClusterAuthDNOverride 값에도 적용됩니다. 속성 순서는 중요하지 않습니다.

    예를 들어 보겠습니다. 아래의 두 DNOOU 에 대한 사양이 일치하며, DC 는 지정되지 않았습니다.

    CN=host1,OU=Dept1,O=MongoDB,ST=NY,C=US
    C=US, ST=CA, O=MongoDB, OU=Dept1, CN=host2

    다음 예제는 DN가 일치하지 않기 때문에 올바르지 않습니다. 하나의 DN 에는 두 개의 OU 사양이 있고 다른 하나는 하나의 OU 사양만 있습니다.

    CN=host1,OU=Dept1,OU=Sales,O=MongoDB
    CN=host2,OU=Dept1,O=MongoDB
  • 일반 이름(CN) 또는 주체 대체 이름(SAN) 항목 중 하나는 다른 클러스터 멤버의 서버 호스트 이름과 일치해야 합니다. MongoDB 4.2부터 SAN를 비교할 때 MongoDB는 DNS 이름 또는 IP 주소 중 하나를 비교할 수 있습니다. 이전 버전에서는 MongoDB가 DNS 이름만 비교했습니다.

    예를 들어, cluster의 인증서에는 다음과 같은 subject가 있을 수 있습니다.

    subject= CN=<myhostname1>,OU=Dept1,O=MongoDB,ST=NY,C=US
    subject= CN=<myhostname2>,OU=Dept1,O=MongoDB,ST=NY,C=US
    subject= CN=<myhostname3>,OU=Dept1,O=MongoDB,ST=NY,C=US
  • certificateKeyFile로 사용되는 인증서에 extendedKeyUsage이 포함되어 있는 경우 clientAuth ("TLS 웹 클라이언트 인증")와 serverAuth ("TLS 웹 서버 인증")을 모두 포함해야 합니다.

    extendedKeyUsage = clientAuth, serverAuth
  • clusterFile로 사용된 인증서에 extendedKeyUsage가 포함되어 있다면, 그 값은 반드시 clientAuth를 포함해야 합니다.

    extendedKeyUsage = clientAuth

롤링 업그레이드 절차를 제외하고, 복제 세트 또는 샤드 클러스터의 모든 구성 요소는 동일한 --clusterAuthMode 설정을 사용하여 배포의 다른 모든 구성 요소에 안전하게 연결할 수 있도록 해야 합니다.

복제본 세트 배포의 경우 여기에는 복제본 세트의 mongod 멤버가 모두 포함됩니다.

샤드 클러스터 배포의 경우, 여기에는 mongod 또는 mongos 인스턴스가 모두 포함됩니다.

참고

mongod mongos { 2} 및 는 기본적으로 로컬 호스트에 바인딩됩니다. 배포 구성원이 다른 호스트에서 실행되거나 원격 클라이언트를 배포에 연결하려는 경우 --bind_ip 또는 net.bindIp 를 지정해야 합니다.

참고

이 섹션의 절차에서는 tls 설정/옵션을 사용합니다. 더 이상 사용되지 않는 ssl 별칭을 사용하는 절차에 대해서는 명령줄 옵션 사용(ssl)을 참조하세요.

MongoDB가 항상 TLS 1.0 이상을 지원해 왔기에 tls 설정/옵션은 ssl 옵션과 동일한 기능을 제공합니다.

자세한 내용은 TLS/SSL을 위한 mongodmongos 구성을 참조하세요.

참고

이 섹션의 절차에서는 더 이상 사용되지 않는 ssl 설정/옵션을 사용합니다. tls 별칭을 사용하는 절차(MongoDB 4 2이상에서 사용 가능)에 대해서는 명령줄 옵션 사용(tls)을 참조하세요.

MongoDB가 항상 TLS 1.0 이상을 지원해 왔기에 tls 설정/옵션은 ssl 옵션과 동일한 기능을 제공합니다.

자세한 내용은 TLS/SSL을 위한 mongodmongos 구성을 참조하세요.

키파일 내부 인증에서 x.509 내부 인증으로 업그레이드하려면 키파일 인증에서 x.509 인증으로 업그레이드를 참조하십시오.

DN이 다른 인증서와 새 인증서의 롤링 업데이트를 수행하려면 새 DN이 포함된 x.509 클러스터 인증서의 롤링 업데이트를 참조하세요.

← 샤드 클러스터의 키 회전하기