静态加密:它在 Amazon Keyspaces 中如何运作 - Amazon Keyspaces(Apache Cassandra 兼容)

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

静态加密:它在 Amazon Keyspaces 中如何运作

Amazon Keyspaces(Apache Cassandra 兼容)静态加密使用 256 位高级加密标准 (AES-256) 来加密数据。这有助于保护您的数据,防止对底层存储进行未经授权的访问。默认情况下,Amazon Keyspaces 表中的所有客户数据都进行了静态加密,服务器端加密是透明的,这意味着不需要对应用程序进行更改。

静态加密集成 AWS Key Management Service (AWS KMS),管理用于加密表的加密密钥。在创建新表或更新现有表时,您可以选择以下 AWS KMS 密钥选项之一:

  • AWS 拥有的密钥:这是默认加密类型。此密钥由 Amazon Keyspaces 拥有(不另外收费)。

  • 客户自主管理型密钥:此密钥存储在您的账户中,由您创建、拥有和管理。您对客户自主管理型密钥拥有完全控制权(收取 AWS KMS 费用)。

AWS KMS 密钥(KMS 密钥)

静态加密使用 AWS KMS 密钥保护您的所有 Amazon Keyspaces 数据。默认情况下,Amazon Keyspaces 使用 AWS 拥有的密钥,即在 Amazon Keyspaces 服务账户中创建并管理的多租户加密密钥。

但是,您可以使用 AWS 账户中的客户自主管理型密钥加密 Amazon Keyspaces 表。您可以为键空间中的每个表选择不同的 KMS 密钥。您为表选择的 KMS 密钥也用于加密其所有元数据和可恢复备份。

您可以在创建或更新表时为表选择 KMS 密钥。您可以随时在 Amazon Keyspaces 控制台中或使用 ALTER TABLE 语句更改表的 KMS 密钥。切换 KMS 密钥的过程是无缝的,不需要停机,也不会降低服务质量。

密钥层次结构

Amazon Keyspaces 使用密钥层次结构来加密数据。在这个密钥层次结构中,KMS 密钥是根密钥。它用于加密和解密 Amazon Keyspaces 表加密密钥。表加密密钥用于加密 Amazon Keyspaces 在内部使用的加密密钥(用于在执行读取和写入操作时加密和解密数据)。

利用加密密钥层次结构,您可以对 KMS 密钥进行更改,而无需重新加密数据,也不会影响应用程序和正在进行的数据操作。

显示了根密钥、表加密密钥和用于静态加密的数据加密密钥的密钥层次结构。
表密钥

Amazon Keyspaces 表密钥用作密钥加密密钥。Amazon Keyspaces 使用表密钥来保护内部数据加密密钥,后者用于加密存储在表、日志文件和可恢复备份中的数据。Amazon Keyspaces 会为表中的每个底层结构生成唯一的数据加密密钥。但是,多个表行可能受同一个数据加密密钥的保护。

首次将 KMS 密钥设置为客户自主管理型密钥时,AWS KMS 会生成一个数据密钥。AWS KMS 数据密钥是指 Amazon Keyspaces 中的表密钥。

当您访问加密表时,Amazon Keyspaces 会向 AWS KMS 发送请求以使用 KMS 密钥解密表密钥。然后,它会使用明文表密钥来解密 Amazon Keyspaces 数据加密密钥,并使用明文数据加密密钥来解密表数据。

Amazon Keyspaces 在 AWS KMS 外部使用和存储表密钥及数据加密密钥。它会借助高级加密标准 (AES) 加密和 256 位加密密钥保护所有密钥。然后,它会将加密密钥与加密数据存储在一起,这样您就可以根据需要使用它们来解密表数据。

表密钥缓存

为了避免针对每个 Amazon Keyspaces 操作调用 AWS KMS,Amazon Keyspaces 会针对每个连接将明文表密钥缓存在内存中。如果 Amazon Keyspaces 在处于不活动状态 5 分钟后收到了针对缓存表密钥的请求,它会向 AWS KMS 发送新请求以解密表密钥。此调用将捕获自上次请求解密表密钥以来对 AWS KMS 或 AWS Identity and Access Management (IAM) 中的 KMS 密钥的访问策略所做的任何更改。

信封加密

