ElastiCache for Redis 中的静态加密
为了帮助保护您的数据,Amazon ElastiCache 和 Amazon S3 提供了不同的方法来限制对缓存中的数据的访问。有关更多信息,请参阅 Amazon VPC 和 ElastiCache 安全性 和 Amazon ElastiCache 中的 Identity and Access Management。
ElastiCache for Redis 静态加密是一种可选功能,用于通过加密磁盘数据来提高数据安全性。在复制组上启用时,它会加密以下方面:
在预设情况下,在启用数据分层的集群中存储在 SSD(固态硬盘)上的数据始终加密。备份集群后,在加密选项下,选择是使用默认加密密钥还是客户托管密钥。有关更多信息,请参阅启用静态加密。
-
同步、备份和交换操作期间的磁盘
-
存储在 Amazon S3 中的备份
ElastiCache for Redis 提供默认(服务托管式)的静态加密,以及在 Amazon Key Management Service (KMS) 中使用您自己的对称客户托管式 Amazon KMS 密钥的功能。
默认加密(服务托管式)是 GovCloud (US) 区域中唯一可用选项。
静态加密只能在创建复制组时在复制组上启用。由于加密和解密数据时需要进行一些处理,因此启用静态加密会对这些操作期间的性能产生影响。应对使用和不使用静态加密的数据进行基准测试,以确定对使用案例的性能影响。
有关传输中加密的信息,请参阅ElastiCache 传输中加密(TLS)
静态加密条件
在规划 ElastiCache 静态加密的实现时,应牢记有关 ElastiCache 静态加密的以下约束:
-
在运行以下 Redis 版本的复制组上支持静态加密:3.2.6、4.0.10 或更高版本。
-
只有在 Amazon VPC 中运行的复制组支持静态加密。
-
只有运行以下节点类型的复制组才支持静态加密。
-
R6gd、R6g、R5、R4、R3
-
M6g、M5、M4、M3
-
T4g、T3、T2
有关更多信息,请参阅受支持的节点类型
-
-
通过将参数
AtRestEncryptionEnabled
明确设置为true
可启用静态加密。 -
只有在创建复制组时才能在复制组中启用静态加密。无法通过修改复制组来开启和关闭静态加密。有关在现有复制组中实现静态加密的信息,请参阅启用静态加密。
如果集群使用 r6gd 系列的节点类型,则无论是否启用静态加密,存储在 SSD 上的数据都会加密。
使用客户托管式密钥进行静态加密的选项在 Amazon GovCloud(us-gov-east-1 和 us-gov-west-1)区域中不可用。
如果集群使用 r6gd 系列的节点类型,则存储在 SSD 上的数据将使用所选客户管理的 Amazon KMS 密钥进行加密(或在 Amazon GovCloud 区域中使用服务托管加密)。
在备份和节点同步操作期间,实施静态加密可能会降低性能。使用自己的数据,对静态加密进行基准测试,然后与不加密情况进行比较,以确定其对实现性能的影响。
使用 Amazon KMS 中的客户托管式密钥
ElastiCache for Redis 支持对称的客户托管式 Amazon KMS 密钥(KMS 密钥),用于静态加密。客户托管式 KMS 密钥是您在自己的 Amazon 账户中创建、拥有并管理的加密密钥。有关更多信息,请参阅 Amazon Key Management Service 开发人员指南中的 Amazon KMS 密钥。必须先在 Amazon KMS 中创建密钥,然后才能将其与 Elasticache 一起使用。
要了解如何创建 Amazon KMS 根密钥,请参阅 Amazon Key Management Service 开发人员指南中的创建密钥。
ElastiCache for Redis 允许与 Amazon KMS 集成。有关更多信息,请参阅 Amazon Key Management Service 开发人员指南中的使用授权。无需任何客户操作即可实现 Amazon ElastiCache 与 Amazon KMS 的集成。
kms:ViaService
条件键将 Amazon KMS 密钥(KMS 密钥)限制为仅用于指定 Amazon 服务发送的请求。要将 kms:ViaService
与 ElastiCache 结合使用,请将两个 ViaService 名称包含在条件键值中:elasticache.Amazon_region.amazonaws.com
和 dax.Amazon_region.amazonaws.com
。有关更多信息,请参阅 kms:ViaService。
您可以使用 Amazon CloudTrail 来跟踪 Amazon ElastiCache 代表您向 Amazon Key Management Service 发送的请求。对 Amazon Key Management Service 发出的与客户托管式密钥相关的所有 API 调用都具有相应的 CloudTrail 日志。您还可以通过调用 ListGrants KMS API 调用来查看 ElastiCache 创建的授权。
使用客户托管式密钥对复制组进行加密后,复制组的所有备份都将按如下方式进行加密:
使用与集群关联的客户托管式密钥对每日自动备份进行加密。
删除复制组时创建的最终备份也使用与复制组关联的客户托管式密钥进行加密。
默认情况下,使用与复制组关联的密钥对手动创建的备份进行加密。您可以通过选择其他客户托管式密钥来覆此行为。
复制备份将默认使用与源备份关联的客户托管式密钥。您可以通过选择其他客户托管式密钥来覆此行为。
-
将备份导出到所选的 Amazon S3 存储桶时,无法使用客户托管式密钥。但是,导出到 Amazon S3 的所有备份都将使用服务器端加密进行加密。您可以选择将备份文件复制到新的 S3 对象并使用客户托管式 KMS 密钥进行加密,将文件复制到使用 KMS 密钥通过默认加密设置的另一个 S3 存储桶,或者更改文件本身中的加密选项。
-
对于未使用客户托管式密钥进行加密的复制组的手动创建备份,您还可以使用客户托管式密钥对其进行加密。使用此选项,即使未在原始复制组上加密数据,也可以使用 KMS 密钥对存储在 Amazon S3 中的备份文件进行加密。
从备份还原允许您从可用的加密选项中进行选择,类似于创建新复制组时可用的加密选项。
如果删除密钥或禁用密钥并为用于加密复制组的密钥撤销授权,则复制组将变得不可恢复。换句话说,复制组在硬件故障后无法修改或恢复。AmazonKMS 在至少七天的等待期限之后才会删除根密钥。删除密钥后,您可以使用其他客户托管式密钥创建备份以用于存档目的。
自动密钥轮换将保留 Amazon KMS 根密钥的属性,因此轮换不会影响您访问 ElastiCache 数据的能力。加密的 Amazon ElastiCache 复制组不支持手动密钥轮换,手动密钥轮换涉及创建新的根密钥和更新对旧密钥的任何引用。要了解详情,请参阅 Amazon Key Management Service 开发人员指南中的轮换 Amazon KMS 密钥。
使用 KMS 密钥加密 ElastiCache 复制组需要每个复制组具有一个授权。在复制组的整个生命周期中使用此授权。此外,在备份创建期间使用每个备份一个授权。在创建备份后,此授权将停用。
有关 Amazon KMS 授权和限制的更多信息,请参阅 Amazon Key Management Service 开发人员指南中的限制。
启用静态加密
通过在创建 Redis 复制组时将参数 AtRestEncryptionEnabled
设置为 true
可以启用 ElastiCache 静态加密。不能对现有复制组启用静态加密。
您可以在创建 ElastiCache for Redis 复制组时启用静态加密。您可以使用 Amazon Web Services Management Console、Amazon CLI 或 ElastiCache API 执行此操作。
在创建复制组时,您可以选取以下选项之一:
-
默认 – 此选项使用服务管理的静态加密。
-
客户托管式密钥 – 此选项允许您提供 Amazon KMS 中的密钥 ID/ARN 以进行静态加密。
要了解如何创建 Amazon KMS 根密钥,请参阅 Amazon Kay Management Service 开发人员指南中的创建密钥
目录
对现有的 Redis 集群启用静态加密
只能在创建 Redis 复制组时启用静态加密。如果要对现有复制组启用静态加密,请执行以下操作。
要对现有复制组启用静态加密
-
创建现有复制组的手动备份。有关更多信息,请参阅手动备份。
-
通过从备份中还原来创建新复制组。对新复制组启用静态加密。有关更多信息,请参阅从备份还原(可选择调整集群大小)。
-
在您的应用程序中,将终端节点更新为新复制组的节点。
使用 Amazon Web Services Management Console 启用静态加密
要在使用 Amazon Web Services Management Console创建复制组时启用静态加密,请进行以下选择:
-
选择 redis 作为引擎。
-
选择 3.2.6、4.0.10 或更高版本作为引擎版本。
-
在 Encryption at-rest(静态加密)列表中选择 Yes(是)。
有关这个分步过程,请参阅以下内容:
使用 Amazon CLI 启用静态加密
要在创建 Redis 集群时使用 Amazon CLI 启用静态加密,请在创建复制组时使用 --at-rest-encryption-enabled 参数。
在 Redis(已禁用集群模式)集群上启用静态加密 (CLI)
以下操作创建具有三个节点(--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-typecache.m4.large
\--engine
\redis
--at-rest-encryption-enabled
\ --num-cache-clusters3
对于 Windows:
aws elasticache create-replication-group ^ --replication-group-id
my-classic-rg
^ --replication-group-description"3 node replication group"
^ --cache-node-typecache.m4.large
^--engine
^redis
--at-rest-encryption-enabled
^ --num-cache-clusters3
^
有关更多信息,请参阅以下内容:
在 Redis(已启用集群模式)集群上启用静态加密 (CLI)
以下操作创建具有三个节点组/分区 (--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-typecache.m3.large
\ --num-node-groups3
\ --replicas-per-node-group2
\--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-typecache.m3.large
^ --num-node-groups3
^ --replicas-per-node-group2
^--engine
^redis
--engine-version
^6.2
--at-rest-encryption-enabled
^--cache-parameter-group
default.redis6.x.cluster.on
有关更多信息,请参阅以下内容:
使用 ElastiCache API 启用静态加密
要在使用 ElastiCache API 创建 Redis 复制组时启用静态加密,请将参数 AtRestEncryptionEnabled
设置为 true
及 CreateReplicationGroup
。
在 Redis(已禁用集群模式)集群上启用静态加密 (API)
以下操作创建具有三个节点(NumCacheClusters,一个主节点和两个副本节点)的 Redis(已禁用集群模式)复制组 my-classic-rg
。为此复制组启用了静态加密(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.redis6.x &Engine=redis &EngineVersion=6.0 &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)
以下操作创建具有三个节点组/分区 (NumNodeGroups) 的 Redis(已启用集群模式)复制组 my-clustered-rg
,每个节点组/分区具有三个节点,即一个主节点和两个只读副本 (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.redis6.x.cluster.on &Engine=redis &EngineVersion=6.0 &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>
有关更多信息,请参阅以下内容: