ClientEncryption.encryption()
ClientEncryption.encrypt(encryptionKeyId, value, encryptionAlgorithm)
ClientEncryption.encrypt()
は、指定されたencryptionKeyId
とencryptionAlgorithm
を使用してvalue
を暗号化します。encrypt()
は、フィールド値の明示的(手動)暗号化をサポートしています。次の値を返します。 サブタイプ6 を持つ binary data
オブジェクト 。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
clientEncryption = db.getMongo().getClientEncryption() clientEncryption.encrypt( encryptionKeyId, value, encryptionAlgorithm )
Parameter | タイプ | 説明 |
---|---|---|
|
|
|
| 暗号化する値。 | |
| string |
サポートされている暗号化アルゴリズムに関する詳細なドキュメントについては、「暗号化アルゴリズム 」を参照してください。 |
動作
データベース接続でのクライアント側のフィールドレベル暗号化の有効化
mongo
クライアント側のフィールドレベル暗号化メソッドでは、クライアント側のフィールドレベル暗号化が有効になっているデータベース接続が必要です。 現在のデータベース接続がクライアント側のフィールド レベル暗号化を有効にして開始されなかった場合、次のいずれかが発生します。
必要なクライアント側のフィールドレベル暗号化オプションとの接続を確立するには、
Mongo()
mongo
shell から コンストラクターを使用します。TheMongo()
method supports the following Key Management Service (KMS) providers for Customer Master Key (CMK) management:or
必要なオプションとの接続を確立するには、
mongo
shellコマンドライン オプションを使用します。 コマンドライン オプションは、CMK 管理用のAmazon Web Services KMSプロバイダーのみをサポートしています。
サポートされていない BSON types
encrypt()
は、次の BSON types による値の暗号化をサポートしていません。
minKey
maxKey
null
undefined
AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic
を使用してフィールドを暗号化する場合、 は次の をサポートしていませencrypt()
んBSON types 。
double
decimal128
bool
object
array
例
次の例では、クライアント側のフィールドレベル暗号化構成にローカルで管理されている KMS を使用しています。
ローカルで管理されているキーに対してクライアント側のフィールドレベル暗号化を構成するには、改行を含まない base64 でエンコードされた 96 バイトのstringを指定する必要があります。 次の操作では、前述の要件を満たすキーを生成し、それをmongo
shell にロードします。
TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')") mongosh --nodb --shell --eval "var TEST_LOCAL_KEY='$TEST_LOCAL_KEY'"
生成されたローカルキーstringを使用して、クライアント側のフィールドレベル暗号化オブジェクトを作成します。
var ClientSideFieldLevelEncryptionOptions = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, TEST_LOCAL_KEY) } } }
Mongo()
コンストラクターを使用して、クライアント側のフィールドレベル暗号化オプションを持つデータベース接続を作成します。 mongodb://myMongo.example.net
URI を、ターゲットクラスターの接続string URIに置き換えます。
encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", ClientSideFieldLevelEncryptionOptions )
ClientEncryption
オブジェクトを取得し、 ClientEncryption.encrypt()
メソッドを使用して、特定のデータ暗号化キーUUID
と暗号化アルゴリズムを使用して 値を暗号化します。
clientEncryption = encryptedClient.getClientEncryption(); clientEncryption.encrypt( UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"), "123-45-6789", "AEAD_AES_256_CBC_HMAC_SHA_512-Random" )
成功した場合、 encrypt()
は暗号化された 値を返します。
BinData(6,"AmTi2H3xaEk8u9+jlFNaLLkC3Q/+kmwDbbWrq+h9nuv9W+u7A5a0UnpULBNZH+Q21fAztPpU09wpKPrju9dKfpN1Afpj1/ZhFcH6LYZOWSBBOAuUNjPLxMNSYOOuITuuYWo=")
クライアント側のフィールドレベル暗号化を有効にして MongoDB 接続を開始する方法に関する詳細なドキュメントについては、 Mongo()
を参照してください。