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

ClientEncryption.createEncryptedCollection()

項目一覧

  • 構文
  • コマンドフィールド
  • 動作
  • 詳細

バージョン 7.0 で追加

ClientEncryption.createEncryptedCollection(dbName, collName, clientEncOpts)

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

ClientEncryption.createEncryptedCollection の構文は次のとおりです。

clientEncryption = db.getMongo().getClientEncryption()
clientEncryption.createEncryptedCollection(
dbName,
collName,
{
provider: kmsProviderName,
createCollectionOptions: encryptedFieldsMap,
masterKey: customerMasterKeyCredentials
}
)

createEncryptedCollection 次のフィールドを取ります。

フィールド
タイプ
必要性
説明
dbName
string
必須
暗号化するデータベースの名前。
collName
string
必須
暗号化するコレクションの名前。
clientEncOpts
ドキュメント
必須
暗号化されたコレクションを構成するオプション。
clientEncOpts.provider
string
必須
CMK の保存に使用している KMS。
clientEncOpts.createCollectionOptions
ドキュメント
必須
暗号化するフィールド。 encryptedFieldsMapオブジェクトを構成する方法の詳細については、「 手順」を参照してください。
clientEncOpts.masterKey
ドキュメント
任意
KMSプロバイダーがAmazon Web Services 、 GCP 、またはAzureである場合に、マスター キーを取得する方法。

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

or

次の例では、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

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

const encryptedFieldsMap = {
encryptedFields: {
fields: [
{
path: "secretField",
bsonType: "string",
queries: { queryType: "equality" },
},
],
},
};
3

暗号化されたenc.usersコレクションを作成します。

clientEncryption = encryptedClient.getClientEncryption();
var result = clientEncryption.createEncryptedCollection(
"enc",
"users",
{
provider: "local",
createCollectionOptions: encryptedFieldsMap,
masterKey: {} // masterKey is optional when provider is local
}
)
4

createEncryptedCollection は、多数のフィールドを持つ大きな結果オブジェクトを返します。 result.collectionの値を確認して、コレクションが目的の場所で作成されたことを確認します。

enc> result.collection
enc.users

戻る

クライアントサイドのフィールド レベル暗号化