내부/멤버십 인증
복제본 세트 와 샤드 클러스터 의 멤버가 서로 인증하도록 요구할 수 있습니다. 멤버의 내부 인증을 위해 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 형식은 텍스트 파일 형식을 사용하는 기존의 단일 키 키파일과 호환됩니다.
예를 들면 다음과 같습니다.
파일에 여러 키를 지정할 수 있는 기능을 사용하면 다운타임 없이 키를 롤링 업그레이드할 수 있습니다. 복제본 세트의 키 순환 및 샤드 클러스터의 키 순환을 참조하세요.
배포의 모든 mongod
및 mongos
인스턴스는 하나 이상의 공통 키를 공유해야 합니다.
UNIX 시스템에서는 키 파일에 그룹 또는 월드 권한이 없어야 합니다. Windows 시스템에서는 키 파일 권한이 확인되지 않습니다.
복제본 세트 또는 샤드 클러스터의 멤버를 호스팅하는 각 서버에 키파일을 저장해야 합니다.
[1] | MongoDB의 암호화된 스토리지 엔진의 경우 로컬 키 관리에 사용되는 키파일에는 하나의 키만 포함할 수 있습니다. |
키파일에 대한 MongoDB 구성
키파일을 지정하려면 security.keyFile
설정 또는 --keyFile
명령줄 옵션을 사용합니다.
키파일 내부 인증의 예는 복제본 세트를 키파일 인증으로 업데이트를 참조하세요.
x.509
복제본 세트 또는 샤드 클러스터의 멤버는 키파일을 사용하는 대신 내부 인증에 x.509 인증서를 사용할 수 있습니다. MongoDB는 보안 TLS/SSL 연결에 사용할 수 있도록 x.509 인증서 인증을 지원합니다.
참고
MongoDB가 TLS 1 지원을 비활성화합니다. TLS가 1 인 시스템에서 0 암호화.1+를 사용할 수 있습니다.
멤버 인증서 요구 사항
멤버 인증서를 사용하여 샤딩된 클러스터 또는 복제본 세트에 대한 멤버 자격을 확인합니다. 회원 인증서 파일 경로는 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
인증서에는 다음과 같은 요구 사항이 있습니다.
단일 인증 기관 (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를 사용하려면 다음 설정을 사용합니다.
mongod
및 mongos
인스턴스는 클라이언트에게 신원을 증명하기 위해 인증서 키 파일을 사용하지만, 인증서 키 파일은 멤버십 인증에도 사용할 수 있습니다. 클러스터 파일을 지정하지 않으면 구성원은 멤버십 인증에 인증서 키 파일을 사용합니다. net.tls.certificateKeyFile
또는 --tlsCertificateKeyFile
를 사용하여 인증서 키 파일을 지정합니다.
클라이언트 인증과 멤버십 인증 모두에 인증서 키 파일을 사용하려면 인증서는 다음 중 하나여야 합니다.
extendedKeyUsage
생략 또는지정
extendedKeyUsage = serverAuth, clientAuth
다음 단계
x.509 내부 인증의 예는 멤버십 인증을 위한 x.509 인증서 사용을 참조하세요.
키파일 내부 인증에서 x.509 내부 인증으로 업그레이드하려면 키파일 인증에서 x.509 인증으로 업그레이드를 참조하십시오.