

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定快取安全性閾值
<a name="thresholds"></a>

當您實作資料金鑰快取時，您需要設定[快取 CMM](data-caching-details.md#caching-cmm) 強制執行的安全閾值。

這類安全性閾值能協助您限制每個已快取資料金鑰可使用的時間長短，以及依據每個資料金鑰可以保護的資料數量。快取 CMM 只會在快取項目符合所有安全閾值時傳回快取的資料金鑰。如果快取項目超過任何一個閾值，該項目就不能用於目前的操作，並將盡快從快取中移出。每個資料金鑰的初次使用 (在快取之前) 不會納入這些閾值中。

根據經驗，最好是使用數量最低、但能滿足成本和效能目標的快取數量。

 AWS Encryption SDK 唯一的 會快取使用金鑰[衍生函數加密的資料金鑰](https://en.wikipedia.org/wiki/Key_derivation_function)。此外，它會建立某些閾值的上限值。這些限制能確保，資料金鑰重複使用數量不會超過其加密限制。不過，因為您的純文字資料金鑰已經過快取處理 (預設是記憶體內快取)，所以請嘗試將金鑰儲存時間降到最短。此外，請嘗試限制會在金鑰遭洩時可能受到暴露的資料。

如需設定快取安全閾值的範例，請參閱 AWS 安全部落格中的[AWS Encryption SDK：如何判斷資料金鑰快取是否適合您的應用程式](https://aws.amazon.com/blogs/security/aws-encryption-sdk-how-to-decide-if-data-key-caching-is-right-for-your-application/)。

**注意**  
快取 CMM 會強制執行下列所有閾值。如果您未指定選用值，則快取 CMM 會使用預設值。  
若要暫時停用資料金鑰快取， 的 Java 和 Python 實作 AWS Encryption SDK 會提供 *null 密碼編譯資料快取* (null 快取）。Null 快取會為每個 `GET` 請求傳回錯過，而且不會回應任何 `PUT` 請求。建議您使用 null 快取，而不要將[快取容量](data-caching-details.md#simplecache)或安全性閾值設定為 0。如需詳細資訊，請參閱 [Java](https://aws.github.io/aws-encryption-sdk-java/com/amazonaws/encryptionsdk/caching/NullCryptoMaterialsCache.html) 和 [Python](https://aws-encryption-sdk-python.readthedocs.io/en/latest/generated/aws_encryption_sdk.caches.null.html) 中的 null 快取。

**最大存留期 (必要)**  
決定快取項目可以使用的時間長度，從項目加入起開始計時。此值為必填。輸入大於 0 的數值。 AWS Encryption SDK 不會限制最長存留期值。  
的所有語言實作都會以秒為單位 AWS Encryption SDK 定義最長存留期，但 適用於 JavaScript 的 AWS Encryption SDK使用毫秒的 除外。  
使用可讓應用程式繼續發揮快取優勢的最短間隔。您可以使用像金鑰輪換政策的最大存留期閾值。使用它來限制資料金鑰的重複使用，大幅降低加密資料暴露的風險，以及移出在受到快取時可能造成政策改變的資料金鑰。

**最大加密訊息數 (選用)**  
指定快取資料金鑰可以加密的最大訊息數。此值是選用的。請輸入介於 1 到 2^32 之間的訊息數。預設值為 2^32 則訊息。  
每個快取金鑰可以保護之訊息數量的設定值，應該要大至能夠取得重複使用次數值、但又能小至能夠限制當金鑰遭到洩漏時可能受到暴露的訊息數。

**最大加密位元組數 (選用)**  
指定快取資料金鑰可以加密的最大位元組數。此值是選用的。請輸入介於 0 到 2^63 - 1 之間的值。預設值為 2^63 - 1。值為 0 只允許您在加密空的訊息字串時使用資料金鑰快取。  
評估此閾值時，將會納入目前請求中的位元組。如果已處理的位元組加上目前位元組超過該閾值，則快取的資料金鑰從會從快取移出，即使該金鑰已用於較小的請求。