簡體   English   中英

Mongo CSFLE 數據加密密鑰一次或批量獲取

[英]Mongo CSFLE Data encryption keys fetched once or in batches

在 MongoDB 客戶端字段級別加密中,當我們加密記錄並在密鑰庫中有多個數據加密密鑰(請不要將其與主密鑰混淆)時,如果我們在單個查詢中獲取多條記錄,例如 X 記錄有 1 個字段使用 Y 個不同的數據加密密鑰加密,我想了解驅動程序如何處理這些數據加密密鑰的獲取。 我可以想到下面列出的幾種方法來處理它,但想了解確切的行為以最終確定我們的方法。

  1. 它獲取 X 條記錄並在解密每條記錄時調用以獲取用於加密該特定記錄的數據加密密鑰。 因此,一起進行 X db 調用以獲取密鑰。
  2. 與上面相同,但是當它獲取數據加密密鑰時,它將其存儲在 memory 中,以便在任何其他未解密記錄使用相同的數據加密密鑰時重復使用。 在這種方法中,它會調用 Y db 來獲取密鑰。
  3. 它獲取 X 條記錄並列出所有使用的不同鍵標識符。 進行單個數據庫調用以獲取所有這些不同的數據加密密鑰。 在這種方法中,它會進行一次 db 調用來獲取所有鍵。
  4. 別的辦法。

如果有人知道它是如何實現的,請分享。

TIA

密鑰管理發生在libmongocrypt庫中。

它似乎根據需要單獨請求每個密鑰,並將其緩存在本地以供以后使用。

這似乎與您的#2 場景一致。

我自己通過生成 3 個數據加密密鑰 (DEK) 和使用這些加密並存儲在 DB 中的多個記錄 (R) 進行了嘗試。 當我獲取所有記錄時,它使用對 3 個 DEK ID 的 $in 查詢進行查詢以獲取所有 3 個 DEK。 所以,看起來像下面的場景 3。這個觀察是針對小數據集的。 可能是如果 DEK 太多,它可能會嘗試對 DEK 進行不同的批處理調用,不確定。 但至少我能夠確認它將批量獲取 DEK,這有助於提高性能。

希望這些信息對其他人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM