Docs Menu
Docs Home
/
MongoDB マニュアル
/ / /

Mongo()

項目一覧

  • 説明
  • ClientSideFieldLevelEncryptionOptions
  • api
  • MongoDB クラスターへの接続
  • クライアント側の暗号化が有効になっているクラスターへの接続
  • 自動クライアント側暗号化が有効になっているクラスターへの接続
  • Stable API が有効になっているクラスターへの接続
Mongo(host, ClientSideFieldLevelEncryptionOptions, api)

mongoshまたは JavaScript ファイルからデータベース接続をインスタンス化するための JavaScript コンストラクター。

Mongo()メソッドには次のパラメータがあります。

Parameter
タイプ
説明
host
string

任意。 ホスト。形式は<host>または<host><:port>のいずれかです。

省略した場合、 Mongo()はデフォルトのポート27017でローカルホスト インターフェースへの接続をインスタンス化します。

ClientSideFieldLevelEncryptionOptions
ドキュメント

任意クライアント側フィールドレベル暗号化を有効にするための構成パラメータ。

ClientSideFieldLevelEncryptionOptions は、データベース接続の既存のクライアント側のフィールドレベル暗号化構成を上書きします。 省略した場合、 Mongo()は現在のデータベース接続のクライアント側のフィールドレベル暗号化構成を継承します。

使用方法と構文の詳細については、 ClientSideFieldLevelEncryptionOptionsを参照してください。

api
ドキュメント

任意Stable API を有効にするための構成オプション。

使用方法と構文の詳細については、 apiを参照してください。

Tip

以下も参照してください。

ClientSideFieldLevelEncryptionOptionsドキュメントでは、クライアント側フィールドレベル暗号化 の構成オプションを指定します。 データベース接続に既存のクライアント側のフィールドレベル暗号化構成がある場合は、 ClientSideFieldLevelEncryptionOptionsを指定するとその構成が上書きされます。

たとえば、クライアント側のフィールドレベル暗号化mongosh コマンドライン オプション を使用して を起動すると、その接続のクライアント側暗号化が有効になります。に Mongo()が含まれてい Mongo()ない限り 、 を使用して作成された新しいデータベース接続は、暗号化設定を継承します。ClientSideFieldLevelEncryptionOptions

ClientSideFieldLevelEncryptionOptionsドキュメントの構文は次のとおりです。

{
"keyVaultClient" : <object>,
"keyVaultNamespace" : "<string>",
"kmsProviders" : <object>,
"schemaMap" : <object>,
"bypassAutoEncryption" : <boolean>
}

ClientSideFieldLevelEncryptionOptionsドキュメントは次のパラメータを取ります。

Parameter
タイプ
説明
keyVaultClient
Mongo() 最大数。

(任意)キーヴォールトコレクションをホストしている MongoDB クラスター。

クラスターを指すMongo()接続オブジェクトを指定します。

var keyVaultClient = Mongo(<MongoDB URI>);
var ClientSideFieldLevelEncryptionOptions = {
"keyVaultClient" : keyVaultClient,
"keyVaultNamespace" : "<database>.<collection>",
"kmsProviders" : { ... }
}

keyVaultClientが省略されている場合、 ClientSideFieldLevelEncryptionOptionsドキュメントを含むMongo()オブジェクトに指定されたhostがキーヴォールト ホストとして使用されます。

keyVaultNamespace
string
(必須)キーヴォールト コレクションの完全な名前空間
kmsProviders
ドキュメント

(必須) CMK(Customer Master Key)を管理するためにクライアント側のフィールドレベル暗号化で使用されるKMS ( KMS )。 クライアント側のフィールドレベル暗号化では、データ暗号化キーの暗号化と復号化に CMK を使用します。

クライアント側のフィールドレベル暗号化は、次の KMS プロバイダーをサポートしています。

可能であれば、 で提供される認証情報を環境変数として定義し、 オプションを使用してkmsProviders mongosh--evalに渡すことを検討してください。これにより、認証情報がログに漏洩する可能性を最小限に抑えられます。 サポートされている KMS ごとのこのアプローチの例については、「データ暗号化キーの作成」を参照してください。

