설명
Mongo(host, autoEncryptionOpts, api)
JavaScript 생성자를 사용하여
mongosh
또는 JavaScript 파일에서 데이터베이스 연결을 인스턴스화합니다.Mongo()
메서드에는 다음과 같은 매개변수가 있습니다.Parameter유형설명host
string 또는
Mongo
인스턴스autoEncryptionOpts
문서
선택 사항. 사용 중 암호화활성화하기 위한 구성 매개변수입니다.
autoEncryptionOpts
데이터베이스 연결의 기존 사용 중 암호화 구성을 재정의합니다. 생략하면Mongo()
는 현재 데이터베이스 연결의 사용 중 암호화 구성을 상속합니다.사용법 및 구문에 대한 자세한 내용은
AutoEncryptionOpts
를 참조하세요.api
문서
선택 사항입니다. Stable API를 활성화하기 위한 구성 옵션입니다.
사용법 및 구문에 대한 자세한 내용은
api
를 참조하세요.
팁
Mongo.getDB()
개인정보 정책에 db.getMongo()
호환성
이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
AutoEncryptionOpts
autoEncryptionOpts
문서는 사용 중 암호화 대한 구성 옵션을 지정합니다. 데이터베이스 연결에 기존 사용 중인 암호화 구성이 있는 경우 autoEncryptionOpts
이 해당 구성을 재정의합니다. MongoDB 사용 중 암호화 대해 클라이언트 사이드 필드 레벨 암호화 와 Queryable Encryption의 두 가지 접근 방식을 제공합니다.
예를 들어 클라이언트 측 필드 레벨 암호화 명령줄 옵션으로 mongosh
를 시작하면 해당 연결에 대한 클라이언트 측 암호화가 활성화됩니다. Mongo()
를 사용하여 생성된 새 데이터베이스 연결은 Mongo()
에 autoEncryptionOpts
가 포함되지 않는 한 암호화 설정을 상속합니다.
autoEncryptionOpts
문서의 구문은 다음과 같습니다.
{ "keyVaultClient" : <object>, "keyVaultNamespace" : "<string>", "kmsProviders" : <object>, "schemaMap" : <object>, "bypassAutoEncryption" : <boolean>, "tlsOptions": <object>, "encryptedFieldsMap": <object> }
autoEncryptionOpts
문서에는 다음과 같은 매개 변수가 사용됩니다.
Parameter | 유형 | 설명 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| (선택 사항) 키 볼트 컬렉션을 호스팅하는 MongoDB cluster입니다. 클러스터 를 가리키는 연결 객체 지정합니다.
을 | |||||||||||||||||||||||||||
| 문자열 | (필수) 키 볼트 컬렉션의 전체 네임스페이스입니다. | |||||||||||||||||||||||||||
| 문서 | (필수) 고객 마스터 키(CMK)를 관리하기 위해 클라이언트 사이드 필드 레벨 암호화에 사용되는 키 관리 서비스(KMS)입니다. 클라이언트 사이드 필드 레벨 암호화는 CMK를 사용하여 데이터 암호화 키를 암호화하고 해독합니다. 클라이언트 사이드 필드 레벨 암호화는 다음 KMS 제공자를 지원합니다. 가능하면
| |||||||||||||||||||||||||||
| 문서 | (선택 사항) JSON schema 초안 4 표준 구문 및 암호화별 키워드를 사용하여 지정된 자동 클라이언트 사이드 필드 수준 암호화 규칙입니다. 이 옵션은 전체 설명서는 암호화 스키마를 참조하세요. | |||||||||||||||||||||||||||
| 부울 | (선택 사항) 자동 클라이언트 사이드 필드 수준 암호화 규칙을 우회하고 필드별 명시적(수동) 암호화를 수행하려면 | |||||||||||||||||||||||||||
| 부울 | (선택 사항) | |||||||||||||||||||||||||||
| 부울 | (선택 사항) 자동 암호화와 자동 암호 해독을 모두 사용하지 않으려면 | |||||||||||||||||||||||||||
| 객체 | (선택 사항) PEM 형식의 TLS 클라이언트 인증서 및 비공개 키 파일 ( | |||||||||||||||||||||||||||
| 문서 | (선택 사항) 컬렉션 네임스페이스를 Queryable Encryption 의 암호화됨 필드에 대해 자세히 학습 암호화된 필드 및 활성화된 쿼리를 참조하세요. |
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 명령을 참조하세요.