AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

ClientEncryption.encryption.encrypt()(mongoshメソッド)

ClientEncryption.encrypt(keyId, value, algorithm or encOptions)

ClientEncryption.encrypt() encrypts the value using the specified keyId and the algorithm specified by algorithm or encOptions. encrypt() supports explicit (manual) encryption of field values.

次の値を返します。

サブタイプ6binary data を持つ オブジェクト。

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

  • MongoDB Atlas はクラウドでの MongoDB 配置のための完全管理サービスです
  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

clientEncryption = db.getMongo().getClientEncryption()
clientEncryption.encrypt(
keyId,
value,
algorithm or encOptions,
)
Parameter
タイプ
説明

keyId

UUID

valueの暗号化に使用するデータ暗号化キー。

The UUID is a BSON binary data object with subtype 4 that identifies a specific data encryption key. If the data encryption key does not exist in the key vault configured for the database connection, encrypt() returns an error. See Key Vault Collections for more information on key vaults and data encryption keys.

value

暗号化する値。

algorithm or encOptions

文字列またはドキュメント

  • クライアント側のフィールドレベル暗号化でフィールドを明示的に暗号化するには

    algorithmを string として指定するか、 encOptionsをフィールドalgorithmを含むドキュメントとして指定します。

    サポートされているアルゴリズムは次のとおりです。

    • AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic

    • AEAD_AES_256_CBC_HMAC_SHA_512-Random

    For examples, see Set the Client-Side Field Level Encryption Algorithm.

    サポートされている暗号化アルゴリズムに関する完全なドキュメントについては、「フィールドと暗号化タイプ 」を参照してください。

  • Queryable Encryptionを使用してフィールドを明示的に暗号化する方法

    algorithmを string として指定するか、 encOptionsをフィールドを含むドキュメントとして指定します。

    • algorithm: valueを暗号化するために使用する暗号化アルゴリズム。 サポートされているアルゴリズムは次のとおりです。

      • Indexed

      • Unindexed

    • contentionFactor: algorithmIndexedに設定されている場合に必須です。 このフィールドの値の頻度に関連します。

    • queryType: 現在サポートされているクエリタイプは"equality"のみです。 アルゴリズムがIndexedでない場合は、 queryTypeを設定する必要があります。

    For examples, see Set the Queryable Encryption Algorithm.

    サポートされている暗号化アルゴリズムの詳細については、「アルゴリズムの選択 」を参照してください。

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:

or

You cannot use encrypt() to encrypt values with the following BSON types:

  • minKey

  • maxKey

  • null

  • undefined

If encrypting a field using AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic, encrypt() does not support the following BSON types:

  • double

  • decimal128

  • bool

  • object

  • array

次の例では、クライアント側のフィールドレベル暗号化構成にローカルで管理されている 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

Retrieve the ClientEncryption object and use the ClientEncryption.encrypt() method to encrypt a value using a specific data encryption key UUID and encryption algorithm:

clientEncryption = encryptedClient.getClientEncryption();
clientEncryption.encrypt(
UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"),
"123-45-6789",
"AEAD_AES_256_CBC_HMAC_SHA_512-Random"
)

algorithmフィールドを持つドキュメントを使用してアルゴリズムを指定することもできます。

clientEncryption = encryptedClient.getClientEncryption();
clientEncryption.encrypt(
UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"),
"123-45-6789",
{ algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Random" }
)

If successful, encrypt() returns the encrypted value:

BinData(6,"AmTi2H3xaEk8u9+jlFNaLLkC3Q/+kmwDbbWrq+h9nuv9W+u7A5a0UnpULBNZH+Q21fAztPpU09wpKPrju9dKfpN1Afpj1/ZhFcH6LYZOWSBBOAuUNjPLxMNSYOOuITuuYWo=")

クライアント側のフィールドレベル暗号化を有効にして MongoDB 接続を開始する方法に関する詳細なドキュメントについては、 Mongo()を参照してください。

次の例では、Queryable Encryption 構成にローカルで管理されている KMS を使用しています。

1
  1. mongosh を起動する

    mongoshクライアントを起動します。

    mongosh --nodb
  2. キーの生成

    ローカルで管理されているキーに対してQueryable Encryptionを構成するには、base64 でエンコードされた 96 バイトのstring (改行を含まない)を生成します。

    const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64")
  3. Queryable Encryption オプションの作成

    生成されたローカルキー を使用して オプションを作成します。Queryable Encryptionstring

    var autoEncryptionOpts = {
    "keyVaultNamespace" : "encryption.__dataKeys",
    "kmsProviders" : {
    "local" : {
    "key" : BinData(0, TEST_LOCAL_KEY)
    }
    }
    }
  4. 暗号化されたクライアントの作成

    データベース接続を作成するには、構成された Queryable Encryption オプションでMongo()コンストラクターを使用します。 mongodb://myMongo.example.net URI を、ターゲットクラスターの接続string URIに置き換えます。

    encryptedClient = Mongo(
    "mongodb://myMongo.example.net:27017/?replSetName=myMongo",
    autoEncryptionOpts
    )
2

Retrieve the ClientEncryption object and use the ClientEncryption.encrypt() method to encrypt a value using a specific data encryption key UUID and encryption algorithm:

const eDB = "encrypted"
const eKV = "__keyVault"
const clientEncryption = encryptedClient.getClientEncryption();
const keyVaultClient = Mongo().getDB(eDB).getCollection(eKV)
const dek = keyVaultClient.findOne({ keyAltNames: "dataKey1" })
clientEncryption.encrypt(
dek._id,
"123-45-6789",
"Unindexed"
)

フィールドを含むドキュメントを使用してアルゴリズムを指定することもできます。

  • algorithm

  • queryType

  • contentionFactor

const eDB = "encrypted"
const eKV = "__keyVault"
const clientEncryption = encryptedClient.getClientEncryption();
const keyVaultClient = Mongo().getDB(eDB).getCollection(eKV)
const dek = keyVaultClient.findOne({ keyAltNames: "dataKey1" })
clientEncryption.encrypt(
dek._id,
"123-45-6789",
{
algorithm: "Indexed",
queryType: "equality",
contentionFactor: 4
}
)

If successful, encrypt() returns the encrypted value:

Binary(Buffer.from("05b100000005640020000000005ab3581a43e39a8e855b1ac87013e841735c09d19ae86535eea718dd56122ba50573002000000000703d2cba9832d90436c6c92eb232aa5b968cdcd7a3138570bc87ef0a9eb3a0e905630020000000009cb61df010b1bb54670a5ad979f25f4c48889059dfd8920782cf03dd27d1a50b05650020000000003f5acea703ea357d3eea4c6a5b19139a580089341424a247839fd4d5cf0d312a12636d00040000000000000000", "hex"), 6)

クライアント側のフィールドレベル暗号化を有効にして MongoDB 接続を開始する方法に関する詳細なドキュメントについては、 Mongo()を参照してください。

このページを評価