Amazon Web Services KMS

重要

Amazon Web Services KMSをサポートするには、 mongoshまたはMongoDB 4.2.2 以降のレガシーmongo shell使用します。 の4 。 2 。 0 と4 。 2 。 1 mongoshellAmazon Web ServicesKMSレガシーの は、KMS 応答オブジェクトの予期しない変更のため、 サービスをサポートしていません。SERVER-44721 を参照 詳しくは、 を参照してください。

次のフィールドを使用してawsドキュメントをkmsProvidersに指定します。

"kmsProviders" : {
"aws" : {
"accessKeyId" : "AWSAccessKeyId",
"secretAccessKey" : "AWSSecretAccessKey"
}
}

指定されたaccessKeyId ListReadは、KMS サービスに対するすべての 権限と 権限を持つ IAM ユーザーに対応する必要があります。

Azure Key Vault

次のフィールドを使用してazureドキュメントをkmsProvidersに指定します。

"kmsProviders" : {
"azure" : {
"tenantId" : "AzureTenantId",
"clientId" : "AzureClientId",
"clientSecret" : "AzureClientSecret"
}
}

バージョン 5.0 で追加

Google Cloud KMS

次のフィールドを使用してgcpドキュメントをkmsProvidersに指定します。

"kmsProviders" : {
"gcp" : {
"email" : "GCPEmail",
"privateKey" : "GCPPrivateKey"
}
}

バージョン 5.0 で追加

ローカルで管理されるキー

次のフィールドを使用して、 localドキュメントをkmsProvidersに指定します。

"kmsProviders" : {
"local" : {
"key" : BinData(0, "<96 byte base-64 encoded key>")
}
}

指定されるkey、 64でエンコードされた96バイトの string で、改行文字を含まない基本文字列である必要があります。

schemaMap
ドキュメント

(任意) JSON schema ドラフト4標準構文と暗号化固有のキーワードを使用して指定された、自動クライアント側のフィールドレベル暗号化ルール。

完全なドキュメントについては、「自動暗号化ルール 」を参照してください。

bypassAutoEncryption
ブール値
(任意) trueを指定すると、自動クライアント側のフィールドレベル暗号化ルールをバイパスし、フィールドごとの明示的(手動)暗号化が実行されます。

apiパラメーターは、 Stable APIの構成オプションを指定します。 次のオプションを使用して、オプションの動作を有効または無効にすることができます。

オプション
タイプ
説明
version
string
API バージョンを指定します。"1" は現在サポートされている唯一のバージョンです。
strict
ブール値
true場合:

strictを指定する場合は、 versionも指定する必要があります。

指定しない場合、デフォルトで false になります。

deprecationErrors
ブール値

trueの場合、指定された API バージョンで非推奨のコマンドまたは動作を使用すると、 APIDeprecationErrorが返されます。 deprecationErrorsを指定する場合は、 versionも指定する必要があります。

指定しない場合、デフォルトで false になります。

apiパラメータの構文は次のとおりです。

{ api: { version: <string>, strict: <boolean>, deprecationErrors: <boolean> } }

次の操作では、 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にロードします。

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セッション内から新しい接続オブジェクトが作成されます。 ClientSideFieldLevelEncryptionOptionsオプションは、ローカルに管理されているキーを使用してクライアント側のフィールドレベル暗号化を有効にするために必要なオプションを指定します。

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, TEST_LOCAL_KEY)
}
}
}
cluster = Mongo(
"mongodb://mymongo.example.net:27017/?replicaSet=myMongoCluster",
ClientSideFieldLevelEncryptionOptions
)

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セッション内から新しい接続オブジェクトが作成されます。 ClientSideFieldLevelEncryptionOptionsオプションは、 hr.employeesコレクションで自動クライアント側暗号化を有効にするために必要なオプションを指定します。

var ClientSideFieldLevelEncryptionOptions = {
"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",
ClientSideFieldLevelEncryptionOptions
)

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セッション内から新しい接続オブジェクトが作成されます。 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 コマンド 」を参照してください。

戻る

接続