如果您更改了表的客户自主管理型密钥,Amazon Keyspaces 会生成新的表密钥。然后,它会使用新的表密钥来重新加密数据加密密钥。它还会使用新的表密钥来加密用于保护可恢复备份的先前表密钥。此过程称为信封加密。这将确保即使您轮换了客户自主管理型密钥,您仍然可以访问可恢复备份。有关信封加密的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的信封加密

AWS 拥有的密钥

AWS 拥有的密钥不存储在 AWS 账户中。它们是 AWS 拥有和管理的用于多个 AWS 账户的 KMS 密钥集合的一部分。AWS 服务可以使用 AWS 拥有的密钥保护数据。

您无法查看、管理或使用 AWS 拥有的密钥,也无法审计其使用情况。但是无需执行任何工作或更改任何计划即可保护用于加密数据的密钥。

使用 AWS 拥有的密钥无需支付月费或使用费,并且它们不会计入您账户的 AWS KMS 限额。

客户托管密钥

客户自主管理型密钥是您在 AWS 账户中创建、拥有和管理的密钥。您对此类 KMS 密钥拥有完全控制权。

使用客户托管密钥可获得以下功能:

客户自主管理型密钥会针对每个 API 调用产生费用,并且此类 KMS 密钥具有 AWS KMS 限额。有关更多信息,请参阅 AWS KMS 资源或请求限额

当您将客户自主管理型密钥指定为表的根加密密钥时,系统将使用创建备份时为表指定的加密密钥对可恢复备份进行加密。如果表的 KMS 密钥进行了轮换,则密钥信封加密可确保最新的 KMS 密钥有权访问所有可恢复备份。

Amazon Keyspaces 必须有权访问您的客户自主管理型密钥才能让您有权访问您的表数据。如果加密密钥的状态设置为“已禁用”或将按计划删除,Amazon Keyspaces 将无法加密或解密数据。因此,您无法对表执行读取和写入操作。一旦服务检测到您的加密密钥无法访问,Amazon Keyspaces 会立即向您发送电子邮件通知以提醒您。

您必须在七天内恢复对加密密钥的访问权限,否则 Amazon Keyspaces 会自动删除您的表。作为预防措施,Amazon Keyspaces 会在删除表之前为表数据创建可恢复备份。Amazon Keyspaces 会将可恢复备份保留 35 天。35 天后,您将无法再恢复表数据。您无需为可恢复备份付费,但需要支付标准恢复费用

您可以使用这个可恢复备份将数据恢复到新表。要启动恢复操作,必须启用用于表的最后一个客户自主管理型密钥,且 Amazon Keyspaces 必须有权访问它。

注意

当您创建使用客户自主管理型密钥进行加密的表时,如果该密钥在创建过程完成之前不可访问或将按计划删除,则会发生错误。创建表操作将失败,并且您将收到电子邮件通知。

静态加密使用注意事项

在 Amazon Keyspaces 中使用静态加密时,请注意以下事项。

  • 服务器端静态加密已在所有 Amazon Keyspaces 表上启用且无法禁用。整个表都进行了静态加密,您无法选择特定的列或行进行加密。

  • 默认情况下,Amazon Keyspaces 使用单服务默认密钥(AWS 拥有的密钥)来加密您的所有表。如果此密钥不存在,系统会为您创建一个。服务默认密钥无法禁用。

  • 静态加密仅加密持久存储介质上的静态数据。如果对于正在传输的数据或正在使用的数据而言,数据安全性很重要,则必须执行额外措施:

    • 传输中数据:Amazon Keyspaces 中的所有数据都在传输中加密。默认情况下,与 Amazon Keyspaces 的通信将通过安全套接字层 (SSL)/传输层安全性协议 (TLS) 加密进行保护。

    • 正在使用的数据:在将数据发送到 Amazon Keyspaces 之前使用客户端加密保护数据。

    • 客户自主管理型密钥:表中的静态数据始终使用客户自主管理型密钥进行加密。但是,对多行执行原子更新的操作将在处理过程中使用 AWS 拥有的密钥临时加密数据。这包括范围删除操作以及同时访问静态和非静态数据的操作。

  • 一个客户自主管理型密钥最多可以有 50000 个授权。与客户自主管理型密钥关联的每个 Amazon Keyspaces 表使用 2 个授权。删除表会释放一个授权。第二个授权用于创建表的自动快照,防止在 Amazon Keyspaces 无意中失去对客户自主管理型密钥的访问权限时发生数据丢失。此授权将在删除表后 42 天释放。