

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

# 資料金鑰快取
<a name="data-key-caching"></a>

*資料金鑰快取*會將[資料金鑰](concepts.md#DEK)和[相關加密資料](data-caching-details.md#cache-entries)全部儲存到快取中。當您加密或解密資料時， 會在快取中 AWS Encryption SDK 尋找相符的資料金鑰。如果找到符合的金鑰，它就會使用該快取資料金鑰，而不會產生新的金鑰。資料金鑰快取可以提升效能、降低成本，並且讓您在應用程式規模不斷擴展時維持不超過服務用量。

應用程式在下列條件下能發揮資料金鑰快取優勢：
+ 它可以重複使用資料金鑰。
+ 它會產生大量的資料金鑰。
+ 您的加密操作會異常地變慢速度、成本昂貴、效能受限或過度使用資源。

快取可以減少您對密碼編譯服務的使用，例如 AWS Key Management Service (AWS KMS)。如果服務到達 [AWS KMS requests-per-second limit](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second)，這時快取就能助您一臂之力。您的應用程式可以使用快取金鑰來服務某些資料金鑰請求，而不是呼叫 AWS KMS。（您也可以在[AWS 支援中心](https://console.aws.amazon.com/support/home#/)建立案例，以提高帳戶的限額。)

 AWS Encryption SDK 可協助您建立和管理資料金鑰快取。它提供[本機快取](data-caching-details.md#simplecache)和[快取密碼編譯資料管理員](data-caching-details.md#caching-cmm) （快取 CMM)，其會與快取互動並強制執行您設定[的安全閾值](thresholds.md)。這些元件在整合運作之後，能夠讓您透過重複使用資料金鑰提高產能效率，同時維護系統安全性。

資料金鑰快取是 的選用功能 AWS Encryption SDK ，您應謹慎使用。根據預設， 會為每個加密操作 AWS Encryption SDK 產生新的資料金鑰。這項技術能支援加密操作的最佳實務，而這種做法並不鼓勵過度重複使用資料金鑰。一般而言，資料金鑰快取只會在為了滿足效能目標時才會啟用。接著，請使用資料金鑰快取[安全性閾值](thresholds.md)，確保您是使用最低快取數來達成成本和效能目標。

3.*x* 版 適用於 JAVA 的 AWS Encryption SDK 僅支援使用舊版主金鑰提供者界面的快取 CMM，不支援 keyring 界面。不過， AWS Encryption SDK 適用於 .NET 的 4.*x* 版和更新版本、適用於 Rust **的 3.*x* 適用於 JAVA 的 AWS Encryption SDK版 適用於 Python 的 AWS Encryption SDK、 AWS Encryption SDK 適用於 Rust 的 1.*x* 版和 AWS Encryption SDK 適用於 Go 的 0.1.*x* 版或更新版本支援[AWS KMS 階層式 keyring](use-hierarchical-keyring.md)，這是替代的密碼編譯資料快取解決方案。使用 AWS KMS 階層式 keyring 加密的內容只能使用階層式 keyring AWS KMS 解密。

如需這些安全權衡的詳細討論，請參閱 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/)。

**Topics**
+ [如何使用資料金鑰快取](implement-caching.md)
+ [設定快取安全性閾值](thresholds.md)
+ [資料金鑰快取詳細資訊](data-caching-details.md)
+ [資料金鑰快取範例](sample-cache-example.md)