문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ /

자체 관리형 내부/멤버십 인증

이 페이지의 내용

  • 키파일
  • x.509
  • 다음 단계

복제본 세트샤드 클러스터 의 멤버가 서로 인증하도록 요구할 수 있습니다. 멤버의 내부 인증을 위해 MongoDB는 키파일 또는 x를 사용할 수 있습니다.509 인증서.

선택한 메서드는 모든 내부 커뮤니케이션에 사용됩니다. 예를 들어 클라이언트가 지원되는 인증 메커니즘 중 하나를 사용하여 mongos에 인증하면 mongos는 구성된 내부 인증 메서드를 사용하여 필요한 mongod 프로세스에 연결합니다.

참고

내부 인증을 활성화하면 클라이언트 권한 부여도 활성화됩니다.

키파일은 멤버의 공유 비밀번호가 포함된 SCRAM 과제 및 응답 인증 메커니즘을 사용합니다.

키 길이는 6~1024자 사이여야 하며 base64 세트의 문자만 포함할 수 있습니다. MongoDB는 크로스 플랫폼 편의를 위해 공백 문자를 제거합니다(예: x0d, x09x20). 결과적으로 다음 작업은 동일한 키를 생성합니다.

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

파일에 여러 키를 지정할 수 있는 기능을 사용하면 다운타임 없이 키를 롤링 업그레이드할 수 있습니다. 자체 관리형 복제본 세트키 순환 및 자체 관리형 샤드 클러스터의 키 순환을 참조하세요.

배포의 모든 mongodmongos 인스턴스는 하나 이상의 공통 키를 공유해야 합니다.

UNIX 시스템에서는 키 파일에 그룹 또는 월드 권한이 없어야 합니다. Windows 시스템에서는 키 파일 권한이 확인되지 않습니다.

복제본 세트 또는 샤드 클러스터의 멤버를 호스팅하는 각 서버에 키파일을 저장해야 합니다.

[1] MongoDB의 암호화된 스토리지 엔진의 경우 로컬 키 관리에 사용되는 키파일에는 하나의 키만 포함할 수 있습니다.

키파일을 지정하려면 security.keyFile 설정 또는 --keyFile 명령줄 옵션을 사용합니다.

키 파일 내부 인증의 예는 자체 관리 복제본 세트를 키 파일 인증으로 업데이트를 참조하세요.

복제본 세트 또는 샤드 클러스터의 멤버는 키파일을 사용하는 대신 내부 인증에 x.509 인증서를 사용할 수 있습니다. MongoDB는 보안 TLS/SSL 연결에 사용할 수 있도록 x.509 인증서 인증을 지원합니다.

참고

MongoDB는 TLS 1.1 이상이 사용 가능한 시스템에서 TLS 1.0 암호화를 지원하지 않습니다.

멤버 인증서를 사용하여 샤딩된 클러스터 또는 복제본 세트에 대한 멤버 자격을 확인합니다. 회원 인증서 파일 경로는 net.tls.clusterFilenet.tls.certificateKeyFile 옵션으로 구성됩니다. 멤버에게는 다음과 같은 구성 요구 사항이 있습니다.

  • 클러스터 멤버 구성은 인증에 사용되는 속성 중 하나 이상에 대해 비어 있지 않은 값을 지정해야 합니다. 기본적으로 MongoDB는 다음을 허용합니다.

    • 조직 (O)

    • 조직 단위 (OU)

    • 도메인 구성 요소 (DC)

    net.tls.clusterAuthX509.extensionValue를 설정하여 인증에 사용할 대체 속성을 지정할 수 있습니다.

  • 클러스터 멤버 구성에는 동일한 net.tls.clusterAuthX509.attributes이 포함되어야 하며 일치하는 값을 사용해야 합니다. 속성 순서는 중요하지 않습니다. 다음 예에서는 OOU 설정하지만 DC는 설정하지 않습니다.

    net:
    tls:
    clusterAuthX509:
    attributes: O=MongoDB, OU=MongoDB Server

참고

enforceUserClusterSeparation 매개변수를 비활성화하면 다음 동작이 적용됩니다.

  • 구성 파일에서 clusterAuthModekeyFile 인 경우 O/OU/DC 검사가 비활성화됩니다. 이를 통해 멤버 인증서를 보유한 클라이언트는 $external 데이터베이스에 저장된 사용자로 인증할 수 있습니다.

  • 구성 파일에 clusterAuthMode 이(가) keyFile 이(가) 아닌 경우 서버가 시작되지 않습니다.

