Mongo()
이 페이지의 내용
설명
Mongo(host, autoEncryptionOpts, api)
JavaScript 생성자를 사용하여
mongosh
또는 JavaScript 파일에서 데이터베이스 연결을 인스턴스화합니다.Mongo()
메서드에는 다음과 같은 매개변수가 있습니다.Parameter유형설명host
string 또는
Mongo
인스턴스autoEncryptionOpts
문서
선택 사항입니다. 클라이언트 사이드 필드 레벨 암호화를 활성화하기 위한 구성 매개변수입니다.
autoEncryptionOpts
데이터베이스 연결의 기존 클라이언트 사이드 필드 수준 암호화 구성을 재정의합니다. 생략하면 는 현재 데이터베이스 연결의 클라이언트 사이드 필드 수준 암호화 구성을Mongo()
상속합니다.사용법 및 구문에 대한 자세한 내용은
AutoEncryptionOpts
를 참조하세요.api
문서
선택 사항입니다. Stable API를 활성화하기 위한 구성 옵션입니다.
사용법 및 구문에 대한 자세한 내용은
api
를 참조하세요.
호환성
이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
AutoEncryptionOpts
autoEncryptionOpts
문서는 클라이언트 사이드 필드 레벨 암호화에 대한 구성 옵션을 지정합니다. 데이터베이스 연결에 기존 클라이언트 사이드 필드 레벨 암호화 구성이 있는 경우 autoEncryptionOpts
를 지정하면 해당 구성이 재정의됩니다.
예를 들어 클라이언트 측 필드 레벨 암호화 명령줄 옵션으로 mongosh
를 시작하면 해당 연결에 대한 클라이언트 측 암호화가 활성화됩니다. Mongo()
를 사용하여 생성된 새 데이터베이스 연결은 Mongo()
에 autoEncryptionOpts
가 포함되지 않는 한 암호화 설정을 상속합니다.
autoEncryptionOpts
문서의 구문은 다음과 같습니다.
{ "keyVaultClient" : <object>, "keyVaultNamespace" : "<string>", "kmsProviders" : <object>, "schemaMap" : <object>, "bypassAutoEncryption" : <boolean>, "tlsOptions": <object> }
autoEncryptionOpts
문서에는 다음과 같은 매개 변수가 사용됩니다.
Parameter | 유형 | 설명 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| (선택 사항) 키 볼트 컬렉션을 호스팅하는 MongoDB cluster입니다. 클러스터 를 가리키는
| |||||||||||||||||||||||||||
| 문자열 | (필수) 키 볼트 컬렉션의 전체 네임스페이스입니다. | |||||||||||||||||||||||||||
| 문서 | (필수) 고객 마스터 키(CMK)를 관리하기 위해 클라이언트 사이드 필드 레벨 암호화에 사용되는 키 관리 서비스(KMS)입니다. 클라이언트 사이드 필드 레벨 암호화는 CMK를 사용하여 데이터 암호화 키를 암호화하고 해독합니다. 클라이언트 사이드 필드 레벨 암호화는 다음 KMS 제공자를 지원합니다. 가능하면
| |||||||||||||||||||||||||||
| 문서 | (선택 사항) JSON schema 초안 4 표준 구문 및 암호화별 키워드를 사용하여 지정된 자동 클라이언트 사이드 필드 수준 암호화 규칙입니다. 이 옵션은 전체 설명서는 암호화 스키마를 참조하세요. | |||||||||||||||||||||||||||
| 부울 | (선택 사항) 자동 클라이언트 사이드 필드 수준 암호화 규칙을 우회하고 필드별 명시적(수동) 암호화를 수행하려면 | |||||||||||||||||||||||||||
| 부울 | (선택 사항) | |||||||||||||||||||||||||||
| 부울 | (선택 사항) 자동 암호화와 자동 암호 해독을 모두 사용하지 않으려면 | |||||||||||||||||||||||||||
| 객체 | (선택 사항) PEM 형식의 TLS 클라이언트 인증서 및 비공개 키 파일 ( |
api
api
매개변수는 Stable API의 구성 옵션을 지정합니다. 다음 옵션을 사용하여 선택적 동작을 활성화 또는 비활성화할 수 있습니다.
옵션 | 유형 | 설명 |
---|---|---|
version | 문자열 | API 버전을 지정합니다. |
strict | 부울 |
지정하지 않으면 기본값은 |
deprecationErrors | 부울 |
지정하지 않으면 기본값은 |
api
매개 변수의 구문은 다음과 같습니다.
{ api: { version: <string>, strict: <boolean>, deprecationErrors: <boolean> } }
예시
MongoDB 클러스터에 연결
다음 작업은 mongosh
세션 내에서 새 연결 객체를 생성합니다.
cluster = Mongo("mongodb://mymongo.example.net:27017/?replicaSet=myMongoCluster")
mymongo.example.net:27017
클러스터와 상호 작용하려면 cluster
객체에 대해 작업을 실행합니다.
myDB = cluster.getDB("myDB"); //returns the database object myColl = myDB.getCollection("myColl"); // returns the collection object
클라이언트 측 암호화가 활성화된 클러스터에 연결하기
암호화된 클라이언트 만들기
클라이언트 사이드 필드 레벨 암호화 옵션이 구성된 Mongo()
생성자를 사용하여 데이터베이스 연결을 생성합니다. mongodb://myMongo.example.net
URI를 대상 클러스터의 연결 문자열 URI로 바꿉니다.
encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", autoEncryptionOpts )
cluster
객체에 대해 작업을 실행하여 mymongo.example.net:27017
클러스터와 상호 작용하고 명시적 암호화를 수행합니다.
// returns the database object myDB = cluster.getDB("myDB"); // returns the collection object myColl = myDB.getCollection("myColl"); // returns object for managing data encryption keys keyVault = cluster.getKeyVault(); // returns object for explicit encryption/decryption clientEncryption = cluster.getClientEncryption();
클라이언트 사이드 필드 수준 암호화 방법의 전체 목록은 클라이언트 사이드 필드 수준 암호화 방법을 참조하세요.
자동 클라이언트 사이드 암호화가 활성화된 클러스터에 연결
로컬로 관리되는 키에 클라이언트 사이드 필드 레벨 암호화를 구성하는 방법:
줄 바꿈 없이 기본64-인코딩된 96-바이트 문자열을 생성합니다.
키를 로드하려면
mongosh
를 사용하세요.
export TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')") mongosh --nodb
다음 작업은 mongosh
세션에서 새 연결 객체를 만듭니다. AutoEncryptionOpts
옵션은 hr.employees
컬렉션에서 자동 클라이언트 측 암호화를 활성화하는 데 필요한 옵션을 지정합니다.
var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, process.env["TEST_LOCAL_KEY"]) } }, schemaMap : { "hr.employees" : { "bsonType": "object", "properties" : { "taxid" : { "encrypt" : { "keyId" : [UUID("bffb361b-30d3-42c0-b7a4-d24a272b72e3")], "bsonType" : "string", "algorithm" : "AEAD_AES_256_CBC_HMAC_SHA_512-Random" } }, "taxid-short": { "encrypt": { "keyId": [UUID("33408ee9-e499-43f9-89fe-5f8533870617")], "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic", "bsonType": "string" } } } } } } cluster = Mongo( "mongodb://mymongo.example.net:27017/?replicaSet=myMongoCluster", autoEncryptionOpts )
cluster
객체에 대해 작업을 실행하여 mymongo.example.net:27017
클러스터와 상호 작용하고 자동 암호화를 활용합니다.
// returns the database object myDB = cluster.getDB("myDB"); // returns the collection object myColl = myDB.getCollection("myColl"); myColl.insertOne( { "name" : "J Doe", "taxid" : "123-45-6789", "taxid-short" : "6789" } )
지정된 자동 암호화 규칙은 지정된 데이터 암호화 키 및 알고리즘을 사용하여 taxid
및 taxid-short
필드를 암호화합니다. 올바른 KMS가 구성되고, 지정된 데이터 암호화 키에 액세스할 수 있는 클라이언트만 필드의 암호를 해독할 수 있습니다.
다음 작업은 mongosh
세션 내에서 새 연결 객체를 생성합니다. mongo.tlsOptions
옵션은 KMIP를 KMS 제공자로 사용하여 연결을 활성화합니다.
var csfleConnection = { keyVaultNamespace: "encryption.__keyVault", kmsProviders: { kmip: { endpoint: "kmip.example.com:123" } }, tlsOptions: { kmip: { tlsCertificateKeyFile: "/path/to/client/cert-and-key-bundle.pem" } } } cluster = Mongo( "mongodb://mymongo.example.net:27017/?replicaSet=myMongoCluster", csfleConnection );
클라이언트 사이드 필드 수준 암호화 방법의 전체 목록은 클라이언트 사이드 필드 수준 암호화 방법을 참조하세요.
Stable API를 활성화하여 클러스터에 연결
다음 작업은 mongosh
세션 내에서 새 연결 개체를 만듭니다. api
옵션은 Stable API V1을 활성화하고 사용자가 더 이상 사용되지 않는 명령 또는 Stable API 외부 명령을 실행할 수 없도록 지정합니다.
cluster = Mongo( "mongodb://mymongo.example.net:27017/?replicaSet=myMongoCluster", null, { api: { version: "1", strict: true, deprecationErrors: true } } )
mymongo.example.net:27017
클러스터와 상호 작용하려면 cluster
객체에 대한 작업을 실행하세요. Stable API 명령의 전체 목록은 Stable API 명령을 참조하세요.