ElastiCache 中的静态加密 - ElastiCache 适用于 Redis 的 Amazon

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

ElastiCache 中的静态加密

为了帮助保护您的数据,Amazon ElastiCache 和 Amazon S3 提供了不同的方法来限制对缓存中的数据的访问。有关更多信息,请参阅 Amazon VPC 和 ElastiCache 安全性适用于 Amazon ElastiCache 的 Identity and Access Management

ElastiCache 静态加密功能可加密磁盘数据,从而提高数据安全性。无服务器缓存上始终启用该功能。在启用后,它会对以下方面进行加密:

  • 同步、备份和交换操作期间的磁盘

  • 存储在 Amazon S3 中的备份

在启用数据分层的集群中,存储在 SSD(固态硬盘)上的数据始终加密。

ElastiCache 提供默认(服务托管式)的静态加密,以及使用 AWS Key Management Service(KMS)中您自己的对称客户自主管理型 AWS KMS 密钥的功能。备份缓存后,在加密选项下,选择是使用默认加密密钥还是客户自主管理型密钥。有关更多信息,请参阅启用静态加密

注意

默认加密(服务托管式)是 GovCloud (US) 区域中唯一可用选项。

重要

在现有自行设计 Redis 集群上启用静态加密,涉及到在现有的复制组上运行备份和还原之后删除该复制组。

静态加密只能在创建缓存时在缓存上启用。由于加密和解密数据时需要进行一些处理,因此启用静态加密会对这些操作期间的性能产生影响。应对使用和不使用静态加密的数据进行基准测试,以确定对使用案例的性能影响。

静态加密条件

在规划 ElastiCache 静态加密的实现时,应牢记有关 ElastiCache 静态加密的以下约束:

  • 在运行 Redis 版本 3.2.6(计划终止生命周期,请参阅 Redis 版本生命周期终止计划)、4.0.10 或更高版本的复制组上支持静态加密。

  • 只有在 Amazon VPC 中运行的复制组支持静态加密。

  • 只有运行以下节点类型的复制组才支持静态加密。

    • R6gd、R6g、R5、R4、R3

    • M6g、M5、M4、M3

    • T4g、T3、T2

    有关更多信息,请参阅受支持的节点类型

  • 通过将参数 AtRestEncryptionEnabled 明确设置为 true 可启用静态加密。

  • 只有在创建复制组时才能在复制组中启用静态加密。无法通过修改复制组来开启和关闭静态加密。有关在现有复制组中实现静态加密的信息,请参阅启用静态加密

  • 如果集群使用 r6gd 系列的节点类型,则无论是否启用静态加密,存储在 SSD 上的数据都会加密。

  • 使用客户自主管理型密钥进行静态加密的选项在 AWS GovCloud(us-gov-east-1 和 us-gov-west-1)区域中不可用。

  • 如果集群使用 r6gd 系列的节点类型,则存储在 SSD 上的数据将使用所选客户自主管理型 AWS KMS 密钥进行加密(或在 AWS GovCloud 区域中使用服务托管加密)。

在备份和节点同步操作期间,实施静态加密可能会降低性能。使用自己的数据,对静态加密进行基准测试,然后与不加密情况进行比较,以确定其对实现性能的影响。

使用 AWS KMS 中的客户自主管理型密钥

ElastiCache 支持使用对称的客户自主管理型 AWS KMS 密钥(简称 KMS 密钥)进行静态加密。客户自主管理型 KMS 密钥是您在自己的 AWS 账户中创建、拥有并管理的加密密钥。有关更多信息,请参阅 AWS Key Management Service 开发人员指南中的 AWS KMS 密钥。必须先在 AWS KMS 中创建密钥,然后才能将其与 ElastiCache 一起使用。

要了解如何创建 AWS KMS 根密钥,请参阅 AWS Key Management Service 开发人员指南中的创建密钥

ElastiCache 允许与 AWS KMS 集成。有关更多信息,请参阅 AWS Key Management Service 开发人员指南中的使用授权。无需任何客户操作即可实现 Amazon ElastiCache 与 AWS KMS 的集成。

