Mongo()
項目一覧
説明
Mongo(host, autoEncryptionOpts, api)
mongosh
または JavaScript ファイルからデータベース接続をインスタンス化するための 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 | タイプ | 説明 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
keyVaultClient | Mongo() 最大数。 | (任意)キーヴォールトコレクションをホストしている MongoDB クラスター。 クラスターを指す
| |||||||||||||||||||||||||||
keyVaultNamespace | string | (必須)キーヴォールト コレクションの完全な名前空間。 | |||||||||||||||||||||||||||
kmsProviders | ドキュメント | (必須) CMK(Customer Master Key)を管理するためにクライアント側のフィールドレベル暗号化で使用されるKMS ( KMS )。 クライアント側のフィールドレベル暗号化では、データ暗号化キーの暗号化と復号化に CMK を使用します。 クライアント側のフィールドレベル暗号化は、次の KMS プロバイダーをサポートしています。 可能であれば、 で提供される認証情報を環境変数として定義し、 オプションを使用して
| |||||||||||||||||||||||||||
schemaMap | ドキュメント | (任意) JSON schema ドラフト4標準構文と暗号化固有のキーワードを使用して指定された、自動クライアント側のフィールドレベル暗号化ルール。 このオプションは 詳細なドキュメントについては、「暗号化スキーマ 」を参照してください。 | |||||||||||||||||||||||||||
bypassAutoEncryption | ブール値 | (任意) true を指定すると、自動クライアント側のフィールドレベル暗号化ルールをバイパスし、フィールドごとの明示的(手動)暗号化が実行されます。 | |||||||||||||||||||||||||||
bypassQueryAnalysis | ブール値 | (任意) crypt_shared ライブラリなしでインデックス付きフィールドで明示的な暗号化を使用するには、 true を指定します。 詳しくは、「 Queryable Encryption の MongoClient オプション 」を参照してください。 | |||||||||||||||||||||||||||
explicitEncryptionOnly | ブール値 | (任意)自動暗号化と自動復号化のいずれも使用するには、 true を指定します。 getKeyVault() とgetClientEncryption() を使用して明示的な暗号化を実行できます。 このオプションはschemaMap と排他関係にあります。 省略された場合、デフォルトはfalse となります。 | |||||||||||||||||||||||||||
tlsOptions | オブジェクト | (任意)次に使用する PEM形式の TLSクライアント証明書と秘密キーファイル( tlsCertificateKeyFile )、TLSクライアント証明書と秘密キーファイルパスワード( tlsCertificateKeyFilePassword )、または TLS 認証局ファイル( tlsCAFile )へのパスPEM形式で KMS に接続します。 これらのオプションの詳細については、「 TLS オプション 」を参照してください。 |
api
api
パラメーターは、 Stable APIの構成オプションを指定します。 次のオプションを使用して、オプションの動作を有効または無効にすることができます。
オプション | タイプ | 説明 |
---|---|---|
version | string | API バージョンを指定します。 "1" は現在サポートされている唯一のバージョンです。 |
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" } )
taxid
taxid-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 コマンド 」を参照してください。