ElastiCache for Redis 中的静态加密 - 用于 Redis 的 Amazon ElastiCache
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

ElastiCache for Redis 中的静态加密

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

ElastiCache for Redis 静态加密是用于通过加密磁盘数据来提高数据安全性的可选功能。在复制组上启用时,它会加密以下方面:

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

  • Amazon S3 中存储的备份

ElastiCache for Redis 提供默认(服务管理)的静态加密,以及在 AWS Key Management Service (KMS) 中使用您自己的对称的客户托管的客户主密钥的能力。

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

有关传输中加密的信息,请参阅ElastiCache for Redis 传输中加密 (TLS)

静态加密条件

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

  • 在运行 Redis 4.0.10 版或更高版本的复制组上支持静态加密。

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

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

    • R6g、R5、R4、R3

    • M6g、M5、M4、M3

    • T3、T2

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

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

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

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

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

使用 AWS KMS 中客户管理的 CMK

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

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

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

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

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

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

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

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

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

  • 复制备份将默认使用与源备份关联的客户管理的 CMK。您可以通过选择其他客户管理的 CMK 来覆盖它。

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

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

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

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

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

  • 使用 CMK 加密 ElastiCache 复制组需要每个复制组一个授权。在复制组的整个生命周期中使用此授权。此外,在备份创建期间使用每个备份一个授权。在创建备份后,此授权将停用。

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

启用静态加密

通过在创建 Redis 复制组时将参数 ElastiCache 设置为 AtRestEncryptionEnabled 可以启用 true 静态加密。不能对现有复制组启用静态加密。

可以在创建 ElastiCache for Redis 复制组时启用静态加密。可使用 AWS 管理控制台、AWS CLI 或 ElastiCache API 完成此操作。

在创建复制组时,您可以选取以下选项之一:

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

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

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

对现有的 Redis 集群启用静态加密

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

要对现有复制组启用静态加密

  1. 创建现有复制组的手动备份。有关更多信息,请参阅进行手动备份

  2. 通过从备份中还原来创建新复制组。对新复制组启用静态加密。有关更多信息,请参阅从备份还原,并设置可选的集群大小调整

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

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

使用 AWS 管理控制台 启用静态加密

要在使用 AWS 管理控制台创建复制组时启用静态加密,请进行以下选择:

  • 选择 redis 作为引擎。

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

  • Encryption at-rest (静态加密) 列表中选择 Yes (是)。

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

使用 AWS CLI 启用静态加密

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

在 Redis(已禁用集群模式) 集群上启用静态加密 (CLI)

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

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

关键参数

  • --engine—必须为 redis

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

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

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

对于 Linux, OS X, or 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 \ --engine-version 4.0.10 \ --at-rest-encryption-enabled \ --num-cache-clusters 3 \ --cache-parameter-group default.redis4.0

对于 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 ^ --engine-version 4.0.10 ^ --at-rest-encryption-enabled ^ --num-cache-clusters 3 ^ --cache-parameter-group default.redis4.0

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

 

在 Redis(已启用集群模式) 集群上启用静态加密 (CLI)

以下操作创建Redis (已启用集群模式)具有三个节点组或分片 (my-clustered-rg--num-node-groups) 的 复制组。每个复制组有三个节点,一个主节点和两个只读副本 (--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, OS X, or 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 4.0.10 \ --at-rest-encryption-enabled \ --cache-parameter-group default.redis4.0.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 4.0.10 ^ --at-rest-encryption-enabled ^ --cache-parameter-group default.redis4.0.cluster.on

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

使用 ElastiCache API 启用静态加密

要在使用 ElastiCache API 创建 Redis 复制组时启用静态加密,请将参数 AtRestEncryptionEnabled 设置为 trueCreateReplicationGroup

在 Redis(已禁用集群模式) 集群上启用静态加密 (API)

以下操作创建Redis (已禁用集群模式)具有三个节点 (my-classic-rgNumCacheClusters一个主节点和两个只读副本的 复制组。为此复制组启用了静态加密 (AtRestEncryptionEnabled=true)。

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

  • Engine—必须为 redis

  • EngineVersion—必须是 3.2.6、4.0.10 或更高版本。

  • AtRestEncryptionEnabled—必须为 true 以启用静态加密。

例 3:包含副本的 Redis(已禁用集群模式) 集群

为了便于阅读,添加了换行符。

https://elasticache.us-west-2.amazonaws.com/ ?Action=CreateReplicationGroup &AtRestEncryptionEnabled=true &CacheNodeType=cache.m3.large &CacheParameterGroup=default.redis4.0 &Engine=redis &EngineVersion=4.0.10 &NumCacheClusters=3 &ReplicationGroupDescription=test%20group &ReplicationGroupId=my-classic-rg &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20150202T192317Z &X-Amz-Credential=<credential>

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

 

在 Redis(已启用集群模式) 集群上启用静态加密 (API)

以下操作使用Redis (已启用集群模式)三个节点组/分片 (my-clustered-rgNumNodeGroups) 创建 复制组,每个节点组具有三个节点,一个主节点和两个只读副本节点 (ReplicasPerNodeGroup 为此复制组启用了静态加密 (AtRestEncryptionEnabled=true)。

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

  • Engine—必须为 redis

  • AtRestEncryptionEnabled—必须为 true 以启用静态加密。

  • EngineVersion—必须是 3.2.6、4.0.10 或更高版本。

  • CacheParameterGroup—必须为 default-redis4.0.cluster.on 或派生自该值,以使其成为 Redis (已启用集群模式) 集群。

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

为了便于阅读,添加了换行符。

https://elasticache.us-west-2.amazonaws.com/ ?Action=CreateReplicationGroup &AtRestEncryptionEnabled=true &CacheNodeType=cache.m3.large &CacheParemeterGroup=default.redis4.0.cluster.on &Engine=redis &EngineVersion=4.0.10 &NumNodeGroups=3 &ReplicasPerNodeGroup=2 &ReplicationGroupDescription=test%20group &ReplicationGroupId=my-clustered-rg &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20150202T192317Z &X-Amz-Credential=<credential>

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

 

另请参阅