kms:ViaService 条件键将 AWS KMS 密钥(KMS 密钥)限制为仅用于指定 AWS 服务发送的请求。要将 kms:ViaService 与 ElastiCache 结合使用,请将两个 ViaService 名称包含在条件键值中:elasticache.AWS_region.amazonaws.comdax.AWS_region.amazonaws.com。有关更多信息,请参阅 kms:ViaService

您可以使用 AWS CloudTrail 来跟踪 Amazon ElastiCache 代表您向 AWS Key Management Service 发送的请求。对 AWS Key Management Service 发出的与客户自主管理型密钥相关的所有 API 调用都具有相应的 CloudTrail 日志。您还可以通过调用 ListGrants KMS API 调用来查看 ElastiCache 创建的授权。

使用客户自主管理型密钥对复制组进行加密后,复制组的所有备份都将按如下方式进行加密:

  • 使用与集群关联的客户自主管理型密钥对每日自动备份进行加密。

  • 删除复制组时创建的最终备份也使用与复制组关联的客户自主管理型密钥进行加密。

  • 默认情况下,使用与复制组关联的密钥对手动创建的备份进行加密。您可以通过选择其他客户自主管理型密钥来覆此行为。

  • 复制备份将默认使用与源备份关联的客户自主管理型密钥。您可以通过选择其他客户自主管理型密钥来覆此行为。

注意
  • 将备份导出到所选的 Amazon S3 存储桶时,无法使用客户自主管理型密钥。但是,导出到 Amazon S3 的所有备份都将使用服务器端加密进行加密。您可以选择将备份文件复制到新的 S3 对象并使用客户自主管理型 KMS 密钥进行加密,将文件复制到使用 KMS 密钥通过默认加密设置的另一个 S3 存储桶,或者更改文件本身中的加密选项。

  • 对于未使用客户自主管理型密钥进行加密的复制组的手动创建备份,您还可以使用客户自主管理型密钥对其进行加密。使用此选项,即使未在原始复制组上加密数据,也可以使用 KMS 密钥对存储在 Amazon S3 中的备份文件进行加密。

从备份还原允许您从可用的加密选项中进行选择,类似于创建新复制组时可用的加密选项。

  • 如果删除密钥或禁用密钥并为用于加密缓存的密钥撤销授权,则缓存将变得不可恢复。换句话说,复制组在硬件故障后无法修改或恢复。AWSKMS 在至少七天的等待期限之后才会删除根密钥。删除密钥后,您可以使用其他客户自主管理型密钥创建备份以用于存档目的。

  • 自动密钥轮换将保留 AWS KMS 根密钥的属性,因此轮换不会影响您访问 ElastiCache 数据的能力。加密的 Amazon ElastiCache 缓存不支持手动密钥轮换,手动密钥轮换涉及创建新的根密钥和更新对旧密钥的任何引用。要了解详情,请参阅 AWS Key Management Service 开发人员指南中的轮换 AWS KMS 密钥

  • 使用 KMS 密钥对 ElastiCache 缓存进行加密时,每个缓存都需要一个授权。此授权在缓存的整个生命周期中使用。此外,在备份创建期间每个备份要使用一个授权。在创建备份后,此授权将停用。

  • 有关 AWS KMS 授权和限制的更多信息,请参阅 AWS Key Management Service 开发人员指南中的限制

启用静态加密

所有无服务器缓存均启用了静态加密。

创建自行设计的集群时,您可以通过将参数 AtRestEncryptionEnabled 设置为 true 来启用静态加密。不能对现有复制组启用静态加密。

您可以在创建 ElastiCache 缓存时启用静态加密。您可以使用 AWS Management Console、AWS CLI 或 ElastiCache API 执行此操作。

在创建缓存时,您可以选取以下选项之一:

  • 默认 – 此选项使用服务管理的静态加密。

  • 客户自主管理型密钥 – 此选项允许您提供 AWS KMS 中的密钥 ID/ARN 以进行静态加密。

要了解如何创建 AWS KMS 根密钥,请参阅 AWS Kay Management Service 开发人员指南中的创建密钥

只能在创建 Redis 复制组时启用静态加密。如果要对现有复制组启用静态加密,请执行以下操作。

