복제본 세트 와 샤딩된 클러스터 의 멤버가 서로 인증하도록 요구할 수 있습니다. 멤버의 내부 인증 위해 MongoDB 키파일 또는 X.509 인증서를 사용할 수 있습니다.
선택한 메서드는 모든 내부 커뮤니케이션에 사용됩니다. 예를 들어 클라이언트가 지원되는 인증 메커니즘 중 하나를 사용하여 mongos에 인증하면 mongos는 구성된 내부 인증 메서드를 사용하여 필요한 mongod 프로세스에 연결합니다.
참고
내부 인증을 활성화하면 클라이언트 권한 부여도 활성화됩니다.
키파일
키파일은 멤버의 공유 비밀번호가 포함된 SCRAM 과제 및 응답 인증 메커니즘을 사용합니다.
주요 요구 사항
키 길이는 6~1024자 사이여야 하며 base64 세트의 문자만 포함할 수 있습니다. MongoDB는 크로스 플랫폼 편의를 위해 공백 문자를 제거합니다(예: x0d, x09 및 x20). 결과적으로 다음 작업은 동일한 키를 생성합니다.
echo -e "mysecretkey" > key1 echo -e "my secret key" > key1 echo -e "my secret key\n" > key2 echo -e "my secret key" > key3 echo -e "my\r\nsecret\r\nkey\r\n" > key4
키파일 형식
내부 멤버십 인증을 위한 키파일은 YAML 형식을 사용하여 키파일에 여러 키를 허용합니다. YAML 형식은 두 가지 모두 허용됩니다.
단일 키 문자열(이전 버전과 동일)
키 문자열의 순서
YAML 형식은 텍스트 파일 형식을 사용하는 기존의 단일 키 키파일과 호환됩니다.
예를 들면 다음과 같습니다.
키 파일에 단일 키가 포함된 경우 따옴표를 사용하거나 사용하지 않고 키 문자열을 지정할 수 있습니다.
my old secret key1
여러 키 문자열 [1]을 일련의 키 문자열로 지정할 수 있습니다(선택적으로 따옴표로 묶음).
- my old secret key1 - my new secret key2
파일 에 여러 키를 지정할 기능 을 사용하면 다운타임 없이 키를 롤링 업그레이드 할 수 있습니다. 자체 관리형 복제본 세트 의 키 순환 및 자체 관리형 샤드 클러스터의 키 순환을 참조하세요.
배포의 모든 mongod 및 mongos 인스턴스는 하나 이상의 공통 키를 공유해야 합니다.
UNIX 시스템에서는 키 파일에 그룹 또는 월드 권한이 없어야 합니다. Windows 시스템에서는 키 파일 권한이 확인되지 않습니다.
복제본 세트 또는 샤딩된 클러스터의 멤버를 호스팅하는 각 서버에 키파일을 저장해야 합니다.
| [1] | MongoDB의 암호화된 스토리지 엔진의 경우 로컬 키 관리에 사용되는 키파일에는 하나의 키만 포함할 수 있습니다. |
키파일에 대한 MongoDB 구성
키파일을 지정하려면 security.keyFile 설정 또는 --keyFile 명령줄 옵션을 사용합니다.
키 파일 내부 인증 의 예시 는 자체 관리 복제본 세트를 키 파일 인증으로 업데이트하기를 참조하세요.
X.509
복제본 세트 또는 샤딩된 클러스터 의 멤버는 내부 인증 에 키 파일을 사용하는 대신 X.509 인증서를 사용할 수 있습니다. 이는 상호 TLS 또는 mTLS라고도 합니다. MongoDB 보안 TLS/SSL 연결에 사용할 수 있도록 X.509 인증서 인증 지원합니다.
참고
MongoDB TLS 1.2+를 사용할 수 있는 시스템에서 TLS 1.0 및 TLS 1.1 암호화 에 대한 지원 비활성화합니다.
멤버 인증서 요구 사항
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에 따라 더 이상 사용되지 않습니다.certificateKeyFile로 사용된 인증서에extendedKeyUsage이(가) 포함되어 있고clusterFile이(가) 서버 에 구성되어 있지 않은 경우, 값에는clientAuth('TLS 웹 클라이언트 인증') 및serverAuth('TLS 웹 서버 인증")이(가) 모두 포함되어야 합니다. 서버 에clusterFile가 구성된 경우serverAuth만 필요합니다.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
다음 단계
X.509 내부 인증의 예시는 자체 관리형 MongoDB의 X.509 로 클러스터 멤버십 확인을 참조하세요.
키 파일 내부 인증 에서 X.509 내부 인증 으로 업그레이드 하려면 키 파일 인증에서 X.509 인증으로 업그레이드를 참조하세요.