Docs Menu
Docs Home
/ /

db.createEncryptedCollection()(mongoshメソッド)

バージョン 7.0 で追加

db.createEncryptedCollection(collName, options)

db.createEncryptedCollection() は、現在のデータベースに collName で指定された暗号化コレクションを作成します。

このメソッドは、ClientEncryption.createEncryptedCollection() encryptedFields.fields[*].keyIdnull または 定義で省略されている場合にデータキーを自動的に作成するoptions.createCollectionOptions.encryptedFields を囲むラッパーです。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

db.createEncryptedCollection() の構文は次のとおりです。

db.createEncryptedCollection(
collName,
{
provider: kmsProviderName,
createCollectionOptions: encryptedFieldsMap,
masterKey: customerMasterKeyCredentials
}
)

db.createEncryptedCollection() 次のフィールドを取ります。

フィールド
タイプ
必要性
説明

collName

string

必須

現在のデータベースで暗号化するコレクションの名前。

options

ドキュメント

必須

暗号化されたコレクションを構成するオプション。

options.provider

string

必須

CMK の保存に使用している KMS。

options.createCollectionOptions

ドキュメント

必須

暗号化するフィールド。encryptedFields ドキュメントを含める必要があります。 ドキュメントを構成する方法の詳細については、「 手順encryptedFields 」を参照してください。

options.masterKey

ドキュメント

任意

KMS プロバイダーがAWS、 GCP、またはAzureである場合に、マスター キーにアクセスするために必要な認証情報とキー識別フィールドを指定します。 KMS プロバイダーが local の場合は任意。

mongoshクライアント側のフィールド レベルとQueryable Encryptionメソッドでは、クライアント側の暗号化用に構成されたデータベース接続が必要です。 現在のデータベース接続がクライアント側のフィールド レベル暗号化を有効にして開始されなかった場合、次のいずれかが発生します。

or

db.createEncryptedCollection()メソッドは現在のdb mongoshのコンテキストで実行され、現在の セッションと同じQueryableClientEncryption.createEncryptedCollection() Encryptionが有効な接続を使用します。内部的には、現在のデータベース名、指定されたコレクション名、指定されたオプションドキュメントを使用して を呼び出します。

options.createCollectionOptions.encryptedFields.fields[*].keyIdnull または省略されている場合、メソッドはキーヴォールトに必要なデータキーを自動的に作成し、作成されたコレクションの encryptedFields 定義に対応する keyId 値を入力します。

次の例では、Queryable Encryption 構成にローカルで管理されている KMS を使用しています。

1
  1. mongosh を起動する

    実行:

    mongosh --nodb

    --nodb は、データベースに接続しないことを意味します。

  2. キーstringの生成

    基本64 96バイトの string を生成する:

    const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64")
  3. 暗号化オプション オブジェクトの作成

    クライアント側のフィールドレベル暗号化オプションオブジェクトを作成するには、前のステップのTEST_LOCAL_KEY string を使用します。

    var autoEncryptionOpts = {
    "keyVaultNamespace" : "encryption.__dataKeys",
    "kmsProviders" : {
    "local" : {
    "key" : BinData(0, TEST_LOCAL_KEY)
    }
    }
    }
  4. 暗号化されたクライアント オブジェクトの作成

    暗号化されたクライアントオブジェクトを作成するには、 Mongo()コンストラクターを使用します。 mongodb://myMongo.example.net URI を、ターゲットクラスターの接続string URIに置き換えます。 (例: )。

    encryptedClient = Mongo(
    "mongodb://myMongo.example.net:27017/?replSetName=myMongo",
    autoEncryptionOpts
    )
2

暗号化するフィールドを指定するには、次のようにencryptedFieldsMapを作成します。

const encryptedFieldsMap = {
encryptedFields: {
fields: [
{
path: "secretField",
bsonType: "string",
queries: { queryType: "equality" },
// keyId omitted; db.createEncryptedCollection() generates it
},
],
},
};
3

現在のデータベースのヘルパーを使用して暗号化された enc.usersコレクションを作成します。

const encDb = encryptedClient.getDB("enc");
let result = encDb.createEncryptedCollection(
"users",
{
provider: "local",
createCollectionOptions: encryptedFieldsMap,
masterKey: {} // masterKey is optional when provider is local
}
);
4

db.createEncryptedCollection() は、作成されたコレクション名とコレクションの encryptedFields 定義を含む結果オブジェクトを返します。

result.collection の値をチェックして、コレクションが目的の場所に作成されていることを確認し、オプションで入力された encryptedFields を検査します。

enc> result.collection
enc.users
enc> result.encryptedFields
{
fields: [
{
path: "secretField",
bsonType: "string",
queries: { queryType: "equality", /* ... */ },
keyId: UUID("...")
}
]
}

戻る

db.createCollection

項目一覧