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
2

ローカルで管理されているキーのクライアント側フィールドレベル暗号化を構成するには、改行を含まない base64 でエンコードされた 96 バイトのstringを生成します。

const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64")
3

生成されたローカルキー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

戻る

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