Mongo()
項目一覧
説明
Mongo(host, autoEncryptionOpts, api)
mongosh
または JavaScript ファイルからデータベース接続をインスタンス化するための JavaScript コンストラクター。Mongo()
メソッドには次のパラメータがあります。Parameterタイプ説明host
string任意。 ホスト。形式は
<host>
または<host><:port>
のいずれかです。省略した場合、
Mongo()
はデフォルトのポート27017
でローカルホスト インターフェースへの接続をインスタンス化します。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> }
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 オプション 」を参照してください。 |
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
クライアント側の暗号化が有効になっているクラスターへの接続
キー:
基本的な64でエンコードされた96バイトの string を生成し、改行を含まない
キーを読み込むには、
mongosh
を使用します。
export TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')") mongosh --nodb
次の操作では、 mongosh
セッション内から新しい接続オブジェクトが作成されます。 AutoEncryptionOpts
オプションは、ローカルに管理されているキーを使用してクライアント側のフィールドレベル暗号化を有効にするために必要なオプションを指定します。
var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, process.env["TEST_LOCAL_KEY"]) } } } 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"); // returns object for managing data encryption keys keyVault = cluster.getKeyVault(); // returns object for explicit encryption/decryption clientEncryption = cluster.getClientEncryption();
クライアント側のフィールドレベル暗号化メソッドの完全なリストについては、「 クライアント側フィールドレベル暗号化メソッド 」を参照してください。
自動クライアント側暗号化が有効になっているクラスターへの接続
ローカルで管理されているキーに対してクライアント側のフィールドレベル暗号化を構成するには、基本的に64でエンコードされた96バイトの string を指定する必要があります。 次の操作では、前述の要件を満たすキーを生成し、それをmongosh
にロードします。
TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')") mongosh --nodb --shell --eval "var TEST_LOCAL_KEY='$TEST_LOCAL_KEY'"
次の操作では、 mongosh
セッション内から新しい接続オブジェクトが作成されます。 AutoEncryptionOpts
オプションは、 hr.employees
コレクションで自動クライアント側暗号化を有効にするために必要なオプションを指定します。
var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0,"BASE64-ENCODED-96-BYTE-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と指定されたデータ暗号化キーにアクセスするために構成されたクライアントのみが フィールドを復号化できます。
クライアント側のフィールドレベル暗号化メソッドの完全なリストについては、「 クライアント側フィールドレベル暗号化メソッド 」を参照してください。
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 コマンド 」を参照してください。