设置缓存安全阈值 - AWS Encryption SDK

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置缓存安全阈值

在实施数据密钥缓存时,您需要配置缓存 CMM 强制执行的安全阈值。

安全阈值有助于限制每个缓存的数据密钥的使用时间长度,以及每个数据密钥保护的数据量。只有在缓存条目符合所有安全阈值时,缓存 CMM 才会返回缓存的数据密钥。如果缓存条目超过任何阈值,则不会在当前操作中使用该条目,并会尽快将其从缓存中逐出。每个数据密钥的第一次使用(在缓存之前)都不计入这些阈值内。

一般来说,请使用满足您的成本和性能目标所需的最低缓存量。

AWS Encryption SDK仅缓存使用密钥派生函数加密的数据密钥。此外,它还为某些阈值设置了上限。这些限制确保数据密钥的重用次数不会超过其加密限制。不过,由于缓存的是明文数据密钥(默认在内存中),请尽量缩短保存这些密钥的时间。此外,还要尽量限制在密钥泄露时可能会泄露的数据。

有关设置缓存安全阈值的示例,请参阅 AWS 安全博客中的 AWS Encryption SDK: How to Decide if Data Key Caching is Right for Your Application

注意

缓存 CMM 实施所有以下阈值。如果未指定可选的值,则缓存 CMM 使用默认值。

要临时禁用数据密钥缓存,AWS Encryption SDK 的 Java 和 Python 实现提供一个空加密材料缓存(空缓存)。空缓存为每个 GET 请求返回未命中,并且不响应 PUT 请求。建议您使用空缓存,而不是将缓存容量或安全阈值设置为 0。有关更多信息,请参阅 JavaPython 中的空缓存。

最长使用期限(必需)

确定缓存的条目的使用时长,从添加该条目时算起。此值为必填项。请输入一个大于 0 的值。AWS Encryption SDK不限制最长使用期限值。

AWS Encryption SDK 的所有语言实现都定义了以秒为单位的最长使用期,但使用毫秒的 AWS Encryption SDK for JavaScript 除外。

请尽可能使用最短的时间间隔,但前提是您的应用程序仍能从缓存中受益。您可以像密钥轮换策略一样使用最长使用期限阈值。可以使用该值限制数据密钥重用次数,最大限度减少加密材料泄露,以及逐出在缓存期间策略可能已发生变化的数据密钥。

加密的最大消息数(可选)

指定缓存的数据密钥可以加密的最大消息数。该值为可选项。请输入 1 到 2^32 之间的值。默认值为 2^32 个消息。

将每个缓存的密钥保护的消息数设置得足够大可以从重用中受益,但设置得足够小则可以限制在密钥泄露时可能会泄露的消息数。

加密的最大字节数(可选)

指定缓存的数据密钥可以加密的最大字节数。该值为可选项。请输入 0 到 2^63 - 1 之间的值。默认值为 2^63 - 1。在使用值 0 时,您只能在加密空消息字符串时使用数据密钥缓存。

在评估该阈值时,将包括当前请求中的字节数。如果已处理的字节数加上当前的字节数超过该阈值,即便是可能用于较小的请求,缓存的数据密钥也会从缓存中被逐出。