자체 관리형 MongoDB의 멤버십 인증에 x.509 인증서 사용
이 페이지의 내용
MongoDB는 보안 TLS/SSL 연결과 함께 사용할 x.509 인증서 인증을 지원합니다. 샤딩된 클러스터 멤버와 복제본 세트 멤버는 키 파일을 사용하는 대신 x.509 인증서를 사용하여 클러스터 또는 복제본 세트에 대한 멤버십을 확인할 수 있습니다. 멤버십 인증은 내부 프로세스입니다.
참고
MongoDB는 TLS 1.1 이상이 사용 가능한 시스템에서 TLS 1.0 암호화를 지원하지 않습니다.
내부 인증을 활성화하면 자체 관리 배포에서 역할 기반 접근 제어도 활성화됩니다. 클라이언트는 배포에 연결하고 작업을 수행하기 위해 사용자로 인증해야 합니다.
사용자를 배포에 추가하는 방법에 대한 지침은 자체 관리 배포에서 사용자 및 역할 관리 튜토리얼을 참조하세요.
사용자 인증을 위해 x.509 인증서를 사용하는 방법에 대한 지침은 x.509 인증서를 사용하여 자체 관리형 배포에서 클라이언트 인증 튜토리얼을 참조하세요.
중요
TLS/SSL, PKI(공개 키 기반 구조) 인증서, 특히 x.509 인증서 및 인증 기관에 대한 자세한 설명은 이 문서에 설명되어있지 않습니다.이 튜토리얼은 유효한 x.509 인증서에 액세스할 수 있고, TLS/SSL에 대한 딕셔너리 지식을 갖고 있다고 가정합니다.
노드 x.509 인증서
참고
유효한 x.509 인증서가 있어야 합니다.
--tlsAllowInvalidCertificates
또는 net.tls.allowInvalidCertificates: true
를 지정하는 경우 유효하지 않은 인증서는 TLS 연결을 설정하는 데만 충분하지만 인증에는 충분하지 않습니다 .
인증서 요구 사항
샤드 클러스터 또는 복제본 세트(net.tls.clusterFile
, 지정된 경우 및 net.tls.certificateKeyFile
)에 대한 멤버십을 확인하는 데 사용하는 멤버 인증서에는 다음과 같은 속성이 있어야 합니다.
단일 인증 기관(CA)이 모든 x를 발급해야 합니다. 샤드 클러스터 또는 복제본 세트의 멤버에 대한 509 인증서.
회원 인증서의
subject
에 있는 고유 이름(DN
)은 다음 속성 중 하나 이상 에 대해 비어 있지 않은 값을 지정해야 합니다.조직 (
O
)조직 단위 (
OU
)도메인 구성 요소 (
DC
)
조직 속성(
O
), 조직 단위 속성(OU
) 및 도메인 구성 요소(DC
)는net.tls.clusterFile
및net.tls.certificateKeyFile
인증서의 속성과 일치해야 합니다. 다른 클러스터 멤버(또는tlsX509ClusterAuthDNOverride
값(설정된 경우)).일치시키려면 인증서가 이러한 속성의 모든 사양과 일치해야 하며, 심지어 이러한 속성의 비사양도 일치해야 합니다. 속성의 순서는 중요하지 않습니다.
다음 예에서 두
DN
에는O
OU
에 대해 일치하는 사양과DC
속성의 비사양이 포함되어 있습니다.CN=host1,OU=Dept1,O=MongoDB,ST=NY,C=US C=US, ST=CA, O=MongoDB, OU=Dept1, CN=host2 그러나 다음 두 개의
DN
에는OU
사양이 2개 포함되어 있고 다른 하나는 사양이 1개이므로OU
속성에 대한 불일치가 포함되어 있습니다.CN=host1,OU=Dept1,OU=Sales,O=MongoDB CN=host2,OU=Dept1,O=MongoDB 멀티 클러스터 배포에서는 각 클러스터가 서로 다른 X.509 멤버 인증서를 사용해야 합니다. 각 인증서는
O
,OU
및DC
DN(고유 이름) 필드에 고유한 값을 가져야 합니다.두 클러스터에 DN 값이 동일한 인증서가 있는 경우 한 클러스터의 손상된 서버가 다른 클러스터의 구성원으로 인증할 수 있습니다.
일반 이름(
CN
) 또는 주체 대체 이름(SAN
) 항목 중 하나는 다른 클러스터 멤버의 서버 호스트 이름과 일치해야 합니다. MongoDB 4.2부터SAN
를 비교할 때 MongoDB는 DNS 이름 또는 IP 주소 중 하나를 비교할 수 있습니다. 이전 버전에서는 MongoDB가 DNS 이름만 비교했습니다.예를 들어 클러스터의 인증서에는 다음과 같은 주체가 있을 수 있습니다.
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 x.509 인증서는 만료되지 않아야 합니다.
mongod
/mongos
는 제시된 x.509 인증서가mongod/mongos
호스트 시스템 시간으로부터30
일 이내에 만료되는 경우 연결 시 경고를 기록합니다.
복제본 세트/샤딩된 클러스터 구성
롤링 업그레이드 절차를 제외하고, 복제 세트 또는 샤딩된 클러스터의 모든 구성 요소는 동일한 --clusterAuthMode
설정을 사용하여 배포의 다른 모든 구성 요소에 안전하게 연결할 수 있도록 해야 합니다.
복제본 세트 배포의 경우 여기에는 복제본 세트의 mongod
멤버가 모두 포함됩니다.
샤딩된 클러스터 배포의 경우, 여기에는 mongod
또는 mongos
인스턴스가 모두 포함됩니다.
참고
mongod
mongos
{ 2} 및 는 기본적으로 로컬 호스트에 바인딩됩니다. 배포 구성원이 다른 호스트에서 실행되거나 원격 클라이언트를 배포에 연결하려는 경우 --bind_ip
또는 net.bindIp
를 지정해야 합니다.
명령줄 옵션 사용(tls
)
참고
이 섹션의 절차에서는 tls
설정/옵션을 사용합니다. 더 이상 사용되지 않는 ssl
별칭을 사용하는 절차에 대해서는 명령줄 옵션 사용(ssl
)을 참조하세요.
MongoDB가 항상 TLS 1.0 이상을 지원해 왔기에 tls
설정/옵션은 ssl
옵션과 동일한 기능을 제공합니다.
mongod --replSet <name> --tlsMode requireTLS --clusterAuthMode x509 --tlsClusterFile <path to membership certificate and key PEM file> --tlsCertificateKeyFile <path to TLS/SSL certificate and key file> --sslCAFile <path to root CA file> --bind_ip localhost,<hostname(s)|ip address(es)>
중요
--tlsCertificateSelector
또는 --net.tls.certificateSelector
을(를) 사용하지 않는 한, x.509 인증을 사용하려면 반드시 --tlsCAFile
또는 net.tls.CAFile
을(를) 지정해야 합니다.
특정 구성에 필요한 추가 옵션(TLS/SSL 등)을 포함합니다. 다음의 경우:
security: clusterAuthMode: x509 net: tls: mode: requireTLS certificateKeyFile: <path to its TLS/SSL certificate and key file> CAFile: <path to root CA PEM file to verify received certificate> clusterFile: <path to its certificate key file for membership authentication> bindIp: localhost,<hostname(s)|ip address(es)>
중요
--tlsCertificateSelector
또는 --net.tls.certificateSelector
을(를) 사용하지 않는 한, x.509 인증을 사용하려면 반드시 --tlsCAFile
또는 net.tls.CAFile
을(를) 지정해야 합니다.
특정 구성에 필요한 추가 옵션(TLS/SSL 등)을 포함합니다.
자세한 내용은 TLS/SSL을 위한 mongod
및 mongos
구성을 참조하세요.
명령줄 옵션 사용(ssl
)
참고
이 섹션의 절차에서는 더 이상 사용되지 않는 ssl
설정/옵션을 사용합니다. tls
별칭을 사용하는 절차에 대해서는 명령줄 옵션 사용(tls
)을 참조하세요.
MongoDB가 항상 TLS 1.0 이상을 지원해 왔기에 tls
설정/옵션은 ssl
옵션과 동일한 기능을 제공합니다.
내부 클러스터 멤버 인증을 위한 x.509 인증서를 지정하려면 복제 세트의 멤버에 대한 다음 예시에서와 같이 추가 TLS/SSL 옵션 --clusterAuthMode
및 --sslClusterFile
을 추가합니다.
mongod --replSet <name> --sslMode requireSSL --clusterAuthMode x509 --sslClusterFile <path to membership certificate and key PEM file> --sslPEMKeyFile <path to TLS/SSL certificate and key PEM file> --sslCAFile <path to root CA PEM file> --bind_ip localhost,<hostname(s)|ip address(es)>
중요
--tlsCertificateSelector
또는 --net.tls.certificateSelector
을(를) 사용하지 않는 한, x.509 인증을 사용하려면 반드시 --tlsCAFile
또는 net.tls.CAFile
을(를) 지정해야 합니다.
특정 구성에 필요한 추가 옵션(TLS/SSL 등)을 포함합니다.
security: clusterAuthMode: x509 net: ssl: mode: requireSSL PEMKeyFile: <path to TLS/SSL certificate and key PEM file> CAFile: <path to root CA PEM file> clusterFile: <path to x.509 membership certificate and key PEM file> bindIp: localhost,<hostname(s)|ip address(es)>
중요
--tlsCertificateSelector
또는 --net.tls.certificateSelector
을(를) 사용하지 않는 한, x.509 인증을 사용하려면 반드시 --tlsCAFile
또는 net.tls.CAFile
을(를) 지정해야 합니다.
특정 구성에 필요한 추가 옵션(TLS/SSL 등)을 포함합니다.
자세한 내용은 TLS/SSL을 위한 mongod
및 mongos
구성을 참조하세요.
추가 정보
키 파일 내부 인증 에서 x로 업그레이드 합니다.509 내부 인증, 키 파일 인증에서 자체 관리형 MongoDB 를 x로 업그레이드를 참조하세요.509 인증.
서버 인증서를 서로 다른 DN
을 가진 새로운 인증서로 롤링 업데이트하려면 자체 관리 클러스터에서 새로운 DN이 포함된 x.509 인증서의 롤링 업데이트를 참조하세요.