enforceUserClusterSeparation 매개 변수를 false 로 설정하면 서버는 애플리케이션이 인증에 사용하는 클라이언트 인증서와 액세스 권한이 있는 클러스터 내 인증서를 구분하지 않습니다. clusterAuthModekeyFile 인 경우에는 효과가 없습니다. 그러나 clusterAuthMode 이(가) x509 인 경우 허용된 체계를 사용하는 사용자 인증서는 클러스터 인증서와 병합되어 권한 있는 액세스 권한이 부여됩니다.

다음을 수행하면 기존 인증서에 내부 권한이 부여됩니다.

  1. 이 매개변수에서 허용하는 이름으로 사용자를 생성합니다.

  2. enforceUserClusterSeparation 매개 변수를 false 로 설정합니다.

  3. clusterAuthModex509로 설정합니다.

enforceUserClusterSeparation 플래그에서 생성할 수 있는 상승된 권한을 가진 사용자를 제거했는지 확인하지 않고는 keyFile 에서 x509 으)로 업그레이드해서는 안 됩니다.

enforceUserClusterSeparation 매개변수를 false 로 설정하려면 시작 중에 다음 명령을 실행합니다.

mongod --setParameter enforceUserClusterSeparation=false

인증서에는 다음과 같은 요구 사항이 있습니다.

  • 단일 인증 기관 (CA)은 샤딩된 클러스터 또는 복제본 세트의 멤버에 대해 모든 x.509 인증서를 발급해야 합니다.

  • Subject Alternative Name (SAN) 항목 중 하나 이상은 다른 클러스터 멤버가 사용하는 서버 호스트 이름과 일치해야 합니다. SAN을 비교할 때 MongoDB는 DNS 이름 또는 IP 주소 중 하나를 비교할 수 있습니다.

    subjectAltName을 지정하지 않으면 MongoDB는 대신 CN(일반 이름)을 비교합니다. 그러나 이러한 CN 사용은 RFC 에 따라 더 이상 사용되지 않습니다.2818

  • certificateKeyFile로 사용되는 인증서에 extendedKeyUsage이 포함되어 있는 경우 clientAuth ("TLS 웹 클라이언트 인증")와 serverAuth ("TLS 웹 서버 인증")을 모두 포함해야 합니다.

    extendedKeyUsage = clientAuth, serverAuth
  • clusterFile로 사용된 인증서에 extendedKeyUsage가 포함되어 있다면, 그 값은 반드시 clientAuth를 포함해야 합니다.

    extendedKeyUsage = clientAuth

복제본 세트 (각 mongod 인스턴스) 또는 샤딩된 클러스터 (각 mongodmongos 인스턴스)의 각 멤버간의 내부 인증을 위해 TLS를 사용할 수 있습니다.

내부 인증에 TLS를 사용하려면 다음 설정을 사용합니다.

mongodmongos 인스턴스는 클라이언트에게 신원을 증명하기 위해 인증서 키 파일을 사용하지만, 인증서 키 파일을 멤버십 인증에도 사용할 수 있습니다. 클러스터 파일을 지정하지 않으면 멤버는 멤버십 인증을 위해 인증서 키 파일을 사용합니다. 인증서 키 파일은 net.tls.certificateKeyFile 또는 --tlsCertificateKeyFile로 지정합니다.

클라이언트 인증과 멤버십 인증 모두에 인증서 키 파일을 사용하려면 인증서는 다음 중 하나여야 합니다.

  • extendedKeyUsage 생략 또는

  • 지정 extendedKeyUsage = serverAuth, clientAuth

x의 예를 들면 다음과 같습니다.509 내부 인증은 x 사용을 참조하세요.509 자체 관리형 MongoDB를 사용한 멤버십 인증용 인증서입니다.

키 파일 내부 인증에서 x로 업그레이드합니다.509 내부 인증에 대한 자세한 내용은 자체 관리형 MongoDB를 키 파일 인증에서 x로 업그레이드를 참조하세요.509 인증.

돌아가기

OIDC 구성

다음

복제본 세트 배포

이 페이지의 내용