Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

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

バージョン 7.0 で追加

db.createEncryptedCollection(collName, options)

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

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

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

  • 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 セッションと同じQueryable 暗号化が有効な接続を使用します。内部的には、現在のデータベース名、指定されたコレクション名、指定されたオプションドキュメントを使用して ClientEncryption.createEncryptedCollection() を呼び出します。

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

項目一覧