バージョン7.0の新機能。
ClientEncryption.createEncryptedCollection(dbName, collName, clientEncOpts)ClientEncryption.createEncryptedCollectionは、dbNameで指定されたデータベースにcollNameで指定された暗号化コレクションを作成します。
Tip
In mongosh, you can use the helper db.createEncryptedCollection(), which runs in the context of the current database and automatically generates data keys when keyId values are not specified.
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
- MongoDB Atlas はクラウドでの MongoDB 配置のための完全管理サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
ClientEncryption.createEncryptedCollection の構文は次のとおりです。
clientEncryption = db.getMongo().getClientEncryption() clientEncryption.createEncryptedCollection( dbName, collName, { provider: kmsProviderName, createCollectionOptions: encryptedFieldsMap, masterKey: customerMasterKeyCredentials } )
コマンドフィールド
createEncryptedCollection 次のフィールドを取ります。
フィールド | タイプ | 必要性 | 説明 |
|---|---|---|---|
| string | 必須 | 暗号化するデータベースの名前。 |
| string | 必須 | 暗号化するコレクションの名前。 |
| ドキュメント | 必須 | 暗号化されたコレクションを構成するオプション。 |
| string | 必須 | CMK の保存に使用している KMS。 |
| ドキュメント | 必須 | 暗号化するフィールド。 |
| ドキュメント | 任意 | KMS プロバイダーがAWS、 GCP、またはAzureである場合に、マスター キーにアクセスするために必要な認証情報とキー識別フィールドを指定します。KMS プロバイダーが |
動作
The mongosh client-side field level and queryable encryption methods require a database connection configured for client-side encryption. If the current database connection was not initiated with client-side field level encryption enabled, either:
必要なクライアント側フィールドレベル暗号化オプションとの接続を確立するには、
mongoshからMongo()コンストラクターを使用します。Mongo()メソッドは、CMK(Customer Master Key)管理用に次のKMS ( KMS )プロバイダーをサポートしています。
or
- 必要なオプションとの接続を確立するには、
mongoshコマンドライン オプションを使用します。 コマンドライン オプションは、CMK 管理用のAmazon Web Services KMSプロバイダーのみをサポートしています。
例
次の例では、Queryable Encryption 構成にローカルで管理されている KMS を使用しています。
暗号化された接続の作成
mongosh を起動する
実行:
mongosh --nodb --nodbは、データベースに接続しないことを意味します。キーstringの生成
基本64 96バイトの string を生成する:
const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64") 暗号化オプション オブジェクトの作成
クライアント側のフィールドレベル暗号化オプションオブジェクトを作成するには、前のステップの
TEST_LOCAL_KEYstring を使用します。var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, TEST_LOCAL_KEY) } } } 暗号化されたクライアント オブジェクトの作成
暗号化されたクライアントオブジェクトを作成するには、
Mongo()コンストラクターを使用します。mongodb://myMongo.example.netURI を、ターゲットクラスターの接続string URIに置き換えます。 (例: )。encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", autoEncryptionOpts )
暗号化されたコレクションの作成
暗号化されたenc.usersコレクションを作成します。
clientEncryption = encryptedClient.getClientEncryption(); let result = clientEncryption.createEncryptedCollection( "enc", "users", { provider: "local", createCollectionOptions: encryptedFieldsMap, masterKey: {} // masterKey is optional when provider is local } )
詳細
クライアント側のフィールドレベル暗号化を有効にして MongoDB 接続を開始する方法に関する詳細なドキュメントについては、
Mongo()を参照してください。暗号化されたコレクションの作成およびクエリ方法の完全な例については、 Queryable Encryptionクイック スタート を参照してください。