

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

# 静态加密 ElastiCache
<a name="at-rest-encryption"></a>

为了帮助保护您的数据安全，Amazon ElastiCache 和 Amazon S3 提供了不同的方法来限制对缓存中数据的访问。有关更多信息，请参阅[Amazon VPCs 与 ElastiCache 安全](VPCs.md)和[适用于亚马逊的身份和访问管理 ElastiCache](IAM.md)。

ElastiCache 静态加密是一项通过加密磁盘数据来提高数据安全性的功能。无服务器缓存上始终启用该功能。在启用后，它会对以下方面进行加密：
+ 同步、备份和交换操作期间的磁盘
+ 存储在 Amazon S3 中的备份 

在启用数据分层的集群中，存储在 SSDs （固态驱动器）上的数据始终处于加密状态。

 ElastiCache 提供默认（服务托管）静态加密，并且能够在密钥[管理服务 (KMS) 中AWS使用您自己的对称客户托管 K](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) MS 密AWS钥。备份缓存后，在加密选项下，选择是使用默认加密密钥还是客户自主管理型密钥。有关更多信息，请参阅 [启用静态加密](#at-rest-encryption-enable)。

**重要**  
在基于节点的现有 Valkey 或 Redis OSS 集群上启用静态加密，涉及到在现有的复制组上运行备份和还原**之后**删除该复制组。

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

**Topics**
+ [静态加密条件](#at-rest-encryption-constraints)
+ [使用 KMS 中的客户托管密AWS钥](#using-customer-managed-keys-for-elasticache-security)
+ [启用静态加密](#at-rest-encryption-enable)
+ [另请参阅](#at-rest-encryption-see-also)

## 静态加密条件
<a name="at-rest-encryption-constraints"></a>

在计划实施 ElastiCache 静态加密时，应牢记以下 ElastiCache 静态加密限制：
+ 在运行 Valkey 7.2 和更高版本以及 Redis OSS 版本 3.2.6（计划终止生命周期，请参阅 [Redis OSS 版本生命周期终止计划](engine-versions.md#deprecated-engine-versions)）、4.0.10 或更高版本的复制组上支持静态加密。
+ 只有在 Amazon VPC 中运行的复制组支持静态加密。
+ 只有运行以下节点类型的复制组才支持静态加密。
  + R7g、R6gd、R6g、R5、R4、R3
  + M7g、M6g、M5、M4、M3
  + T4g、T3、T2
  + C7gn

  有关更多信息，请参阅 [受支持的节点类型](CacheNodes.SupportedTypes.md)。
+ 通过将参数 `AtRestEncryptionEnabled` 明确设置为 `true` 可启用静态加密。
+ 只有在创建复制组时才能在复制组中启用静态加密。无法通过修改复制组来开启和关闭静态加密。有关在现有复制组中实现静态加密的信息，请参阅[启用静态加密](#at-rest-encryption-enable)。
+ 如果集群使用 r6gd 系列的节点类型，则无论是否启用静态加密，存储在 SSD 上的数据都会加密。
+ 在AWS GovCloud (us-gov-east-1 和- us-gov-west 1) 区域中不提供使用客户托管密钥进行静态加密的选项。
+ 如果集群使用的是 r6gd 系列中的节点类型，则存储在 SSD 上的数据将使用选定的客户托管AWS KMS 密钥进行加密（或区域中的AWS GovCloud 服务托管加密）。
+ 使用 Memcached 时，只有无服务器缓存上支持静态加密。
+ 使用 Memcached 时，使用客户托管密钥进行静态加密的选项不适用于AWS GovCloud (us-gov-east-1 和- us-gov-west 1) 区域。

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

## 使用 KMS 中的客户托管密AWS钥
<a name="using-customer-managed-keys-for-elasticache-security"></a>

ElastiCache 支持对称客户托管AWS KMS 密钥（KMS 密钥）进行静态加密。客户管理的 KMS 密钥是您在AWS账户中创建、拥有和管理的加密密钥。有关更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的 [AWS KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#root_keys)。密钥必须先在AWS KMS 中创建，然后才能与一起使用 ElastiCache。

要了解如何创建AWS KMS 根密钥，请参阅[密*AWS钥管理服务开发人员指南*中的创建密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。

ElastiCache 允许您与AWS KMS 集成。有关更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的[使用授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)。无需客户采取任何措施即可启用 Amazon 与AWS KMS 的 ElastiCache 集成。

`kms:ViaService`条件密钥将AWS KMS 密钥（KMS 密钥）的使用限制为来自指定AWS服务的请求。要`kms:ViaService`与一起使用 ElastiCache，请在条件键值中包含两个 ViaService 名称：`elasticache.AWS_region.amazonaws.com`和`dax.AWS_region.amazonaws.com`。有关更多信息，请参阅 [kms: ViaService](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)。

您可以使用[AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)来跟踪 Amazon 代表您 ElastiCache 发送AWS Key Management Service的请求。与客户托管密钥AWS Key Management Service相关的所有API调用都有相应的 CloudTrail 日志。您还可以通过调用 [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)KMS API 来查看 ElastiCache 创建的授权。

使用客户自主管理型密钥对复制组进行加密后，复制组的所有备份都将按如下方式进行加密：
+ 使用与集群关联的客户自主管理型密钥对每日自动备份进行加密。
+ 删除复制组时创建的最终备份也使用与复制组关联的客户自主管理型密钥进行加密。
+ 默认情况下，使用与复制组关联的密钥对手动创建的备份进行加密。您可以通过选择其他客户自主管理型密钥来覆此行为。
+ 复制备份将默认使用与源备份关联的客户自主管理型密钥。您可以通过选择其他客户自主管理型密钥来覆此行为。

**注意**  
将备份导出到所选的 Amazon S3 存储桶时，无法使用客户自主管理型密钥。但是，导出到 Amazon S3 的所有备份都将使用[服务器端加密进行加密。](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html)您可以选择将备份文件复制到新的 S3 对象并使用客户自主管理型 KMS 密钥进行加密，将文件复制到使用 KMS 密钥通过默认加密设置的另一个 S3 存储桶，或者更改文件本身中的加密选项。
对于未使用客户自主管理型密钥进行加密的复制组的手动创建备份，您还可以使用客户自主管理型密钥对其进行加密。使用此选项，即使未在原始复制组上加密数据，也可以使用 KMS 密钥对存储在 Amazon S3 中的备份文件进行加密。
从备份还原允许您从可用的加密选项中进行选择，类似于创建新复制组时可用的加密选项。
+ 如果删除密钥或[禁用](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)密钥并为用于加密缓存的密钥[撤销授权](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)，则缓存将变得不可恢复。换句话说，硬件故障后无法对其进行修改或恢复。AWS KMS 只有在等待至少七天后才会删除根密钥。删除密钥后，您可以使用其他客户自主管理型密钥创建备份以用于存档目的。
+ 自动密钥轮换会保留您的AWS KMS 根密钥的属性，因此轮换不会影响您访问 ElastiCache 数据的能力。加密的 Amazon ElastiCache 缓存不支持手动密钥轮换，这包括创建新的根密钥和更新对旧密钥的所有引用。要了解更多信息，请参阅[密AWS钥管理服务开发人员指南中的轮换 KMS AWS](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) *密*钥。
+ 使用 KMS 密钥加密 ElastiCache 缓存需要每个缓存获得一次授权。此授权在缓存的整个生命周期中使用。此外，在备份创建期间每个备份要使用一个授权。在创建备份后，此授权将停用。
+ 有关AWS KMS 授权和限制的更多信息，请参阅《*AWS密钥管理服务开发者指南》*中的[限制](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)。

## 启用静态加密
<a name="at-rest-encryption-enable"></a>

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

创建基于节点的集群时，您可以通过将参数 `AtRestEncryptionEnabled` 设置为 `true` 来启用静态加密。不能对现有复制组启用静态加密。

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

在创建缓存时，您可以选取以下选项之一：
+ **默认** – 此选项使用服务管理的静态加密。
+ **客户托管密钥**-此选项允许您提供来 ID/ARN 自AWS KMS 的密钥以进行静态加密。

要了解如何创建AWS KMS 根密钥，请参阅[密*AWS钥管理服务开发者指南*中的创建密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) 

**Contents**
+ [使用启用静态加密AWS 管理控制台](#at-rest-encryption-enable-con)
+ [使用启用静态加密AWS CLI](#at-rest-encryption-enable-cli)

### 在基于节点的现有 Valkey 或 Redis OSS 集群上启用静态加密
<a name="at-reset-encryption-enable-existing-cluster"></a>

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

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

1. 创建现有复制组的手动备份。有关更多信息，请参阅 [进行手动备份](backups-manual.md)。

1. 通过从备份中还原来创建新复制组。对新复制组启用静态加密。有关更多信息，请参阅 [从备份还原到新缓存](backups-restoring.md)。

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

1. 删除旧复制组。有关更多信息，请参阅 [删除中的集群 ElastiCache](Clusters.Delete.md)或 [删除复制组](Replication.DeletingRepGroup.md)。

### 使用启用静态加密AWS 管理控制台
<a name="at-rest-encryption-enable-con"></a>

#### 在无服务器缓存上启用静态加密（控制台）
<a name="at-rest-encryption-enable-con-serverless"></a>

所有无服务器缓存均启用了静态加密。默认情况下，使用AWS拥有的 KMS 密钥来加密数据。要选择自己的AWS KMS密钥，请进行以下选择：
+ 展开**默认设置**部分。
+ 在**默认设置**部分下选择**自定义默认设置**。
+ 在**安全**部分下选择**自定义您的安全设置**。
+ 在**加密密钥**设置下选择**客户自主管理型密钥**。
+ 在 **AWS KMS密钥**设置下选择一个密钥。

#### 在基于节点的集群上启用静态加密（控制台）
<a name="at-rest-encryption-enable-con-self-designed"></a>

在设计自己的缓存时，采用“轻松创建”方法的“开发/测试”和“生产”配置均启用了使用**默认**密钥的静态加密。在您选择自己的配置时，请进行以下选择：
+ 选择 3.2.6、4.0.10 或更高版本作为引擎版本。
+ 单击**静态加密**选项的**启用**旁边的复选框。
+ 选择**默认密钥**或**客户自主管理型密钥**。

有关 step-by-step步骤，请参阅以下内容：
+ [创建 Valkey（已禁用集群模式）集群（控制台）](SubnetGroups.designing-cluster-pre.valkey.md#Clusters.Create.CON.valkey-gs)
+ [创建 Valkey 或 Redis OSS（已启用集群模式）集群（控制台）](Clusters.Create.md#Clusters.Create.CON.RedisCluster)

### 使用启用静态加密AWS CLI
<a name="at-rest-encryption-enable-cli"></a>

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

#### 在 Valkey 或 Redis OSS（已禁用集群模式）集群上启用静态加密（CLI）
<a name="at-rest-encryption-enable-cli-redis-classic-rg"></a>

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

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

**关键参数**
+ **--engine**— 必须为 `valkey` 或 `redis`。
+ **--engine-version** – 如果引擎为 Redis OSS，则必须为 3.2.6、4.0.10 或更高版本。
+ **--at-rest-encryption-enabled** – 启用静态加密所必需的。

**Example 1：具有副本的 Valkey 或 Redis OSS（已禁用集群模式）集群**  
对于 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 ^
```

有关更多信息，请参阅以下内容：
+ [从头创建 Valkey 或 Redis OSS（已禁用集群模式）复制组（AWS CLI）](Replication.CreatingReplGroup.NoExistingCluster.Classic.md#Replication.CreatingReplGroup.NoExistingCluster.Classic.CLI)
+ [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html)

 

#### 在 Valkey 或 Redis OSS（已启用集群模式）集群上启用静态加密（CLI）
<a name="at-rest-encryption-enable-cli-clustered-redis"></a>

以下操作创建`my-clustered-rg`包含三个节点组或分片 (*--*) 的 Valkey 或 Redis OSS（已启用集群模式）复制组。num-node-groups每个节点都有三个节点，一个主节点和两个只读副本 (*--replicas-per-node-group*)。已为此复制组 (*--at-rest-encryption-enabled*) 启用静态加密。

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

**关键参数**
+ **--engine**— 必须为 `valkey` 或 `redis`。
+ **--engine-version** – 如果引擎为 Redis OSS，则必须为 4.0.10 或更高版本。
+ **--at-rest-encryption-enabled** – 启用静态加密所必需的。
+ **--cache-parameter-group** – 必须为 `default-redis4.0.cluster.on` 或派生自此值，以便为此集群启用复制组模式。

**Example 2：Valkey 或 Redis OSS（已启用集群模式）集群**  
对于 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
```

有关更多信息，请参阅以下内容：
+ [从头开始创建 Valkey 或 Redis OSS（已启用集群模式）复制组（AWS CLI）](Replication.CreatingReplGroup.NoExistingCluster.Cluster.md#Replication.CreatingReplGroup.NoExistingCluster.Cluster.CLI)
+ [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html)

## 另请参阅
<a name="at-rest-encryption-see-also"></a>
+ [Amazon VPCs 与 ElastiCache 安全](VPCs.md)
+ [适用于亚马逊的身份和访问管理 ElastiCache](IAM.md)