x를 사용합니다. 자체 관리형 배포서버에서 클라이언트를 인증하기 위한 509 인증서
다음 절차는 x를 설정합니다. 독립형 mongod
인스턴스 에서 클라이언트 인증 을 위한 509 인증서 인증 . 이는 상호 TLS 또는 mTLS라고도 합니다.
복제본 세트 또는 분할 클러스터에 x.509 인증을 사용하려면 자체 관리 MongoDB를 사용한 멤버십 인증을 위해 x.509 인증서 사용을 참조하세요.
전제 조건
TLS/SSL, PKI(공개 키 기반 구조) 인증서, 특히 x.509 인증서 및 인증 기관에 대한 자세한 설명은 이 문서에 설명되어있지 않습니다.이 튜토리얼은 유효한 x.509 인증서에 액세스할 수 있고, TLS/SSL에 대한 딕셔너리 지식을 갖고 있다고 가정합니다.
인증 기관
프로덕션 용도의 경우 MongoDB deployment는 동일한 인증 기관에서 생성하고 서명한 유효한 인증서를 사용해야 합니다. 귀하 또는 귀하의 조직은 독립적인 인증 기관을 생성 및 유지 관리하거나 타사 TLS 공급업체에서 생성한 인증서를 사용할 수 있습니다. 인증서를 얻고 관리하는 것은 이 문서의 범위를 벗어납니다.
--tlsCertificateSelector
또는 --net.tls.certificateSelector
을(를) 사용하지 않는 한, x.509 인증을 사용하려면 반드시 --tlsCAFile
또는 net.tls.CAFile
을(를) 지정해야 합니다.
클라이언트 x.509 인증서
유효한 x.509 인증서가 있어야 합니다. 클라이언트 x.509 인증서는 클라이언트 인증서 요구 사항을 충족해야 합니다.
--tlsAllowInvalidCertificates
또는 net.tls.allowInvalidCertificates: true
를 지정하는 경우 잘못된 인증서로 TLS 연결을 설정할 수는 있지만 인증에는 충분하지 않습니다.
절차
x.509 인증으로 배포하기
명령줄에서 x.509 인증을 위한 mongod
인스턴스를 구성할 수 있습니다.
독립형 mongod
인스턴스를 구성하려면 다음 명령을 실행합니다.
mongod --tlsMode requireTLS \ --tlsCertificateKeyFile <path to TLS/SSL certificate and key PEM file> \ --tlsCAFile <path to root CA PEM file> --bind_ip <hostnames>
구성에 필요한 추가 옵션을 포함하세요.
x.509 구성에는 다음이 필요합니다:
옵션 | 참고 사항 |
---|---|
requireTLS 를 지정합니다. | |
클라이언트에 제공할 인스턴스의 x.509 인증서를 지정합니다. | |
인스턴스에 제공된 인증서를 확인하려면 인증 기관 파일을 지정하세요. |
구성 파일의 x.509 인증에 대해 mongod
을(를) 구성할 수 있습니다.
독립형 mongod
인스턴스를 구성하려면 구성 파일에 다음 구성 옵션을 추가하세요.
net: tls: mode: requireTLS certificateKeyFile: <path to TLS/SSL certificate and key PEM file> CAFile: <path to root CA PEM file>
구성에 필요한 추가 옵션을 포함하세요.
x.509 구성에는 다음이 필요합니다:
옵션 | 참고 사항 |
---|---|
requireTLS 를 지정합니다. | |
클라이언트에 제공할 인스턴스의 x.509 인증서를 지정합니다. | |
인스턴스에 제공된 인증서를 확인하려면 인증 기관 파일을 지정하세요. |
복제본 세트 또는 샤딩된 클러스터에 대한 x.509 인증을 설정하려면 자체 관리 MongoDB를 사용한 멤버십 인증을 위해 x.509 인증서 사용을 참조하세요.
x를 추가합니다.509 subject
사용자로서의인증서
클라이언트 인증서를 사용하여 인증하려면 먼저 클라이언트 인증서의 subject
값을 MongoDB 사용자로 $external
데이터베이스에 추가해야 합니다. 각각의 고유한 x.509 클라이언트 인증서는 단일 MongoDB 사용자에 해당합니다. 단일 클라이언트 인증서를 사용하여 둘 이상의 MongoDB 사용자를 인증할 수 없습니다.
참고
사용자 이름 요구 사항
2} 인증 사용자(Kerberos, LDAP 또는 x.509 사용자)와 함께 클라이언트 세션 및 인과적 일관성 보장을 사용하려면 사용자 이름이 10KB보다 클 수 없습니다.
$external
의 RDN은
subject
string RFC2253 와 호환되어야 합니다. 표준.
다음 명령을 사용하여 클라이언트 인증서에서
RFC2253
형식의subject
를 가져올 수 있습니다.openssl x509 -in <pathToClientPEM> -inform PEM -subject -nameopt RFC2253 이 명령은
subject
문자열과 인증서를 반환합니다.subject= CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry -----BEGIN CERTIFICATE----- # ... -----END CERTIFICATE----- subject
의RFC2253
규격 값을 사용자로 추가합니다. 필요에 따라 공백을 생략합니다.다음 예시는 사용자를 추가하고 해당 사용자에게
test
데이터베이스에서readWrite
역할과userAdminAnyDatabase
역할을 부여합니다.db.getSiblingDB("$external").runCommand( { createUser: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry", roles: [ { role: "readWrite", db: "test" }, { role: "userAdminAnyDatabase", db: "admin" } ], writeConcern: { w: "majority" , wtimeout: 5000 } } ) 역할이 있는 사용자를 추가하는 방법에 대한 자세한 내용은 자체 관리형 배포서버에서 사용자 및 역할 관리를 참조하세요.
x.509 인증서로 인증하기
x.509 클라이언트 인증서 주체를 해당 MongoDB 사용자로 추가한 후 클라이언트 인증서로 인증할 수 있습니다.
연결 중에 인증하려면 다음 명령을 실행합니다:
mongosh --tls --tlsCertificateKeyFile <path to client PEM file> \ --tlsCAFile <path to root CA PEM file> \ --authenticationDatabase '$external' \ --authenticationMechanism MONGODB-X509
옵션 | 참고 사항 |
---|---|
클라이언트의 x.509 파일을 지정합니다. | |
mongod 인스턴스에서 제공한 인증서를 확인하려면 인증 기관 파일을 지정하세요. | |
'$external' 를 지정합니다. | |
MONGODB-X509 를 지정합니다. |
인증 없이 연결할 수 있으며 연결 후 db.auth()
메서드를 사용하여 인증할 수 있습니다.
예를 들어, mongosh
을(를) 사용하는 경우
mongosh --tls --tlsCertificateKeyFile <path to client PEM file> \ --tlsCAFile <path to root CA PEM file> 옵션참고 사항클라이언트의 x.509 파일을 지정합니다.인증하려면
$external
데이터베이스의db.auth()
메서드를 사용합니다.mechanism
필드에"MONGODB-X509"
을(를) 지정합니다.db.getSiblingDB("$external").auth( { mechanism: "MONGODB-X509" } )
다음 단계
복제본 세트 또는 분할 클러스터에 x.509 인증을 사용하려면 자체 관리 MongoDB를 사용한 멤버십 인증을 위해 x.509 인증서 사용을 참조하세요.