복제본 세트와샤딩된 클러스터의 멤버가 서로 인증하도록 요구할 수 있습니다. 멤버의 내부 인증 위해 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.1 이상이 사용 가능한 시스템에서 TLS 1.0 암호화를 지원하지 않습니다.
멤버 인증서 요구 사항
멤버 인증서를 사용하여 샤드 cluster 또는 복제본 세트에 대한 멤버 자격을 확인합니다. 멤버 인증서는 net.tls.clusterFile
및 net.tls.certificateKeyFile
에 저장됩니다. 회원 인증서 요구 사항:
단일 인증 기관 (CA)은 샤딩된 클러스터 또는 복제본 세트의 멤버에 대해 모든 x.509 인증서를 발급해야 합니다.
x.509 인증서는 만료되지 않아야 합니다.
회원 인증서의
subject
에 있는 고유 이름(DN
)은 다음 속성 중 하나 이상 에 대해 비어 있지 않은 값을 지정해야 합니다.조직 (
O
)조직 단위 (
OU
)도메인 구성 요소 (
DC
)
멀티 클러스터 배포에서는 각 클러스터가 서로 다른 X.509 멤버 인증서를 사용해야 합니다. 각 인증서는
O
,OU
및DC
DN(고유 이름) 필드에 고유한 값을 가져야 합니다.두 클러스터에 DN 값이 동일한 인증서가 있는 경우 한 클러스터의 손상된 서버가 다른 클러스터의 구성원으로 인증할 수 있습니다.
각 cluster 멤버 인증서의
net.tls.clusterFile
및net.tls.certificateKeyFile
인증서에는 동일한O
,OU
및DC
가 포함되어야 합니다. 이는 설정된 경우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
가 일치하지 않기 때문에 올바르지 않습니다. 하나의DN
에는 두 개의OU
사양이 있고 다른 하나는 하나의OU
사양만 있습니다.CN=host1,OU=Dept1,OU=Sales,O=MongoDB CN=host2,OU=Dept1,O=MongoDB 일반 이름(
CN
) 또는 주체 대체 이름(SAN
) 항목 중 하나는 다른 클러스터 멤버의 서버 호스트 이름과 일치해야 합니다. MongoDB 4.2부터SAN
를 비교할 때 MongoDB는 DNS 이름 또는 IP 주소 중 하나를 비교할 수 있습니다. 이전 버전에서는 MongoDB가 DNS 이름만 비교했습니다.예를 들어, cluster의 인증서에는 다음과 같은
subject
가 있을 수 있습니다.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
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 내부 인증으로 업그레이드 하려면 자체 관리형 MongoDB 키 파일 인증에서 X.509 인증으로 업그레이드를 참조하세요.