Docs Menu
Docs Home
/
데이터베이스 매뉴얼
/

x.509

MongoDB 클라이언트 인증 및 복제본 세트 및 샤딩된 클러스터 멤버의 내부 인증 위한 X.509 인증서 인증 지원합니다.

x.509 인증서 인증에는 보안 TLS/SSL 연결이 필요합니다.

프로덕션 용도의 경우 MongoDB deployment는 동일한 인증 기관에서 생성하고 서명한 유효한 인증서를 사용해야 합니다. 귀하 또는 귀하의 조직은 독립적인 인증 기관을 생성 및 유지 관리하거나 타사 TLS 공급업체에서 생성한 인증서를 사용할 수 있습니다. 인증서를 얻고 관리하는 것은 이 문서의 범위를 벗어납니다.

서버에 인증하기 위해 클라이언트는 사용자 이름과 비밀번호 대신 X.509 인증서를 사용할 수 있습니다.

클라이언트 인증서 요구 사항:

  • 단일 인증 기관 (CA)이 클라이언트와 서버 모두에 대한 인증서를 발급해야 합니다.

  • 각각의 고유한 MongoDB 사용자는 고유한 인증서를 가지고 있어야 합니다.

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

    참고

  • 클라이언트 인증서에는 다음 필드가 포함되어야 합니다.

    keyUsage = digitalSignature
    extendedKeyUsage = clientAuth
  • 다음 클라이언트 인증서 속성 중 적어도 하나는 net.tls.clusterFilenet.tls.certificateKeyFile 서버 인증서의 속성과 달라야 합니다.

    • 조직 (O)

    • 조직 단위 (OU)

    • 도메인 구성 요소 (DC)

  • 클라이언트 x.509 인증서의 subject는 고유 이름(DN)을 포함하며 이는 멤버 x. 인증서509subject다르게 설정되어야 합니다. MongoDB 배포서버에 tlsX509ClusterAuthDNOverride가 설정된 경우 클라이언트 x.509 인증서 제목은 해당 값과 일치할 수 없습니다.

    중요

    클라이언트 X.509 인증서의 주체가 O OU DC 멤버 X.509 인증서(또는 설정하다 경우 tlsX509ClusterAuthDNOverride)의, 및 속성과 정확히 일치하는 경우 클라이언트 연결이 수락됩니다. , 전체 권한이 부여되고 로그 에 경고 메시지가 나타납니다.

    클러스터 멤버 x509 인증서만이 같은 O, OUDC 속성 조합을 사용해야 합니다.

클라이언트 인증서로 인증하려면 먼저 클라이언트 인증서의 subject$external 데이터베이스에 MongoDB 사용자로 추가해야 합니다. $external 데이터베이스는 사용자의 인증 데이터베이스입니다.

각 고유 X.509 클라이언트 인증서는 MongoDB 사용자 한 명을 위한 것입니다. 단일 클라이언트 인증서를 사용하여 둘 이상의 MongoDB 사용자를 인증할 수 없습니다.

$external 인증 사용자(Kerberos, LDAP 또는 X.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장 을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다.

MongoDB 5.0부터 mongodmongos 이제 인증서에 주체 대체 이름 특성이 포함되지 않은 경우 시작 경고를 발행합니다.

다음 플랫폼은 일반 이름 유효성 검사를 지원하지 않습니다:

  • iOS 13 이상

  • MacOS 10.15 이상

  • Go 1.15 이상

이러한 플랫폼을 사용하는 클라이언트는509 호스트 이름이 CommonName 속성으로 지정된 X.인증서를 사용하는 MongoDB 서버에 인증 하지 않습니다.

샤딩된 클러스터와 복제본 세트의 멤버 간의 내부 인증의 경우 키 파일대신 X.509 인증서를 사용할 수 있습니다.

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

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

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

    참고

    mongod/mongos는 제시된 x.509 인증서가 mongod/mongos 호스트 시스템 시간으로부터 30일 이내에 만료되는 경우 연결 시 경고를 기록합니다.

  • 회원 인증서의 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

복제본 세트 (각 mongod 인스턴스) 또는 샤딩된 클러스터 (각 mongodmongos 인스턴스)의 각 멤버간의 내부 인증을 위해 TLS를 사용할 수 있습니다.

내부 인증에 TLS를 사용하려면 다음 설정을 사용합니다.

중요

--tlsModedisabled 이외의 값으로 설정하면 MongoDB는 내부 복제 세트 연결에서 서버 및 클라이언트 인증 모두에 net.tls.certificateKeyFile에 지정된 인증서를 사용합니다. 이 인증서 설정은 security.clusterAuthModeX.509로 설정했는지 여부와 관계없이 적용됩니다.

mongodmongos 인스턴스는 클라이언트에게 신원을 증명하기 위해 인증서 키 파일을 사용하지만, 인증서 키 파일을 멤버십 인증에도 사용할 수 있습니다. 클러스터 파일을 지정하지 않으면 멤버는 멤버십 인증을 위해 인증서 키 파일을 사용합니다. 인증서 키 파일은 net.tls.certificateKeyFile 또는 --tlsCertificateKeyFile로 지정합니다.

클라이언트 인증과 멤버십 인증 모두에 인증서 키 파일을 사용하려면 인증서는 다음 중 하나여야 합니다.

  • extendedKeyUsage 생략 또는

  • 지정 extendedKeyUsage = serverAuth, clientAuth

돌아가기

클라이언트 인증

이 페이지의 내용