MongoDB는 보안 TLS/SSL 연결과 함께 사용할 x.509 인증서 인증을 지원합니다. 샤딩된 클러스터 멤버와 복제본 세트 멤버는 키 파일을 사용하는 대신 x.509 인증서를 사용하여 클러스터 또는 복제본 세트에 대한 멤버십을 확인할 수 있습니다. 멤버십 인증은 내부 프로세스입니다.
참고
MongoDB TLS 1.2+를 사용할 수 있는 시스템에서 TLS 1.0 및 TLS 1.1 암호화 에 대한 지원 비활성화합니다.
내부 인증을 활성화하면 자체 관리 배포에서 역할 기반 접근 제어도 활성화됩니다. 클라이언트는 배포에 연결하고 작업을 수행하기 위해 사용자로 인증해야 합니다.
사용자를 배포에 추가하는 방법에 대한 지침은 자체 관리 배포에서 사용자 및 역할 관리 튜토리얼을 참조하세요.
사용자 인증 에 X. 인증서를 사용하는 방법에 대한 지침은 X. 를 사용하여 자체 관리형 MongoDB 에서509 509 클라이언트 인증 튜토리얼을 참조하세요.
중요
TLS/SSL, PKI(공개 키 인프라) 인증서, 특히 X.509 인증서 및 인증 기관에 대한 전체 설명은 이 문서 의 범위를 벗어납니다. 이 튜토리얼에서는 TLS/SSL에 대한 사전 지식이 있고 유효한 X.509 인증서에 액세스 가정합니다.
멤버 X.509 인증서
참고
유효한 X.509 인증서가 있어야 합니다.
--tlsAllowInvalidCertificates 또는 net.tls.allowInvalidCertificates: true 를 지정하는 경우 유효하지 않은 인증서는 TLS 연결을 설정하는 데만 충분하지만 인증에는 충분하지 않습니다 .
인증서 요구 사항
TLS가 활성화되면, 멤버 인증서를 사용하여 샤딩된 클러스터 또는 복제본 세트의 내부 연결에 대한 멤버 자격을 확인합니다. 멤버 인증서 파일 경로는 net.tls.clusterFile 및 net.tls.certificateKeyFile 옵션을 사용하여 구성할 수 있습니다. 멤버에게는 다음과 같은 구성 요구 사항이 있습니다.
클러스터 멤버 구성은 인증에 사용되는 속성 중 하나 이상에 대해 비어 있지 않은 값을 지정해야 합니다. 기본적으로 MongoDB는 다음을 허용합니다.
조직 (
O)조직 단위 (
OU)도메인 구성 요소 (
DC)
MongoDB 모든 멤버 인증서에서 항목이 정확히 일치하는지 확인합니다. 여러
OU값을 나열하는 경우 모든 인증서는 동일한 목록을 사용해야 합니다.net.tls.clusterAuthX509.extensionValue를 설정하여 인증에 사용할 대체 속성을 지정할 수 있습니다.클러스터 멤버 구성에는 동일한
net.tls.clusterAuthX509.attributes이 포함되어야 하며 일치하는 값을 사용해야 합니다. 속성 순서는 중요하지 않습니다. 다음 예에서는O과OU설정하지만DC는 설정하지 않습니다.net: tls: clusterAuthX509: attributes: O=MongoDB, OU=MongoDB Server
참고
enforceUserClusterSeparation 매개변수를 false로 설정하면 다음 동작이 적용됩니다.
X.509 를 허용하는 옵션으로
clusterAuthMode를 설정하다 수 없으며, 그렇지 않으면 서버 시작되지 않습니다. 서버clusterAuthMode가keyFile인 경우에만 시작됩니다.클라이언트
$external데이터베이스 에서 클러스터 멤버십에 대해 서버의 구성된 속성과O/OU/DC속성이 일치하는 사용자를 만들 수 있습니다.멤버 인증서를 제시하는 클라이언트 이제 데이터베이스 의 사용자로 MONGODB-X509 인증 시도할 수
$external있습니다.
enforceUserClusterSeparation 매개변수를 false 로 설정하려면 시작 중에 다음 명령을 실행합니다.
mongod --setParameter enforceUserClusterSeparation=false
인증서에는 다음과 같은 요구 사항이 있습니다.
단일 인증 기관(CA)은 샤딩된 클러스터 또는 복제본 세트 의 멤버에 대해 모든 X.509 인증서를 발급해야 합니다.
Subject Alternative Name (
SAN) 항목 중 하나 이상은 다른 클러스터 멤버가 사용하는 서버 호스트 이름과 일치해야 합니다.SAN을 비교할 때 MongoDB는 DNS 이름 또는 IP 주소 중 하나를 비교할 수 있습니다.subjectAltName를 지정하지 않으면 MongoDB 대신 CN(일반 이름)을 비교합니다. 그러나 이러한 CN 사용은 RFC2818에 따라 더 이상 사용되지 않습니다.
키 사용 및 확장 키 사용은 인증서와 연결된 키의 사용을 엄격하게 정의하고 제한하는 X.509 확장입니다. 이 확장은 모두 선택 사항입니다. tlsCertificateKeyFile 또는 tlsClusterFile 가 이러한 확장자가 생략된 인증서를 점 경우 인증서 사용에 제한이 적용 않습니다.
tlsCertificateKeyFile 또는 tlsClusterFile 에 사용되는 X.509 인증서에 확장 키 사용(EKU) 확장자가 포함된 경우 다음 규칙을 준수해야 합니다.
tlsCertificateKeyFileEKU에serverAuth를 포함해야 합니다.extendedKeyUsage = serverAuth tlsClusterFileEKU에clientAuth을 포함해야 합니다.extendedKeyUsage = clientAuth tlsClusterFile이 생략되고tlsCertificateKeyFile만 구성된 경우tlsCertificateKeyFile는 EKU에serverAuth및clientAuth를 모두 포함해야 합니다.extendedKeyUsage = clientAuth, serverAuth
tlsCertificateKeyFile 또는 tlsClusterFile 에 사용된 X.509 인증서에 키 사용(KU) 확장자가 포함된 경우 다음과 같이 설정하다 .
tlsCertificateKeyFileKU 확장자에digitalSignature,keyEncipherment및keyAgreement를 포함해야 합니다.keyUsage = digitalSignature, keyEncipherment, keyAgreement tlsClusterFileKU 확장자에digitalSignature를 포함해야 합니다.keyUsage = digitalSignature
복제본 세트/샤딩된 클러스터 구성
롤링 업그레이드 절차를 제외하고, 복제 세트 또는 샤딩된 클러스터의 모든 구성 요소는 동일한 --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> --tlsCAFile <path to root CA file> --bind_ip localhost,<hostname(s)|ip address(es)>
중요
X.509 인증 사용하려면 --tlsCertificateSelector 또는 --net.tls.certificateSelector를 사용하지 않는 한 --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)>
중요
X.509 인증 사용하려면 --tlsCertificateSelector 또는 --net.tls.certificateSelector를 사용하지 않는 한 --tlsCAFile 또는 net.tls.CAFile 를 지정해야 합니다.
특정 구성에 필요한 추가 옵션(TLS/SSL 등)을 포함합니다.
자세한 내용은 자체 관리형 배포에서 TLS/SSL을 위한 MongoDB 인스턴스 구성을 참조하세요.
명령줄 옵션 사용(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)>
중요
X.509 인증 사용하려면 --tlsCertificateSelector 또는 --net.tls.certificateSelector를 사용하지 않는 한 --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)>
중요
X.509 인증 사용하려면 --tlsCertificateSelector 또는 --net.tls.certificateSelector를 사용하지 않는 한 --tlsCAFile 또는 net.tls.CAFile 를 지정해야 합니다.
특정 구성에 필요한 추가 옵션(TLS/SSL 등)을 포함합니다.
자세한 내용은 자체 관리형 배포에서 TLS/SSL을 위한 MongoDB 인스턴스 구성을 참조하세요.
추가 정보
키 파일 내부 인증 에서 X.509 내부 인증 으로 업그레이드 하려면 키 파일 인증에서 X.509 인증으로 업그레이드를 참조하세요.
다른 DN가 있는 새 인증서로 인증서를 롤링 업데이트 하려면 clusterAuthX가 없는 자체 관리형 클러스터에서 인증서 교체509를 참조하세요.