이 페이지를 사용하여 mongot 및 MongoDB Community Edition 배포서버에 대한 인증 및 권한 부여를 구성합니다. Kubernetes 연산자용 MongoDB 컨트롤러와 함께 mongot 을 사용하는 방법에 대한 자세한 내용은 Kubernetes와 함께 MongoDB Search 및 벡터 검색을 참조하십시오.
mongot 각각의 보안 구성이 필요한 두 개의 고유한 채널을 통해 통신합니다.
동기화 소스 (
syncSource.replicaSet,syncSource.router): 복제를 위한mongot의 MongoDB 배포서버에 대한 아웃바운드 연결입니다. 여기서 인증 메커니즘을 구성하면mongot이mongod또는mongos에 대해 인증할 수 있습니다.gRPC 서버 (
server.grpc):mongod이mongot에 연결하여 검색 쿼리 및 인덱스 관리 명령을 수행하는 인바운 채널입니다.mongod과mongot는 mTLS를 통해 서로 인증합니다.
참고
상태 확인(healthCheck)과 지표(metrics) 엔드포인트는 TLS 또는 인증을 지원하지 않습니다. 네트워크 계층에서 이 포트에 대한 액세스를 제한합니다.
고려 사항
인증을 구성하기 전에 다음 사항을 검토하세요.
동기화 소스에 대해 정확히 하나의 인증 메커니즘을 구성해야 합니다. SCRAM 또는 X.509입니다. 두 메커니즘은 각 연결 블록에 대해 상호 배타적입니다.
샤딩된 클러스터의 경우
mongot설정 파일에syncSource.replicaSet과syncSource.router을 모두 지정하고 각 연결에 대해 인증을 독립적으로 구성해야 합니다.syncSource.router은syncSource.replicaSet에 의해 임의되지 않으므로 명시적으로 구성해야 합니다. 각 샤드에는 고유한 전용mongot인스턴스가 필요합니다.syncSource.replicaSetmongot인스턴스를 해당 샤드의 복제본 세트에 매핑합니다.syncSource.router클러스터 전체 조정을 위한mongos연결을 제공합니다.
mongot이 인증하려면searchCoordinator내장 역할이 MongoDB 배포서버에 존재해야 합니다. 이 역할은 MongoDB 8.2 이상에서 사용할 수 있습니다.
시작하기 전에
다음 setParameter 옵션을 mongod 설정 파일에 추가한 후 mongod를 다시 시작합니다.
setParameter: mongotHost: <host>:<port> searchIndexManagementHostAndPort: <host>:<port> skipAuthenticationToSearchIndexManagementServer: false useGrpcForSearch: true
setParameter 옵션은 mongod 서버에 mongot의 위치를 찾고 통신하는 방법을 지시하는 서버 매개변수를 설정합니다. mongot 이 배포서버에 연결하려면 이 매개변수를 먼저 설정해야 합니다.
mongod 설정 파일에 대한 자세한 내용은 자체 관리형 설정 파일 옵션을 참조하세요.
동기화 소스 인증 구성
mongot 이 MongoDB 배포서버에 인증할 수 있도록 동기화 소스 연결에 다음 인증 메커니즘 중 하나를 구성합니다.
SCRAM 은 사용자 이름과 비밀번호를 사용하여 mongot 를 MongoDB 배포서버에 인증합니다.
mongot에 대한 SCRAM을 구성하려면 다음 단계를 완료하세요.
admin 데이터베이스에 mongot 사용자를 만듭니다.
searchCoordinator 역할을 사용하여 MongoDB 복제본 세트에 사용자를 만듭합니다.
mongosh에서 다음 명령을 실행합니다.
use admin db.createUser({ user: "mongotUser", pwd: "<password>", roles: [ { role: "searchCoordinator", db: "admin" } ] })
mongot 호스팅에서 비밀번호 파일을 만듭니다.
<password> 을 비밀번호로 대체한 다음 운영 체제에 맞는 명령을 실행하여 비밀번호 파일을 생성합니다. 파일에는 후미 줄 바꿀이 포함되어 있으면 안 됩니다.
Linux 또는 macOS의 경우:
echo -n "<password>" > /etc/mongot/secrets/passwordFile chmod 400 /etc/mongot/secrets/passwordFile
Windows 명령 프롬프트:
echo|set /p="<password>" > passwordFile
Windows Powershell용:
[System.IO.File]::WriteAllText("passwordFile", "<password>")
scramAuth 블록을 mongot 구성에 추가합니다.
syncSource.replicaSet 아래에 scramAuth 블록을 추가합니다. 샤딩된 클러스터의 경우 syncSource.router 아래에도 동일한 블록을 추가합니다. hostAndPort 에 여러 호스트를 나열합니다. 호스트 하나가 사용할 수 없는 경우에도 mongot 가 복제본 세트를 계속 발견할 수 있도록 합니다.
syncSource: replicaSet: hostAndPort: - "<host1>:27017" - "<host2>:27017" scramAuth: username: mongotUser authSource: admin passwordFile: /etc/mongot/secrets/passwordFile tls: enabled: false
샤딩된 클러스터의 경우 syncSource.replicaSet 과 syncSource.router 모두에서 scramAuth 를 구성합니다. syncSource.replicaSet 은 mongot 를 샤드의 복제본 세트에 대해 인증하고, syncSource.router 는 클러스터 전역 조정을 위해 mongot 를 mongos 에 대해 인증합니다. 두 연결에 대해 동일한 자격 증명을 사용하거나, 독립적으로 관리하는 경우 별도 자격 증명을 사용할 수 있습니다.
syncSource: replicaSet: hostAndPort: - "<shard-host1>:27017" - "<shard-host2>:27017" scramAuth: username: mongotShardUser authSource: admin passwordFile: /etc/mongot/secrets/shard-passwordFile tls: enabled: false router: hostAndPort: - "<mongos1>:27017" - "<mongos2>:27017" scramAuth: username: mongotRouterUser authSource: admin passwordFile: /etc/mongot/secrets/router-passwordFile tls: enabled: false
mongot 설정 파일에 대한 자세한 내용은 mongot 구성을 참조하세요.
필요한 경우 동기화 소스 연결에 TLS를 활성화합니다.
MongoDB 배포서버에 TLS가 활성화되어 있는 경우 tls.enabled 을 true (으)로 설정하고 필요에 따라 mongot 설정 파일에 다음 필드를 제공합니다.
필드 | 설명 |
|---|---|
| 하나 이상의 X.509 인증서가 포함된 PEM 파일 |
| 클라이언트의 X.509 인증서와 개인 키가 모두 포함된 PEM 파일입니다. |
| 클라이언트 인증서 키를 해독하는 비밀번호입니다. |
X.509 인증을 사용하면 mongot 은 사용자 이름과 비밀번호 대신 TLS 클라이언트 인증서로 MongoDB 배포에 인증할 수 있습니다. X.509를 사용하면 TLS가 항상 활성화됩니다.
mongot에 대한 X.509 을 구성하려면 다음 단계를 완료합니다.
$external 데이터베이스에 mongot 사용자를 만듭니다.
searchCoordinator 역할을 사용하여 MongoDB 복제본 세트에 사용자를 만듭니다. 사용자 이름은 클라이언트 인증서의 주제와 정확히 일치해야 합니다.
mongosh에서 다음 명령을 실행합니다.
use $external db.createUser({ user: "CN=mongot,OU=...", roles: [ { role: "searchCoordinator", db: "admin" } ] })
x509 블록을 mongot 구성에 추가합니다.
syncSource.replicaSet 아래에 x509 블록을 추가합니다. 샤딩된 클러스터의 경우 syncSource.router 아래에 동일한 블록을 추가합니다.
x509 블록에서는 tlsCertificateKeyFile 과 caFile 는 필수 사항입니다. hostAndPort 에 여러 호스팅을 나열합니다. 호스팅 하나가 사용할 수 없는 경우에도 mongot 은 복제본 세트를 계속 발견할 수 있습니다.
syncSource: replicaSet: hostAndPort: - "<host1>:27017" - "<host2>:27017" x509: tlsCertificateKeyFile: /etc/mongot/tls/mongot-client.pem caFile: /etc/mongot/tls/ca.pem # tlsCertificateKeyFilePasswordFile: /etc/mongot/secrets/cert-key-password
필드 | 설명 |
|---|---|
| 필수 사항입니다. X.509 인증서와 개인 키가 모두 포함된 PEM 파일입니다. |
| 필수 사항입니다. 하나 이상의 X.509 인증서가 포함된 PEM 파일 |
| 선택 사항. 키가 암호화된 경우 |
샤딩된 클러스터의 경우 syncSource.replicaSet 과 syncSource.router 모두에서 x509 를 구성합니다. 두 연결에 대해 동일한 필드 구조를 사용하고 syncSource.router.hostAndPort에 mongos 엔드포인트를 제공합니다.
syncSource: replicaSet: hostAndPort: - "<shard-host1>:27017" - "<shard-host2>:27017" x509: tlsCertificateKeyFile: /etc/mongot/tls/mongot-client.pem caFile: /etc/mongot/tls/ca.pem # tlsCertificateKeyFilePasswordFile: /etc/mongot/secrets/cert-key-password router: hostAndPort: - "<mongos1>:27017" - "<mongos2>:27017" x509: tlsCertificateKeyFile: /etc/mongot/tls/mongot-client.pem caFile: /etc/mongot/tls/ca.pem # tlsCertificateKeyFilePasswordFile: /etc/mongot/secrets/cert-key-password
gRPC 서버 트랜스포트 보안 구성
gRPC 서버는 mongod 가 mongot 에 연결하여 검색 쿼리 및 인덱스 관리 명령을 수행하는 인바운드 채널입니다. TLS를 사용하여 이 채널을 전송 계층에서 보안합니다. mongod 와 mongot을 상호 인증하려면 mTLS를 사용하세요.
mongot 의 server.grpc.tls.mode 옵션과 mongod의 searchTLSMode 매개변수로 TLS 모드를 구성합니다. searchTLSMode을 설정하지 않으면 searchTLSMode 의 기본값이 globalTLS이므로 mongod 은 mongot 에 대한 연결의 net.tls.mode 에서 TLS 모드를 상속합니다.
mongot 설정 파일에서 다음 TLS 모드 중 하나를 구성할 수 있습니다.
비활성화
TLS 없음. mongod 과 mongot 이 동일한 호스트에서 실행되는 배포에서만 이 모드를 사용하세요.
server: grpc: address: "localhost:27028" tls: mode: "disabled"
TLS
mongot 서버 인증서를 제시하며 mongod 은 연결을 설정하기 전에 인증서를 확인합니다. 이 모드에는 certificateKeyFile이(가) 필요합니다.
server: grpc: address: "0.0.0.0:27028" tls: mode: "tls" certificateKeyFile: /etc/mongot/tls/mongot-server.pem # certificateKeyFilePasswordFile: /etc/mongot/secrets/server-key-password
상호 TLS(mTLS)
mongot 과 mongod 모두 서로의 인증서를 제시하고 확인합니다. 이 모드에는 certificateKeyFile 와 caFile가 필요합니다. mtls를 사용하는 경우 mongod 에도 mongot에 대한 연결의 해당 TLS 설정을 구성해야 합니다.
server: grpc: address: "0.0.0.0:27028" tls: mode: "mtls" certificateKeyFile: /etc/mongot/tls/mongot-server.pem caFile: /etc/mongot/tls/ca.pem