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

x.509

이 페이지의 내용

  • 인증 기관
  • 클라이언트 X.509 인증서
  • 멤버 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)

    참고

    스타트업 중에 enforceUserClusterSeparation 매개 변수를 비활성화하여 O/OU/DC 검사를 자동으로 비활성화할 수도 있습니다. 이렇게 하면 멤버 인증서가 $external 데이터베이스 에 저장된 사용자로 인증할 수 있습니다.

  • 클라이언트 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 인증서를 사용할 수 있습니다.

TLS가 활성화된 경우, 멤버 인증서를 사용하여 샤딩된 클러스터 또는 복제본 세트 의 내부 연결에 대한 멤버십을 확인합니다. 및 옵션을 사용하여 멤버 인증서 파일 경로를 구성할 수 있습니다. 멤버에게는 다음과 같은 구성 요구 사항이 net.tls.clusterFile net.tls.certificateKeyFile 있습니다.

  • 클러스터 멤버 구성은 인증에 사용되는 속성 중 하나 이상에 대해 비어 있지 않은 값을 지정해야 합니다. 기본적으로 MongoDB는 다음을 허용합니다.

    • 조직 (O)

    • 조직 단위 (OU)

    • 도메인 구성 요소 (DC)

    net.tls.clusterAuthX509.extensionValue를 설정하여 인증에 사용할 대체 속성을 지정할 수 있습니다.

  • 클러스터 멤버 구성에는 동일한 net.tls.clusterAuthX509.attributes이 포함되어야 하며 일치하는 값을 사용해야 합니다. 속성 순서는 중요하지 않습니다. 다음 예에서는 OOU 설정하지만 DC는 설정하지 않습니다.

    net:
    tls:
    clusterAuthX509:
    attributes: O=MongoDB, OU=MongoDB Server

참고

enforceUserClusterSeparation 매개변수를 비활성화하면 다음 동작이 적용됩니다.

  • 구성 파일에서 clusterAuthModekeyFile 인 경우 O/OU/DC 검사가 비활성화됩니다. 이를 통해 멤버 인증서를 보유한 클라이언트는 $external 데이터베이스에 저장된 사용자로 인증할 수 있습니다.

  • 구성 파일 에 clusterAuthMode 이(가) keyFile 이(가) 아닌 경우 서버 가 시작되지 않습니다.

enforceUserClusterSeparation 매개 변수를 false 로 설정하면 서버는 애플리케이션이 인증에 사용하는 클라이언트 인증서와 액세스 권한이 있는 클러스터 내 인증서를 구분하지 않습니다. clusterAuthModekeyFile 인 경우에는 효과가 없습니다. 그러나 clusterAuthMode 이(가) x509 인 경우 허용된 체계를 사용하는 사용자 인증서는 클러스터 인증서와 병합되어 권한 있는 액세스 권한이 부여됩니다.

다음을 수행하면 기존 인증서에 내부 권한이 부여됩니다.

  1. 이 매개변수에서 허용하는 이름으로 사용자를 생성합니다.

  2. enforceUserClusterSeparation 매개 변수를 false 로 설정합니다.

  3. clusterAuthModex509로 설정합니다.

enforceUserClusterSeparation 플래그에서 생성할 수 있는 상승된 권한을 가진 사용자를 제거했는지 확인하지 않고는 keyFile 에서 x509 으)로 업그레이드해서는 안 됩니다.

enforceUserClusterSeparation 매개변수를 false 로 설정하려면 시작 중에 다음 명령을 실행합니다.

mongod --setParameter enforceUserClusterSeparation=false

인증서에는 다음과 같은 요구 사항이 있습니다.

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

  • Subject Alternative Name (SAN) 항목 중 하나 이상은 다른 클러스터 멤버가 사용하는 서버 호스트 이름과 일치해야 합니다. SAN을 비교할 때 MongoDB는 DNS 이름 또는 IP 주소 중 하나를 비교할 수 있습니다.

    subjectAltName 을 지정하지 않으면 MongoDB는 대신 CN(일반 이름)을 비교합니다. 그러나 이러한 CN 사용은 RFC 에 따라 더 이상 사용되지 않습니다.2818

  • 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

돌아가기

클라이언트 인증