이 페이지를 사용하여 mongot 및 MongoDB Community Edition 배포에 대한 인증 및 권한 부여를 구성합니다. 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 authenticates mongot to your MongoDB deployment with a username and password.
mongot에 대한 SCRAM을 구성하려면 다음 단계를 완료하세요.
Create the mongot user in the admin database.
searchCoordinator 역할을 사용하여 MongoDB 복제본 세트에 사용자를 만듭합니다.
mongosh에서 다음 명령을 실행합니다.
use admin db.createUser({ user: "mongotUser", pwd: "<password>", roles: [ { role: "searchCoordinator", db: "admin" } ] })
Create a password file on the mongot host.
<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>")
Add the scramAuth block to your mongot configuration.
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 을 구성하려면 다음 단계를 완료합니다.
Create the mongot user in the $external database.
searchCoordinator 역할을 사용하여 MongoDB 복제본 세트에 사용자를 만듭니다. 사용자 이름은 클라이언트 인증서의 주제와 정확히 일치해야 합니다.
mongosh에서 다음 명령을 실행합니다.
use $external db.createUser({ user: "CN=mongot,OU=...", roles: [ { role: "searchCoordinator", db: "admin" } ] })
Add the x509 block to your mongot configuration.
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