説明
Mongo(host, autoEncryptionOpts, api)mongoshまたは JavaScript ファイルからデータベース接続をインスタンス化するための JavaScript コンストラクター。Mongo()メソッドには次のパラメータがあります。Parameterタイプ説明hoststring または
MongoインスタンスautoEncryptionOptsドキュメント
任意 。使用中の暗号化 を有効にするための構成パラメーター。
autoEncryptionOptsは、データベース接続の既存の使用中の暗号化構成を上書きします。省略した場合、Mongo()は現在のデータベース接続の使用中の暗号化構成を継承します。AutoEncryptionOpts使用方法と構文の詳細については、 を参照してください。apiドキュメント
任意。 Stable API を有効にするための構成オプション。
api使用方法と構文の詳細については、 を参照してください。
Tip
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
AutoEncryptionOpts
autoEncryptionOptsドキュメントでは、使用中の暗号化の構成オプションを指定します。データベース接続に既存の使用中の暗号化構成がある場合、autoEncryptionOpts はその構成を上書きします。MongoDBは、使用中の暗号化に対して、クライアント側フィールド レベルの暗号化とQueryable Encryption2 つのアプローチを提供します。
たとえば、クライアント側のフィールドレベル暗号化コマンドライン オプションを使用してmongoshを起動すると、その接続のクライアント側暗号化が有効になります。 を使用して作成された新しいデータベース接続は、Mongo() に Mongo()が含まれてい ない限りautoEncryptionOpts 、暗号化設定を継承します。
autoEncryptionOptsドキュメントの構文は次のとおりです。
{ "keyVaultClient" : <object>, "keyVaultNamespace" : "<string>", "kmsProviders" : <object>, "schemaMap" : <object>, "bypassAutoEncryption" : <boolean>, "tlsOptions": <object>, "encryptedFieldsMap": <object> }
autoEncryptionOptsドキュメントは次のパラメータを取ります。
Parameter | タイプ | 説明 | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| (任意)キーヴォールトコレクションをホストしている MongoDB クラスター。 クラスターを指す
| |||||||||||||||||||||||||||
| string | (必須)キーヴォールト コレクションの完全な名前空間。 | |||||||||||||||||||||||||||
| ドキュメント | (必須) CMK(Customer Master Key)を管理するためにクライアント側のフィールドレベル暗号化で使用されるKMS ( KMS )。 クライアント側のフィールドレベル暗号化では、データ暗号化キーの暗号化と復号化に CMK を使用します。 クライアント側のフィールドレベル暗号化は、次の KMS プロバイダーをサポートしています。 可能であれば、 で提供される認証情報を環境変数として定義し、 オプションを使用して
| |||||||||||||||||||||||||||
| ドキュメント | (任意) JSON スキーマドラフト 4 標準構文と暗号化固有のキーワードを使用して指定された、自動クライアント側のフィールドレベル暗号化ルール。このオプションは 詳細なドキュメントについては、「暗号化スキーマ 」を参照してください。 | |||||||||||||||||||||||||||
| ブール値 | (任意) | |||||||||||||||||||||||||||
| ブール値 | (任意) | |||||||||||||||||||||||||||
| ブール値 | (任意)自動暗号化と自動復号化のいずれも使用するには、 | |||||||||||||||||||||||||||
| オブジェクト | (任意)次に使用する PEM形式の TLSクライアント証明書と秘密キーファイル( | |||||||||||||||||||||||||||
| ドキュメント | (任意) Queryable Encryptionの暗号化されたフィールドの詳細については、暗号化されたフィールド と 有効なクエリ を参照してください。 |
api
apiパラメーターは、 Stable APIの構成オプションを指定します。 次のオプションを使用して、オプションの動作を有効または無効にすることができます。
オプション | タイプ | 説明 |
|---|---|---|
version | string | API バージョンを指定します。 |
strict | ブール値 |
指定しない場合、デフォルトで |
deprecationErrors | ブール値 |
指定しない場合、デフォルトで |
apiパラメータの構文は次のとおりです。
{ api: { version: <string>, strict: <boolean>, deprecationErrors: <boolean> } }
例
MongoDB クラスターへの接続
次の操作では、 mongoshセッション内から新しい接続オブジェクトが作成されます。
cluster = Mongo("mongodb://mymongo.example.net:27017/?replicaSet=myMongoCluster")
clusterオブジェクトに対して操作を発行して、 mymongo.example.net:27017クラスターと対話します。
myDB = cluster.getDB("myDB"); //returns the database object myColl = myDB.getCollection("myColl"); // returns the collection object
クライアント側の暗号化が有効になっているクラスターへの接続
暗号化されたクライアントの作成
データベース接続を作成するには、クライアント側のフィールドレベル暗号化オプションが構成されたMongo()コンストラクターを使用します。 mongodb://myMongo.example.net URI を、ターゲット クラスターの接続string 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バイトの string を生成し、改行を含まない
キーを読み込むには、
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" } )
taxidtaxid-short指定された自動暗号化ルールは、指定されたデータ暗号化キーとアルゴリズムを使って フィールドと フィールドを暗号化します。正しい KMSと指定されたデータ暗号化キーにアクセスするために構成されたクライアントのみが フィールドを復号化できます。
次の操作では、 mongoshセッション内から新しい接続オブジェクトが作成されます。 mongo.tlsOptionsオプションを使用すると、KMS プロバイダーとして KMIP を使用する接続が有効になります。
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セッション内から新しい接続オブジェクトが作成されます。 The api option enables Stable API V1 and specifies that you cannot run deprecated command or commands outside of the 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 コマンド 」を参照してください。