要对现有复制组启用静态加密
  1. 创建现有复制组的手动备份。有关更多信息,请参阅进行手动备份

  2. 通过从备份中还原来创建新复制组。对新复制组启用静态加密。有关更多信息,请参阅从备份还原到新缓存

  3. 在您的应用程序中,将终端节点更新为新复制组的节点。

  4. 删除旧复制组。有关更多信息,请参阅 删除集群删除复制组

使用 AWS Management Console 启用静态加密

所有无服务器缓存均启用了静态加密。默认情况下,使用 AWS 拥有的 KMS 密钥来加密数据。要选择您自己的 AWS KMS 密钥,请进行以下选择:

  • 展开默认设置部分。

  • 默认设置部分下选择自定义默认设置

  • 安全部分下选择自定义您的安全设置

  • 加密密钥设置下选择客户自主管理型密钥

  • AWS KMS 密钥设置下选择一个密钥。

在设计自己的缓存时,采用“轻松创建”方法的“开发/测试”和“生产”配置均启用了使用默认密钥的静态加密。在您选择自己的配置时,请进行以下选择:

  • 选择 3.2.6、4.0.10 或更高版本作为引擎版本。

  • 单击静态加密选项的启用旁边的复选框。

  • 选择默认密钥客户自主管理型密钥

有关这个分步过程,请参阅以下内容:

使用 AWS CLI 启用静态加密

要在创建 Redis 集群时使用 AWS CLI 启用静态加密,请在创建复制组时使用 --at-rest-encryption-enabled 参数。

以下操作创建具有三个节点(--num-cache-clusters,一个主节点和两个只读副本)的 Redis(已禁用集群模式)复制组 my-classic-rg。为此复制组启用了静态加密(--at-rest-encryption-enabled)。

在对此复制组启用加密时,需要以下参数及其值:

关键参数
  • --engine – 必须为 redis

  • --engine-version – 必须是 3.2.6、4.0.10 或更高版本。

  • --at-rest-encryption-enabled – 启用静态加密所必需的。

例 1:具有副本的 Redis(已禁用集群模式)集群

对于 Linux、macOS 或 Unix:

aws elasticache create-replication-group \ --replication-group-id my-classic-rg \ --replication-group-description "3 node replication group" \ --cache-node-type cache.m4.large \ --engine redis \ --at-rest-encryption-enabled \ --num-cache-clusters 3

对于 Windows:

aws elasticache create-replication-group ^ --replication-group-id my-classic-rg ^ --replication-group-description "3 node replication group" ^ --cache-node-type cache.m4.large ^ --engine redis ^ --at-rest-encryption-enabled ^ --num-cache-clusters 3 ^

有关更多信息,请参阅以下内容:

 

以下操作创建具有三个节点组/分区 (--num-node-groups) 的 Redis(已启用集群模式)复制组 my-clustered-rg。每个复制组有三个节点,一个主节点和两个只读副本 (--replicas-per-node-group)。为此复制组启用了静态加密(--at-rest-encryption-enabled)。

在对此复制组启用加密时,需要以下参数及其值:

关键参数
  • --engine – 必须为 redis

  • --engine-version – 必须是 4.0.10 或更高版本。

  • --at-rest-encryption-enabled – 启用静态加密所必需的。

  • --cache-parameter-group – 必须为 default-redis4.0.cluster.on 或派生自此值,以便为此集群启用复制组模式。

例 2:Redis(已启用集群模式)集群

对于 Linux、macOS 或 Unix:

aws elasticache create-replication-group \ --replication-group-id my-clustered-rg \ --replication-group-description "redis clustered cluster" \ --cache-node-type cache.m3.large \ --num-node-groups 3 \ --replicas-per-node-group 2 \ --engine redis \ --engine-version 6.2 \ --at-rest-encryption-enabled \ --cache-parameter-group default.redis6.x.cluster.on

对于 Windows:

aws elasticache create-replication-group ^ --replication-group-id my-clustered-rg ^ --replication-group-description "redis clustered cluster" ^ --cache-node-type cache.m3.large ^ --num-node-groups 3 ^ --replicas-per-node-group 2 ^ --engine redis ^ --engine-version 6.2 ^ --at-rest-encryption-enabled ^ --cache-parameter-group default.redis6.x.cluster.on

有关更多信息,请参阅以下内容:

另请参阅