x.509
이 페이지의 내용
MongoDB 클라이언트 인증 및 복제본 세트 및 샤딩된 클러스터 멤버의 내부 인증 위한 X.509 인증서 인증 지원합니다.
x.509 인증서 인증에는 보안 TLS/SSL 연결이 필요합니다.
인증 기관
프로덕션 용도의 경우 MongoDB deployment는 동일한 인증 기관에서 생성하고 서명한 유효한 인증서를 사용해야 합니다. 귀하 또는 귀하의 조직은 독립적인 인증 기관을 생성 및 유지 관리하거나 타사 TLS 공급업체에서 생성한 인증서를 사용할 수 있습니다. 인증서를 얻고 관리하는 것은 이 문서의 범위를 벗어납니다.
클라이언트 X.509 인증서
서버에 인증하기 위해 클라이언트는 사용자 이름과 비밀번호 대신 X.509 인증서를 사용할 수 있습니다.
클라이언트 인증서 요구 사항
클라이언트 인증서 요구 사항:
단일 인증 기관 (CA)이 클라이언트와 서버 모두에 대한 인증서를 발급해야 합니다.
각각의 고유한 MongoDB 사용자는 고유한 인증서를 가지고 있어야 합니다.
X.509 인증서는 만료되지 않아야 합니다.
클라이언트 인증서에는 다음 필드가 포함되어야 합니다.
keyUsage = digitalSignature extendedKeyUsage = clientAuth 다음 클라이언트 인증서 속성 중 적어도 하나는
net.tls.clusterFile
및net.tls.certificateKeyFile
서버 인증서의 속성과 달라야 합니다.조직 (
O
)조직 단위 (
OU
)도메인 구성 요소 (
DC
)
참고
스타트업 중에
enforceUserClusterSeparation
매개 변수를 비활성화하여O/OU/DC
검사를 자동으로 비활성화할 수도 있습니다. 이렇게 하면 멤버 인증서가$external
데이터베이스 에 저장된 사용자로 인증할 수 있습니다.클라이언트 x.509 인증서의
subject
는 고유 이름(DN
)을 포함하며 이는 멤버 x. 인증서509의subject
와 다르게 설정되어야 합니다. MongoDB 배포서버에tlsX509ClusterAuthDNOverride
가 설정된 경우 클라이언트 x.509 인증서 제목은 해당 값과 일치할 수 없습니다.중요
클라이언트 X.509 인증서의 주체가
O
OU
DC
멤버 X.509 인증서(또는 설정하다 경우tlsX509ClusterAuthDNOverride
)의, 및 속성과 정확히 일치하는 경우 클라이언트 연결이 수락됩니다. , 전체 권한이 부여되고 로그 에 경고 메시지가 나타납니다.클러스터 멤버 x509 인증서만이 같은
O
,OU
및DC
속성 조합을 사용해야 합니다.
MongoDB 사용자 및 $external
데이터베이스
클라이언트 인증서로 인증하려면 먼저 클라이언트 인증서의 subject
를 $external
데이터베이스에 MongoDB 사용자로 추가해야 합니다. $external
데이터베이스는 사용자의 인증 데이터베이스입니다.
각 고유 X.509 클라이언트 인증서는 MongoDB 사용자 한 명을 위한 것입니다. 단일 클라이언트 인증서를 사용하여 둘 이상의 MongoDB 사용자를 인증할 수 없습니다.
$external
인증 사용자(Kerberos, LDAP 또는 X.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장 을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다.
TLS 연결 X509 인증서 시작 경고
MongoDB 5.0부터 mongod
및 mongos
는 이제 인증서에 주체 대체 이름 특성이 포함되지 않은 경우 시작 경고를 발행합니다.
다음 플랫폼은 일반 이름 유효성 검사를 지원하지 않습니다:
iOS 13 이상
MacOS 10.15 이상
Go 1.15 이상
이러한 플랫폼을 사용하는 클라이언트는509 호스트 이름이 CommonName 속성으로 지정된 X.인증서를 사용하는 MongoDB 서버에 인증 하지 않습니다.
멤버 X.509 인증서
샤딩된 클러스터와 복제본 세트의 멤버 간의 내부 인증의 경우 키 파일대신 X.509 인증서를 사용할 수 있습니다.
멤버 인증서 요구 사항
TLS가 활성화된 경우, 멤버 인증서를 사용하여 샤딩된 클러스터 또는 복제본 세트 의 내부 연결에 대한 멤버십을 확인합니다. 및 옵션을 사용하여 멤버 인증서 파일 경로를 구성할 수 있습니다. 멤버에게는 다음과 같은 구성 요구 사항이 net.tls.clusterFile
net.tls.certificateKeyFile
있습니다.
클러스터 멤버 구성은 인증에 사용되는 속성 중 하나 이상에 대해 비어 있지 않은 값을 지정해야 합니다. 기본적으로 MongoDB는 다음을 허용합니다.
조직 (
O
)조직 단위 (
OU
)도메인 구성 요소 (
DC
)
net.tls.clusterAuthX509.extensionValue
를 설정하여 인증에 사용할 대체 속성을 지정할 수 있습니다.클러스터 멤버 구성에는 동일한
net.tls.clusterAuthX509.attributes
이 포함되어야 하며 일치하는 값을 사용해야 합니다. 속성 순서는 중요하지 않습니다. 다음 예에서는O
과OU
설정하지만DC
는 설정하지 않습니다.net: tls: clusterAuthX509: attributes: O=MongoDB, OU=MongoDB Server
참고
enforceUserClusterSeparation
매개변수를 비활성화하면 다음 동작이 적용됩니다.
구성 파일에서
clusterAuthMode
이keyFile
인 경우O/OU/DC
검사가 비활성화됩니다. 이를 통해 멤버 인증서를 보유한 클라이언트는$external
데이터베이스에 저장된 사용자로 인증할 수 있습니다.구성 파일 에
clusterAuthMode
이(가)keyFile
이(가) 아닌 경우 서버 가 시작되지 않습니다.
enforceUserClusterSeparation
매개 변수를 false
로 설정하면 서버는 애플리케이션이 인증에 사용하는 클라이언트 인증서와 액세스 권한이 있는 클러스터 내 인증서를 구분하지 않습니다. clusterAuthMode
이 keyFile
인 경우에는 효과가 없습니다. 그러나 clusterAuthMode
이(가) x509
인 경우 허용된 체계를 사용하는 사용자 인증서는 클러스터 인증서와 병합되어 권한 있는 액세스 권한이 부여됩니다.
다음을 수행하면 기존 인증서에 내부 권한이 부여됩니다.
이 매개변수에서 허용하는 이름으로 사용자를 생성합니다.
enforceUserClusterSeparation
매개 변수를false
로 설정합니다.clusterAuthMode
을x509
로 설정합니다.
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 에 따라 더 이상 사용되지 않습니다.2818certificateKeyFile
로 사용되는 인증서에extendedKeyUsage
이 포함되어 있는 경우clientAuth
("TLS 웹 클라이언트 인증")와serverAuth
("TLS 웹 서버 인증")을 모두 포함해야 합니다.extendedKeyUsage = clientAuth, serverAuth clusterFile
로 사용된 인증서에extendedKeyUsage
가 포함되어 있다면, 그 값은 반드시clientAuth
를 포함해야 합니다.extendedKeyUsage = clientAuth
멤버십 인증을 위한 MongoDB 구성
복제본 세트 (각 mongod
인스턴스) 또는 샤딩된 클러스터 (각 mongod
및 mongos
인스턴스)의 각 멤버간의 내부 인증을 위해 TLS를 사용할 수 있습니다.
내부 인증에 TLS를 사용하려면 다음 설정을 사용합니다.
중요
--tlsMode
를 disabled
이외의 값으로 설정하다 MongoDB 내부 복제본 세트 연결에서 서버 및 클라이언트 인증 모두에 net.tls.certificateKeyFile
에 지정된 인증서를 사용합니다. 이 인증서 설정은 security.clusterAuthMode
를 X.509
로 설정하다 여부에 관계없이 적용됩니다.
mongod
및 mongos
인스턴스는 클라이언트에게 신원을 증명하기 위해 인증서 키 파일을 사용하지만, 인증서 키 파일을 멤버십 인증에도 사용할 수 있습니다. 클러스터 파일을 지정하지 않으면 멤버는 멤버십 인증을 위해 인증서 키 파일을 사용합니다. 인증서 키 파일은 net.tls.certificateKeyFile
또는 --tlsCertificateKeyFile
로 지정합니다.
클라이언트 인증과 멤버십 인증 모두에 인증서 키 파일을 사용하려면 인증서는 다음 중 하나여야 합니다.
extendedKeyUsage
생략 또는지정
extendedKeyUsage = serverAuth, clientAuth