

# 数据保护
<a name="data-protection"></a>

在为任何工作负载设计架构之前，您应确定可能影响安全性的基本实践。例如，数据分级提供了一种基于敏感程度对数据进行分类的方法，加密通过让未经授权的用户无法获知数据的真正内容来保护数据。这些方法有助于避免误操作或履行监管义务等，意义重大。

在 AWS 中，实施数据保护时可以使用很多不同的方法。以下小节旨在介绍如何使用这些方法。

**Topics**
+ [数据分类](data-classification.md)
+ [保护静态数据](protecting-data-at-rest.md)
+ [保护传输中数据](protecting-data-in-transit.md)

# 数据分类
<a name="data-classification"></a>

数据分类提供了一种基于关键性和敏感度对组织数据进行分类的方法，有助于确定适当的保护和保留控制措施。

**Topics**
+ [SEC07-BP01 了解数据分类方案](sec_data_classification_identify_data.md)
+ [SEC07-BP02 根据数据敏感性应用数据保护控制措施](sec_data_classification_define_protection.md)
+ [SEC07-BP03 自动识别和分类](sec_data_classification_auto_classification.md)
+ [SEC07-BP04 定义可扩展的数据生命周期管理](sec_data_classification_lifecycle_management.md)

# SEC07-BP01 了解数据分类方案
<a name="sec_data_classification_identify_data"></a>

 了解工作负载正在处理的数据的分类、数据处理要求、相关业务流程、数据存储位置以及数据所有者是谁。 您的数据分类和处理方案应考虑工作负载的适用法律和合规性要求，以及需要采取哪些数据控制措施。了解数据是数据分类之旅的第一步。  

 **期望结果：**您的工作负载中的数据类型已得到充分了解并记录在案。 根据敏感数据的分类，采取适当的控制措施来保护敏感数据。 这些控制措施要考虑的因素包括：谁被允许访问数据以及访问的目的、数据的存储位置、数据的加密策略以及加密密钥的管理方式、数据的生命周期及其留存要求、适当的销毁流程、备份和恢复流程以及访问审计。

 **常见反模式：**
+  没有正式的数据分类策略来定义数据敏感性级别及其处理要求 
+  没有充分了解工作负载中数据的敏感性级别，也没有在架构和操作文档中记录这些信息 
+  未能按照数据分类和处理策略的规定，根据数据的敏感性和要求，对数据采取适当的控制措施 
+  未能向策略所有者提供有关数据分类和处理要求的反馈。

 **建立此最佳实践的好处：**这种实践消除了工作负载中数据适当处理方面的模糊性。 运用正式策略来定义组织中数据的敏感性级别及其所需的保护措施，这有助于您遵守法律法规以及其它网络安全证明和认证。 工作负载所有者可以放心地了解敏感数据的存储位置和保护控制措施。 将这些内容记录在文档中，有助于团队新成员更好地理解这些内容，并在任职初期保持控制。这些实践还有助于通过合理调整各类数据的控制措施来降低成本。

 **在未建立这种最佳实践的情况下暴露的风险等级：**高 

## 实施指导
<a name="implementation-guidance"></a>

 在设计工作负载时，您可能会直观地考虑保护敏感数据的方法。 例如，在多租户应用程序中，直观的做法是将每个租户的数据视为敏感数据，并采取保护措施，使一个租户无法访问另一个租户的数据。 同样，您也可以直观地设计访问控制措施，只有管理员可以修改数据，而其他用户只有读取级访问权限，或者根本没有访问权限。

 通过在策略中定义和记录这些数据敏感性级别及其数据保护要求，您可以正式确定工作负载中存在哪些数据。然后，您可以确定是否制定了正确的控制措施，是否可以对控制措施进行审计，以及在发现数据处理不当时应采取哪些适当的应对措施。

 为了有助于确定敏感数据在工作负载中的位置，请考虑使用数据目录。数据目录是一个数据库，用于映射组织中的数据、其位置、敏感度级别以及为保护这些数据而设置的控制措施。此外，如果可用，请考虑使用 [resource tags](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html)。 例如，对于受保护健康信息（PHI），您可以应用*标签键*为 `Classification`、*标签值*为 `PHI` 的标签，以及*标签键*为 `Sensitivity`、*标签值*为 `High` 的标签。 然后，[AWS Config](https://aws.amazon.com/config/) 等服务可用于监控这些资源的更改，并在这些资源被修改导致其不符合保护要求（例如更改加密设置）时发出警报。 您可以使用[标签策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_tag-policies.html)（AWS Organizations 的一项功能），来获取标签键和可接受值的标准定义。建议标签键或标签值不要包含私有或敏感数据。

### 实施步骤
<a name="implementation-steps"></a>

1.  了解组织的数据分类方案和保护要求。

1.  确定工作负载处理的敏感数据的类型。

1.  在数据目录中捕获数据，数据目录可提供数据在组织中的位置以及该数据的敏感度级别的单一视图。

1.  考虑在可用的情况下使用资源和数据级标记，来标记数据的敏感性级别以及其它有助于监控和响应事件的操作元数据。

   1.   AWS Organizations 标签策略可用于执行标记标准。

## 资源
<a name="resources"></a>

 **相关最佳实践：**
+  [SUS04-BP01 实施数据分类策略](https://docs.aws.amazon.com/wellarchitected/latest/framework/sus_sus_data_a2.html) 

 **相关文档：**
+  [Data Classification whitepaper](https://docs.aws.amazon.com/whitepapers/latest/data-classification/data-classification-overview.html) 
+  [标记 AWS 资源的最佳实践](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html) 

 **相关示例：**
+  [AWS Organizations Tag Policy Syntax and Examples](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_example-tag-policies.html) 

 **相关工具** 
+  [AWS 标签编辑器](https://docs.aws.amazon.com/tag-editor/latest/userguide/tag-editor.html) 

# SEC07-BP02 根据数据敏感性应用数据保护控制措施
<a name="sec_data_classification_define_protection"></a>

 应用数据保护控制措施，为分类策略中定义的每一类数据提供适当水平的控制。 这种做法可以保护敏感数据，防止在未经授权的情况下访问和使用敏感数据，同时保持数据可用。

 **期望结果：**您有一项分类策略，它定义了组织内数据的不同敏感性级别。 对于每个敏感性级别，您都有明确的指导原则，规定了经批准的存储和处理服务、位置及其所需的配置。 您可以根据所需的保护级别和相关成本，实施每个级别的控制措施。 如果数据出现在未经授权的位置、在未经授权的环境中处理、被未经授权的行为者访问，或者相关服务的配置变得不合规，您都能够进行监控并发出警报。

 **常见反模式：**
+  对所有数据应用相同级别的保护控制措施。这可能导致为低敏感性数据预配过多的安全控制措施，或者对高敏感性数据保护不足。
+  在定义数据保护控制措施时，没有让安全、合规和业务团队的利益相关方参与进来。
+  忽视与实施和维护数据保护控制措施相关的运营开销和成本。
+  不定期进行数据保护控制措施审查，无法保持一直符合分类策略。
+  没有有关静态数据和传输中数据所在位置的完整清单。

 **建立此最佳实践的好处：**贵组织通过根据数据分类级别调整控制措施，能够在需要时投资更高级别的控制措施。可能包括增加用于保护、监控、测量、修复和报告的资源。 在适合减少控制措施的情况下，您可以为员工、客户或成员提高数据的可访问性和完整性。 这种方法既能让贵组织在数据使用方面获得极大的灵活性，又能遵守数据保护要求。

 **在未建立这种最佳实践的情况下暴露的风险等级：**高 

## 实施指导
<a name="implementation-guidance"></a>

 根据数据敏感性级别实施数据保护控制措施时，涉及几个关键步骤。首先，确定工作负载架构中不同的数据敏感性级别（如公开、内部、保密和受限），并评估在哪里存储和处理这些数据。接下来，根据数据的敏感性级别定义数据的隔离边界。我们建议您将数据分别放置到不同的 AWS 账户 中，使用[服务控制策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)（SCP）来限制每个数据敏感性级别所允许的服务和操作。这样，您就可以创建强大的隔离边界，并执行最低权限原则。

 定义隔离边界后，根据数据敏感性级别实施适当的保护控制措施。参考[保护静态数据](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/protecting-data-at-rest.html)和[保护传输中数据](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/protecting-data-in-transit.html)中的最佳实践，实施加密、访问控制和审计等相关控制措施。考虑采用令牌化或匿名化等技术，来降低数据的敏感性级别。利用集中式令牌化和去令牌化系统，简化在整个企业中应用一致数据策略的过程。

 持续监控和测试所实施控制措施的有效性。随着贵组织数据状况和威胁的变化，定期审查和更新数据分类方案、风险评估和保护控制措施。使所实施的数据保护控制措施符合相关行业法规、标准和法律要求。此外，培养安全意识和提供培训，让员工了解数据分类方案及其在处理和保护敏感数据方面的责任。

### 实施步骤
<a name="implementation-steps"></a>

1.  确定工作负载中数据的分类和敏感性级别。

1.  规定每个级别的隔离边界，并确定执行策略。

1.  评估您定义的控制措施，这些控制措施管理访问、加密、审计、留存以及数据分类策略所要求的其它事项。

1.  评估在适当情况下降低数据敏感性级别的方案，例如采用令牌化或匿名化。

1.  自动测试和监控已配置资源来验证控制措施。

## 资源
<a name="resources"></a>

 **相关最佳实践：**
+  [PERF03-BP01 使用最能满足数据访问和存储要求的专用数据存储](https://docs.aws.amazon.com/wellarchitected/latest/framework/perf_data_use_purpose_built_data_store.html) 
+  [COST04-BP05 执行数据留存策略](https://docs.aws.amazon.com/wellarchitected/latest/framework/cost_decomissioning_resources_data_retention.html) 

 **相关文档：**
+  [Data Classification whitepaper](https://docs.aws.amazon.com/whitepapers/latest/data-classification/data-classification.html) 
+  [Best Practices for Security, Identify, & Compliance](https://aws.amazon.com/architecture/security-identity-compliance/?cards-all.sort-by=item.additionalFields.sortDate&cards-all.sort-order=desc&awsf.content-type=*all&awsf.methodology=*all) 
+  [AWS KMS 最佳实践](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html) 
+  [Encryption best practices and features for AWS services](https://docs.aws.amazon.com/prescriptive-guidance/latest/encryption-best-practices/welcome.html) 

 **相关示例：**
+  [Building a serverless tokenization solution to mask sensitive data](https://aws.amazon.com/blogs/compute/building-a-serverless-tokenization-solution-to-mask-sensitive-data/) 
+  [How to use tokenization to improve data security and reduce audit scope](https://aws.amazon.com/blogs/security/how-to-use-tokenization-to-improve-data-security-and-reduce-audit-scope/) 

 **相关工具：**
+  [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/) 
+  [AWS CloudHSM](https://aws.amazon.com/cloudhsm/) 
+  [AWS Organizations](https://aws.amazon.com/organizations/) 

# SEC07-BP03 自动识别和分类
<a name="sec_data_classification_auto_classification"></a>

 自动识别和分类数据可帮助您实施正确的控制措施。使用自动化技术来增强人工判断，可降低人为出错和暴露的风险。

 **期望结果：**您能够根据自己的分类和处理策略，来验证是否有适当的控制措施。自动化工具和服务有助于您识别数据的敏感性级别并加以分类。 自动化技术还有助于您持续监控环境，以便检测数据是否以未经授权的方式存储或处理，并发出警报，从而能够迅速采取纠正措施。

 **常见反模式：**
+  完全依赖人工流程进行数据识别和分类，既容易出错又耗费时间。 这可能导致数据分类效率低下且不稳定，尤其是在数据量不断增长的情况下。
+  缺乏机制，无法跟踪和管理整个组织内的数据资产。
+  忽视了数据在组织内部移动和演变时，对数据进行持续监控和分类的需求。

 **建立此最佳实践的好处：**数据识别和分类自动化可使数据保护控制措施的应用更加稳定和准确，从而降低人为出错的风险。 自动化技术还可以提供敏感数据访问和移动操作的可见性，有助于您检测到未经授权的处理并采取纠正措施。

 **在未建立这种最佳实践的情况下暴露的风险等级：**中 

## 实施指导
<a name="implementation-guidance"></a>

 在工作负载的初始设计阶段，通常运用人工判断对数据进行分类，但作为一种预防性控制机制，应考虑建立若干系统，以期对测试数据进行自动识别和分类。例如，可以向开发人员提供工具或服务对代表性数据进行扫描，以便确定数据敏感性。 在 AWS 中，您可以将数据集上传至 [Amazon S3](https://aws.amazon.com/s3/)，并使用 [Amazon Macie](https://aws.amazon.com/macie/)、[Amazon Comprehend](https://aws.amazon.com/comprehend/) 或 [Amazon Comprehend Medical](https://aws.amazon.com/comprehend/medical/) 对数据进行扫描。  同样，考虑在单元测试和集成测试中纳入数据扫描，以便检测哪里的敏感数据不在预期之内。如果在这一阶段对敏感数据发出警报，就能够在部署到生产环境之前突出保护方面的漏洞。[AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/detect-PII.html)、[Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-message-data-protection-managed-data-identifiers.htm) 和 [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html) 中的敏感数据检测等其它功能也可用于检测 PII 并采取缓解措施。对于任何自动化工具或服务，都要了解其如何定义敏感数据，并根据需要使用其它人工或自动化解决方案来解决任何漏洞。

 作为一种检测性控制措施，利用对环境的持续监控来检测敏感数据是否以不合规的方式存储。 这有助于检测一些情况，例如，敏感数据是否被发送到日志文件或者复制到数据分析环境，而没有进行适当的去标识化或修订。 可使用 Amazon Macie 对存储在 Amazon S3 中的数据进行持续监控，以便发现敏感数据。  

### 实施步骤
<a name="implementation-steps"></a>

1.  查看 [SEC07-BP01](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_data_classification_identify_data.html) 中介绍的组织内数据分类方案。

   1.  通过了解贵组织的数据分类方案，您可以建立与公司策略相一致的准确的自动识别和分类流程。

1.  对环境进行初步扫描，以便自动识别和分类。

   1.  对数据初步进行全面扫描有助于全面了解敏感数据在环境中的位置。如果最初不需要进行全面扫描，或者由于成本原因无法提前完成扫描，则应评估数据采样技术是否适合实现您的结果。例如，可以对 Amazon Macie 进行配置，以便在 S3 存储桶中执行广泛的自动敏感数据发现操作。 该功能利用采样技术，对敏感数据的位置进行初步分析，成本效益高。 然后，可以使用敏感数据发现作业对 S3 存储桶进行更深入的分析。其它数据存储也可以导出到 S3，由 Macie 扫描。

   1.  为扫描中识别的数据存储资源建立在 [SEC07-BP02](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_data_classification_define_protection.html) 中定义的访问控制。

1.  配置对环境的持续扫描。

   1.  Macie 的自动敏感数据发现功能可用于对环境进行持续扫描。 可使用 Macie 中的允许列表排除已授权存储敏感数据的已知 S3 存储桶。

1.  将识别和分类纳入构建和测试流程。

   1.  确定开发人员可用于在开发工作负载时扫描数据敏感性的工具。 在集成测试过程中使用这些工具，在敏感数据意外出现时发出警报，并阻止继续部署。

1.  实施系统或运行手册，以便在未经授权的位置发现敏感数据时采取行动。

   1.  使用自动修复功能来限制对数据的访问。例如，如果您使用基于属性的访问权限控制（ABAC），则可以将此数据移到访问受限的 S3 存储桶，或者为对象添加标签。此外，可以考虑在检测到数据时对其进行屏蔽。

   1.  提醒您的数据保护和事件响应团队调查事件的根本原因。他们汲取的任何经验教训都有助于预防未来的事件。

## 资源
<a name="resources"></a>

 **相关文档：**
+  [AWS Glue：检测和处理敏感数据](https://docs.aws.amazon.com/glue/latest/dg/detect-PII.html) 
+  [在 Amazon SNS 中使用托管数据标识符](https://docs.aws.amazon.com/sns/latest/dg/sns-message-data-protection-managed-data-identifiers.html) 
+  [Amazon CloudWatch Logs：通过屏蔽帮助保护敏感的日志数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html) 

 **相关示例：**
+  [Enabling data classification for Amazon RDS database with Macie](https://aws.amazon.com/blogs/security/enabling-data-classification-for-amazon-rds-database-with-amazon-macie/) 
+  [Detecting sensitive data in DynamoDB with Macie](https://aws.amazon.com/blogs/security/detecting-sensitive-data-in-dynamodb-with-macie/) 

 **相关工具：**
+  [Amazon Macie](https://aws.amazon.com/macie/) 
+  [Amazon Comprehend](https://aws.amazon.com/comprehend/) 
+  [Amazon Comprehend Medical](https://aws.amazon.com/comprehend/medical/) 
+  [AWS Glue](https://aws.amazon.com/glue/) 

# SEC07-BP04 定义可扩展的数据生命周期管理
<a name="sec_data_classification_lifecycle_management"></a>

 了解您的数据生命周期要求，因为这些要求与不同的数据分类等级和处理方式密切相关。 这可能包括数据首次进入您的环境时的处理方式、数据转换方式以及数据销毁规则。必须考虑数据的留存期限、访问、审计和跟踪溯源等因素。

 **期望结果：**您可以在尽可能接近摄取点和摄取时间的情况下对数据进行分类。当数据分类需要执行屏蔽、令牌化或其它降低敏感性级别的处理时，您可以在尽可能接近摄取点和摄取时间的情况下执行这些操作。

 根据数据分类情况，当数据不再适合保留时，您可以按照策略删除数据。

 **常见反模式：**
+  采用“一刀切”的数据生命周期管理方法，而不考虑不同的敏感性级别和访问权限要求。
+  仅从可用数据或备份数据的角度考虑生命周期管理，而不是两者兼顾。
+  在未确定数据价值或出处的情况下，就假定进入您工作负载的数据是有效的。
+  依赖数据持久性来替代数据备份和保护。
+  在数据超过其时效性和必要的留存期限之后，仍然保留数据。

 **建立此最佳实践的好处：**明确定义且可扩展的数据生命周期管理策略有助于保持监管合规性，提高数据安全性，优化存储成本，并在保持适当控制的同时实现高效的数据访问和共享。

 **在未建立这种最佳实践的情况下暴露的风险等级：**高 

## 实施指导
<a name="implementation-guidance"></a>

 工作负载中的数据通常是动态变化的。 数据在进入工作负载环境时所采用的形式，可能不同于数据在业务逻辑、报告、分析或机器学习中存储或使用时的形式。 此外，数据的价值可能会随着时间的推移而变化。有些数据本质上具有时效性，会随着时间的推移而失去价值。 考虑数据的这些变化对于数据分类方案和相关控制措施下的评估有何影响。 尽可能使用自动生命周期机制（例如 [Amazon S3 生命周期策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)和 [Amazon Data Lifecycle Manager](https://aws.amazon.com/ebs/data-lifecycle-manager/)），来配置数据留存、归档和过期流程。对于存储在 DynamoDB 中的数据，可以使用[生存时间（TTL）](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/TTL.html)功能来定义每个项目的过期时间戳。  

 区分可供使用的数据和作为备份存储的数据。 考虑使用 [AWS Backup](https://aws.amazon.com/backup/) 来自动备份跨 AWS 服务的数据。 [Amazon EBS 快照](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-snapshots.html)提供了一种使用 S3 功能（包括生命周期、数据保护和访问保护机制）复制 EBS 卷并存储 EBS 卷的方法。[S3 对象锁定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html)和 [AWS Backup 保管库锁](https://docs.aws.amazon.com/aws-backup/latest/devguide/vault-lock.html)就是其中的两种保护机制，可以为您的备份提供额外的安全防御和控制。管理明确的职责分工和备份访问权限。在账户级别隔离所有备份，以便在事件发生期间与受影响环境保持隔离。

 生命周期管理的另一个方面是记录数据在工作负载中进展的历史，即*数据溯源跟踪*。该功能可以让您确信，您知道数据来自何处、执行过哪些转换、更改是由哪位所有者或流程执行的以及在何时做的更改。 掌握这些历史记录后，有助于在潜在安全事件中解决问题和进行调查。 例如，您可以在 [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) 表中记录有关转换的元数据。 在数据湖中，您可以针对每个数据管道阶段，在不同的 S3 存储桶中保存转换后数据的副本。在 [AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html) 中存储架构和时间戳信息。 无论采用哪种解决方案，都需要考虑最终用户的需求，以便确定报告数据溯源情况所需的适当工具。 这样有助于您确定如何以合适的方式跟踪数据溯源情况。

### 实施步骤
<a name="implementation-steps"></a>

1.  分析工作负载的数据类型、敏感性级别和访问权限要求，对数据进行分类，并制定适当的生命周期管理策略。

1.  设计并实施符合法律、监管和组织要求的数据留存策略及自动销毁流程。

1.  建立流程和自动化机制，以便能够根据工作负载要求和监管的变化，持续监控、审计和调整数据生命周期管理策略、控制措施及政策。

   1.  使用 [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/s3-lifecycle-policy-check.html) 检测未开启自动生命周期管理的资源 

## 资源
<a name="resources"></a>

 **相关最佳实践：**
+  [COST04-BP05 执行数据留存策略](https://docs.aws.amazon.com/wellarchitected/latest/framework/cost_decomissioning_resources_data_retention.html) 
+  [SUS04-BP03 使用策略管理数据集的生命周期](https://docs.aws.amazon.com/wellarchitected/latest/framework/sus_sus_data_a4.html) 

 **相关文档：**
+  [Data Classification Whitepaper](https://docs.aws.amazon.com/whitepapers/latest/data-classification/data-classification-overview.html) 
+  [AWS Blueprint for Ransomware Defense](https://d1.awsstatic.com/whitepapers/compliance/AWS-Blueprint-for-Ransomware-Defense.pdf) 
+  [DevOps Guidance: Improve traceability with data provenance tracking](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/ag.dlm.8-improve-traceability-with-data-provenance-tracking.html) 

 **相关示例：**
+  [How to protect sensitive data for its entire lifecycle in AWS](https://aws.amazon.com/blogs/security/how-to-protect-sensitive-data-for-its-entire-lifecycle-in-aws/) 
+  [Build data lineage for data lakes using AWS Glue, Amazon Neptune, and Spline](https://aws.amazon.com/blogs/big-data/build-data-lineage-for-data-lakes-using-aws-glue-amazon-neptune-and-spline/) 

 **相关工具：**
+  [AWS Backup](https://aws.amazon.com/backup/) 
+  [Amazon Data Lifecycle Manager](https://aws.amazon.com/ebs/data-lifecycle-manager/) 
+  [AWS Identity and Access Management Access Analyzer](https://aws.amazon.com/iam/access-analyzer/) 

# 保护静态数据
<a name="protecting-data-at-rest"></a>

*静态数据*代表您在工作负载期间的任意时间段内保留在非易失性存储器中的任何数据。其中包括数据块存储、对象存储、数据库、存档、IoT 设备和用来保留数据的任何其他存储介质。在实施了加密和适当的访问控制时，保护静态数据可以降低未经授权访问的风险。

加密和令牌化是两个重要但不同的数据保护方案。

*令牌化*是一个支持您定义令牌以表示其他敏感信息的过程（例如代表客户信用卡号的令牌）。令牌自身必须没有任何意义，而且不能是从它令牌化的数据衍生而来 – 因此，无法将加密摘要用作令牌。通过认真规划令牌化方法，您可以为内容提供额外保护，并确保满足合规性要求。例如，如果您使用令牌而不是信用卡号，就可以缩小信用卡处理系统的合规性范围。

*加密*可以将内容转换为这样一种形式：如果用户没有将这些内容解密为纯文本所需的密钥，就无法读取。令牌化和加密都可用于酌情保护信息。此外，可以使用掩码这种技术编辑数据的某个部分，以使剩余的数据不被视为敏感数据。例如，PCI-DSS 允许在合规性范围边界之外保留卡号的最后四位数字，以供索引使用。

**审计加密密钥的使用：**务必了解并审计加密密钥的使用，确保对密钥正确实施访问控制措施。例如，使用 AWS KMS 密钥的任何 AWS 服务都会在 AWS CloudTrail 中记录每次密钥使用。随后，您可以使用 Amazon CloudWatch Logs Insights 等工具查询 AWS CloudTrail，确保密钥的所有使用都有效。

**Topics**
+ [SEC08-BP01 实施安全密钥管理](sec_protect_data_rest_key_mgmt.md)
+ [SEC08-BP02 强制实施静态加密](sec_protect_data_rest_encrypt.md)
+ [SEC08-BP03 自动执行静态数据保护](sec_protect_data_rest_automate_protection.md)
+ [SEC08-BP04 强制实施访问控制](sec_protect_data_rest_access_control.md)

# SEC08-BP01 实施安全密钥管理
<a name="sec_protect_data_rest_key_mgmt"></a>

 安全密钥管理包括密钥材料的存储、轮换、访问控制和监控，这些都是保护工作负载的静态数据安全所必需的。

 **期望结果：**您拥有一种可扩展、可重复且自动化的密钥管理机制。该机制对密钥材料强制实施最低权限访问，并在密钥可用性、机密性和完整性之间提供适当的平衡。您可以监控对密钥的访问权限，如果需要轮换密钥材料，则使用自动流程轮换密钥材料。您不让人工操作员访问密钥材料。

**常见反模式：**
+  由人类访问未加密的密钥材料。
+  创建自定义加密算法。
+  访问密钥材料的权限过于宽泛。

 **建立此最佳实践的好处：**通过为您的工作负载建立安全的密钥管理机制，您可以帮助保护您的内容免遭未经授权的访问。此外，您可能需要遵守对数据进行加密的监管要求。有效的密钥管理解决方案可以提供符合这些法规的技术机制，进而保护密钥材料。

 **在未建立这种最佳实践的情况下暴露的风险等级：**高 

## 实施指导
<a name="implementation-guidance"></a>

 静态数据加密是一项基本的安全控制措施。为实施这种控制措施，工作负载需要一种机制，来安全地存储和管理用于加密静态数据的密钥材料。

 AWS 提供的 AWS Key Management Service（AWS KMS）可为 AWS KMS 密钥提供持久、安全和冗余的存储。[许多 AWS 服务都与 AWS KMS 集成](https://aws.amazon.com/kms/features/#integration)来支持对您的数据进行加密。AWS KMS 使用经 FIPS 140-3 Level 3 验证的硬件安全模块来保护您的密钥。不存在以纯文本格式导出 AWS KMS 密钥的机制。

 使用多账户策略部署工作负载时，应将 AWS KMS 密钥与使用这些密钥的工作负载保存在同一个账户中。[This distributed model](https://docs.aws.amazon.com/prescriptive-guidance/latest/security-reference-architecture/application.html#app-kms) 将管理 AWS KMS 密钥的责任交给您的团队。在其它用例中，贵组织可以选择将 AWS KMS 密钥存储到集中式账户中。这种集中式结构需要额外的策略，以实现工作负载账户访问集中式账户中存储的密钥所需的跨账户访问，但可能更适用于多个 AWS 账户 共享单个密钥的用例。

 无论密钥材料存储在哪里，都应通过使用 [key policies](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) 和 IAM 策略来严格控制对密钥的访问。密钥策略是控制对 AWS KMS 密钥的访问权限的主要方式。此外，AWS KMS 密钥授权可以提供对 AWS 服务的访问权限，从而代表您加密和解密数据。请查看 [guidance for access control to your AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies-best-practices.html)。

 您应监控加密密钥的使用情况，以检测异常的访问规律。使用 AWS 托管密钥和 AWS KMS 中存储的客户自主管理型密钥执行的操作可以记录在 AWS CloudTrail 中，并应定期进行审查。特别注意监控密钥销毁事件。为了减少意外或恶意破坏密钥材料的情况，密钥销毁事件不会立即删除密钥材料。尝试删除 AWS KMS 中的密钥时会经历一个 [waiting period](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html#deleting-keys-how-it-works)，默认为 30 天且最少为 7 天，这让管理员有时间审核这些操作并在必要时回滚请求。

 大多数 AWS 服务使用 AWS KMS 的方式对您来说都是透明的，您只需要决定是使用 AWS 托管密钥还是客户自主管理型密钥。如果您的工作负载需要直接使用 AWS KMS 来加密或解密数据，则应使用 [envelope encryption](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping) 来保护您的数据。此 [AWS 加密开发工具包](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html)可为您的应用程序提供客户端加密原语，来实施信封加密并与 AWS KMS 集成。

### 实施步骤
<a name="implementation-steps"></a>

1.  为密钥确定合适的[密钥管理选项](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt)（AWS 托管或客户自主管理）。

   1.  为便于使用，AWS 为大多数服务提供 AWS 自有和 AWS 托管密钥，这样，无需管理密钥材料或密钥策略，即可提供静态加密功能。

   1.  使用客户自主管理型密钥时，请考虑使用默认密钥存储，以便在敏捷性、安全性、数据主权和可用性之间取得最佳平衡。其他用例可能需要使用附带 [AWS CloudHSM](https://aws.amazon.com/cloudhsm/) 的自定义密钥存储或使用[外部密钥存储](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html)。

1.  查看您用于工作负载的服务列表，以了解 AWS KMS 如何与该服务集成。例如，EC2 实例可以使用加密的 EBS 卷，验证从这些卷创建的 Amazon EBS 快照是否也使用客户自主管理型密钥进行加密，并减少未加密快照数据的意外泄露。

   1.  [AWS 服务如何使用 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/service-integration.html) 

   1.  有关 AWS 服务提供的加密选项的详细信息，请参阅该服务的用户指南或开发人员指南中的“静态加密”主题。

1.  实施 AWS KMS：AWS KMS 使您可以轻松创建和管理密钥，并控制各种 AWS 服务和应用程序中的加密使用情况。

   1.  [入门：AWS Key Management Service（AWS KMS）](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html) 

   1.  请查看 [AWS KMS 密钥访问控制的最佳实践](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies-best-practices.html)。

1.  考虑使用 AWS Encryption SDK：当应用程序需要在客户端加密数据时，使用包含 AWS KMS 集成的 AWS Encryption SDK。

   1.  [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html) 

1.  启用 [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) 以自动审查是否存在过于宽泛的 AWS KMS 密钥策略并相应地发出通知。

   1.  考虑使用 [custom policy checks](https://docs.aws.amazon.com/access-analyzer/latest/APIReference/API_CheckNoPublicAccess.html)，来验证资源策略更新是否不会授予对 KMS 密钥的公有访问权限。

1.  启用 [Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/kms-controls.html) 以便在密钥策略配置错误、计划删除密钥或存在未启用自动轮换的密钥时，接收通知。

1.  确定适合您的 AWS KMS 密钥的日志记录级别。由于对 AWS KMS 的调用（包括只读事件）会被记录下来，因此与 AWS KMS 关联的 CloudTrail 日志可能会变得非常庞大。

   1.  一些组织倾向于将 AWS KMS 日志活动分成单独的跟踪。有关更多详细信息，请参阅《AWS KMS 开发者指南》的[使用 CloudTrail 记录 AWS KMS API 调用](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)部分。

## 资源
<a name="resources"></a>

 **相关文档：**
+  [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 
+  [AWS 加密服务和工具](https://docs.aws.amazon.com/crypto/latest/userguide/awscryp-overview.html) 
+  [利用加密保护 Amazon S3 数据](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingEncryption.html) 
+  [信封加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping) 
+  [数字主权承诺](https://aws.amazon.com/blogs/security/aws-digital-sovereignty-pledge-control-without-compromise/) 
+  [揭开 AWS KMS 密钥操作的神秘面纱、自带密钥、自定义密钥库和加密文字可移植性](https://aws.amazon.com/blogs/security/demystifying-kms-keys-operations-bring-your-own-key-byok-custom-key-store-and-ciphertext-portability/) 
+  [AWS Key Management Service 加密详情](https://docs.aws.amazon.com/kms/latest/cryptographic-details/intro.html) 

 **相关视频：**
+  [ 中的加密原理AWS](https://youtu.be/plv7PQZICCM) 
+  [在 AWS 上保护您的数据块存储](https://youtu.be/Y1hE1Nkcxs8) 
+  [AWS data protection: Using locks, keys, signatures, and certificates](https://www.youtube.com/watch?v=lD34wbc7KNA) 

 **相关示例：**
+  [使用 AWS KMS 实施高级访问控制机制](https://catalog.workshops.aws/advkmsaccess/en-US/introduction) 

# SEC08-BP02 强制实施静态加密
<a name="sec_protect_data_rest_encrypt"></a>

 加密私有静态数据，来保持机密性并提供额外的一层防护，以防止无意的数据泄露或外流。加密可保护数据，因此，如果不首先对数据进行解密，则无法读取或访问加密的数据。清点和控制未加密的数据，以降低与数据泄露关联的风险。

 **期望结果：**您拥有在私有数据处于静态时默认加密这些数据的机制。这些机制有助于保持数据的机密性，并提供额外的一层防护，以防止无意的数据泄露或外流。您可以维护未加密数据的清单，并了解为保护这些数据而采取的控制措施。

 **常见反模式：**
+  不使用默认加密配置。
+  提供对解密密钥过于宽松的访问权限。
+  不监控加密和解密密钥的使用。
+  未加密便存储数据。
+  对所有数据使用相同的加密密钥，而不考虑数据用途、类型和分类。

 **在未建立这种最佳实践的情况下暴露的风险等级：**高 

## 实施指导
<a name="implementation-guidance"></a>

 将加密密钥映射到工作负载中的数据分类。当对数据使用单个或非常少量的加密密钥时，这种方法有助于防止过于宽松的访问（请参阅 [SEC07-BP01 了解数据分类方案](sec_data_classification_identify_data.md)）。

 AWS Key Management Service（AWS KMS）与许多 AWS 服务集成，使加密静态数据更加轻松。例如，在 Amazon Elastic Compute Cloud（Amazon EC2）中，您可以对账户设置[默认加密](https://docs.aws.amazon.com/ebs/latest/userguide/work-with-ebs-encr.html#encryption-by-default)，以便自动加密新的 EBS 卷。使用 AWS KMS 时，请考虑需要对数据进行多严格的限制。默认和服务控制的 AWS KMS 密钥由 AWS 代表您进行管理和使用。对于需要对底层加密密钥进行精细访问的敏感数据，请考虑使用客户自主管理型密钥（CMK）。您可以完全控制 CMK，包括通过使用密钥策略进行轮换和访问管理。

 此外，诸如 Amazon Simple Storage Service（[Amazon S3](https://aws.amazon.com/blogs/aws/amazon-s3-encrypts-new-objects-by-default/)）之类的服务现在默认加密所有新对象。这种实施提供了增强的安全性，而不会对性能产生任何影响。

 其它服务，例如 [Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default)（Amazon EC2）或 [Amazon Elastic File System](https://docs.aws.amazon.com/prescriptive-guidance/latest/encryption-best-practices/efs.html)（Amazon EFS），则支持默认加密设置。还可以使用 [AWS Config 规则](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html) 来自动检查您是否正在为贵组织内的 [Amazon Elastic Block Store (Amazon EBS) volumes](https://docs.aws.amazon.com/config/latest/developerguide/encrypted-volumes.html)、[Amazon Relational Database Service (Amazon RDS) instances](https://docs.aws.amazon.com/config/latest/developerguide/rds-storage-encrypted.html)、[Amazon S3 buckets](https://docs.aws.amazon.com/config/latest/developerguide/s3-default-encryption-kms.html) 和其它服务使用加密。

 AWS 还提供客户端加密选项，使您能够在将数据上传到云之前对数据进行加密。AWS Encryption SDK 提供了一种使用[信封加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)对数据进行加密的方法。您提供包装密钥，AWS Encryption SDK 为它加密的每个数据对象生成一个唯一数据密钥。如果需要托管的单租户硬件安全模块（HSM），请考虑 AWS CloudHSM。AWS CloudHSM 使您可在通过 FIPS 140-2 Level 3 验证的 HSM 上生成、导入和管理加密密钥。AWS CloudHSM 的一些使用案例包括保护用于签发证书颁发机构（CA）的私有密钥，以及为 Oracle 数据库启用透明数据加密（TDE）。AWS CloudHSM 客户端开发工具包提供的软件使您可在将数据上传到 AWS 之前，使用存储在 AWS CloudHSM 中的密钥对客户端数据进行加密。Amazon DynamoDB Encryption Client 还使您可在将项目上传到 DynamoDB 表之前，对项目进行加密和签名。

### 实施步骤
<a name="implementation-steps"></a>
+  **为新的 Amazon EBS 卷配置**[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html)**：**指定所有新创建的 Amazon EBS 卷要以加密形式创建，并选择使用 AWS 提供的默认密钥或您创建的密钥。
+  **配置加密亚马逊机器映像（AMI）：**通过复制已配置加密功能的现有 AMI，可自动加密根卷和快照。
+  **配置 **[https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Overview.Encryption.html](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Overview.Encryption.html)**：**通过使用加密选项，配置对您的 Amazon RDS 数据库集群和静态快照的加密。
+  **使用策略创建和配置 AWS KMS 密钥，以限制对每个数据分类的相应主体的访问：**例如，创建一个 AWS KMS 密钥用于加密生产数据，创建一个不同的密钥用于加密开发或测试数据。您还可以提供对其他 AWS 账户 的密钥访问权限。不妨考虑分开设立开发环境和生产环境的账户。如果您的生产环境需要解密开发账户中的构件，您可以编辑用于加密开发构件的 CMK 策略，使生产账户有能力解密这些构件。然后，生产环境可以摄取解密后的数据以用于生产。
+  **在其它 AWS 服务中配置加密：**对于您使用的其它 AWS 服务，请查看该服务的[安全性文档](https://docs.aws.amazon.com/security/)，以确定该服务的加密选项。

## 资源
<a name="resources"></a>

 **相关文档：**
+  [AWS 加密工具](https://docs.aws.amazon.com/aws-crypto-tools) 
+  [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html) 
+  [AWS KMS 加密详情白皮书](https://docs.aws.amazon.com/kms/latest/cryptographic-details/intro.html) 
+  [AWS Key Management Service](https://aws.amazon.com/kms) 
+  [AWS 加密服务和工具](https://docs.aws.amazon.com/aws-crypto-tools/) 
+  [Amazon EBS Encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) 
+  [Amazon EBS 卷的默认加密](https://aws.amazon.com/blogs/aws/new-opt-in-to-default-encryption-for-new-ebs-volumes/) 
+  [加密 Amazon RDS 资源](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html) 
+  [如何为 Amazon S3 存储桶启用默认加密？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/default-bucket-encryption.html) 
+  [利用加密保护 Amazon S3 数据](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingEncryption.html) 

 **相关视频：**
+  [AWS 中的加密原理](https://youtu.be/plv7PQZICCM) 
+  [在 AWS 上保护您的数据块存储](https://youtu.be/Y1hE1Nkcxs8) 

# SEC08-BP03 自动执行静态数据保护
<a name="sec_protect_data_rest_automate_protection"></a>

 使用自动化技术来验证和执行静态数据控制。 使用自动扫描功能来检测数据存储解决方案的错误配置，并在可能的情况下通过自动程序化响应进行修复。 在 CI/CD 流程中融入自动化功能，以便在数据存储部署到生产环境之前检测出错误配置。

 **期望结果：**自动化系统对数据存储位置进行扫描和监控，防止出现控制措施配置错误、未经授权的访问和意外使用。 检测到配置错误的存储位置后，自动修复措施就会启动。 自动化流程可创建数据备份，并在原始环境之外存储不可更改的副本。

 **常见反模式：**
+  在支持的情况下，不考虑通过默认设置启用加密的选项。
+  在制定自动备份和恢复策略时，除操作事件外，不考虑安全事件。
+  不对存储服务执行公共访问设置。
+  不监控和审计保护静态数据的控制措施。

 **建立此最佳实践的好处：**自动化有助于防止错误配置数据存储位置的风险。这有助于防止错误配置进入生产环境。这种最佳实践还有助于在发生错误配置时进行检测和修复。  

 **在未建立这种最佳实践的情况下暴露的风险等级：**中 

## 实施指导 
<a name="implementation-guidance"></a>

 自动化是整个静态数据保护实践的主题。[SEC01-BP06 自动部署标准安全控制措施](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_securely_operate_automate_security_controls.html)介绍如何使用*基础设施即代码*（IaC）模板（例如 [AWS CloudFormation](https://aws.amazon.com/cloudformation/)）捕获资源配置。 这些模板已提交到版本控制系统，并用于通过 CI/CD 管道在 AWS 上部署资源。 这些技术同样适用于自动配置数据存储解决方案，如 Amazon S3 存储桶的加密设置。  

 您可以在 CI/CD 管道中使用 [AWS CloudFormation Guard](https://docs.aws.amazon.com/cfn-guard/latest/ug/what-is-guard.html) 中的规则，来检查您在 IaC 模板中定义的设置是否存在配置错误。 您可以使用 [AWS Config](https://aws.amazon.com/config/) 监控 CloudFormation 或其它 IaC 工具中尚未提供的设置，以防配置错误。 如 [SEC04-BP04 启动对不合规资源的修复](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_detect_investigate_events_noncompliant_resources.html)中所述，Config 针对错误配置生成的警报可自动修复。

 将自动化功能融入权限管理策略，也是自动化数据保护不可或缺的组成部分。[SEC03-BP02 授予最低访问权限](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_permissions_least_privileges.html)和 [SEC03-BP04 持续减少权限](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_permissions_continuous_reduction.html)描述了如何配置最低权限访问策略，这些策略会受到 [AWS Identity and Access Management Access Analyzer](https://aws.amazon.com/iam/access-analyzer/) 的持续监控，以便得出何时可以减少权限的调查发现。 除了监控权限的自动化功能之外，您还可以配置 [Amazon GuardDuty](https://aws.amazon.com/guardduty/) 以监控 [EBS 卷](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-ec2.html)（通过 EC2 实例）、[S3 存储桶](https://docs.aws.amazon.com/guardduty/latest/ug/s3-protection.html)和受支持的 [Amazon Relational Database Service 数据库](https://docs.aws.amazon.com/guardduty/latest/ug/rds-protection.html)的异常数据访问行为。

 在检测敏感数据何时存储在未经授权的位置时，自动化功能也能发挥作用。[SEC07-BP03 自动识别和分类](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_data_classification_auto_classification.html)描述了 [Amazon Macie](https://aws.amazon.com/macie/) 如何监控您的 S3 存储桶中是否存在意外敏感数据，并生成可启动自动响应的警报。

 按照 [REL09 备份数据](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/back-up-data.html)中的做法，制定自动数据备份和恢复策略。对于从安全事件中恢复和从操作事件中恢复，备份数据和恢复数据同样重要。

### 实施步骤
<a name="implementation-steps"></a>

1.  在 IaC 模板中捕获数据存储配置。 在 CI/CD 管道中使用自动检查来检测错误配置。

   1.  您可以使用 [CloudFormation](https://aws.amazon.com/cloudformation/) 来处理 IaC 模板，并使用 [CloudFormation Guard](https://docs.aws.amazon.com/cfn-guard/latest/ug/what-is-guard.html) 来检查模板是否存在配置错误。

   1.  使用 [AWS Config](https://aws.amazon.com/config/) 以主动评估模式运行规则。使用此设置可在创建资源前，检查资源作为 CI/CD 管道中的一个步骤的合规性。

1.  监控资源中是否存在数据存储配置错误。

   1.  设置 [AWS Config](https://aws.amazon.com/config/) 以监控数据存储资源中控制措施配置的变化，并在检测到错误配置时生成警报，以便调用修复措施。

   1.  有关自动修复的更多指导，请参见 [SEC04-BP04 启动对不合规资源的修复](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_detect_investigate_events_noncompliant_resources.html)。

1.  通过自动化功能持续监控和减少数据访问权限。

   1.  [IAM Access Analyzer](https://aws.amazon.com/iam/access-analyzer/) 可持续运行，在权限可能减少时发出警报。

1.  监控异常数据访问行为并发出警报。

   1.  [GuardDuty](https://aws.amazon.com/guardduty/) 可监控已知威胁特征，还监控 EBS 卷、S3 存储桶和 RDS 数据库等数据存储资源的基线访问行为偏差。

1.  对存储在意外位置的敏感数据进行监控并发出警报。

   1.  使用 [Amazon Macie](https://aws.amazon.com/macie/) 持续扫描 S3 存储桶，查找敏感数据。

1.  自动对数据进行安全加密备份。

   1.  [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) 是一项托管服务，可为 AWS 上的各种数据来源创建加密和安全的备份。 [弹性灾难恢复](https://aws.amazon.com/disaster-recovery/)允许您复制完整的服务器工作负载，并保持持续的数据保护，恢复点目标（RPO）以秒为单位。 您可以配置这两项服务，使之协同工作，从而自动创建数据备份并复制到失效转移位置。 这有助于在受到操作或安全事件影响时保持数据可用。

## 资源
<a name="resources"></a>

 **相关最佳实践：**
+  [SEC01-BP06 自动部署标准安全控制措施](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_securely_operate_automate_security_controls.html) 
+  [SEC03-BP02 授予最低访问权限](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_permissions_least_privileges.html) 
+  [SEC03-BP04 持续减少权限](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_permissions_continuous_reduction.html) 
+  [SEC04-BP04 启动对不合规资源的修复](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_detect_investigate_events_noncompliant_resources.html) 
+  [SEC07-BP03 自动识别和分类](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_data_classification_auto_classification.html) 
+  [REL09-BP02 保护并加密备份](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_backing_up_data_secured_backups_data.html) 
+  [REL09-BP03 自动执行数据备份](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_backing_up_data_automated_backups_data.html) 

 **相关文档：**
+  [AWS Prescriptive Guidance: Automatically encrypt existing and new Amazon EBS volumes](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/automatically-encrypt-existing-and-new-amazon-ebs-volumes.html) 
+  [Ransomware Risk Management on AWS Using the NIST Cyber Security Framework (CSF)](https://docs.aws.amazon.com/whitepapers/latest/ransomware-risk-management-on-aws-using-nist-csf/ransomware-risk-management-on-aws-using-nist-csf.html) 

 **相关示例：**
+  [How to use AWS Config proactive rules and AWS CloudFormation Hooks to prevent creation of noncompliant cloud resources](https://aws.amazon.com/blogs/mt/how-to-use-aws-config-proactive-rules-and-aws-cloudformation-hooks-to-prevent-creation-of-non-complaint-cloud-resources/) 
+  [Automate and centrally manage data protection for Amazon S3 with AWS Backup](https://aws.amazon.com/blogs/storage/automate-and-centrally-manage-data-protection-for-amazon-s3-with-aws-backup/) 
+  [AWS re:Invent 2023 - Implement proactive data protection using Amazon EBS snapshots](https://www.youtube.com/watch?v=d7C6XsUnmHc) 
+  [AWS re:Invent 2022 - Build and automate for resilience with modern data protection](https://www.youtube.com/watch?v=OkaGvr3xYNk) 

 **相关工具：**
+  [AWS CloudFormation Guard](https://docs.aws.amazon.com/cfn-guard/latest/ug/what-is-guard.html) 
+  [AWS CloudFormation Guard 规则注册表](https://github.com/aws-cloudformation/aws-guard-rules-registry) 
+  [IAM Access Analyzer](https://aws.amazon.com/iam/access-analyzer/) 
+  [Amazon Macie](https://aws.amazon.com/macie/) 
+  [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) 
+  [弹性灾难恢复](https://aws.amazon.com/disaster-recovery/) 

# SEC08-BP04 强制实施访问控制
<a name="sec_protect_data_rest_access_control"></a>

 为有助于保护静态数据，请使用隔离和版本控制等机制来强制实施访问控制。应用最低权限和条件访问控制。防止向公众授予访问您数据的权限。

 **期望结果：**您验证只有获得授权的用户才能按照“需要知晓”的原则访问数据。您通过定期备份和版本控制来保护您的数据，以防止数据被有意或无意地修改或删除。您将关键数据与其它数据隔离，以保护其机密性和数据完整性。

**常见反模式：**
+  将具有不同敏感度要求或分类的数据存储在一起。
+  解密密钥的权限过于宽松。
+  数据分类不当。
+  不保留重要数据的详细备份。
+  提供对生产数据的持久访问。
+  未审计数据访问，也未定期检查权限。

**在未建立这种最佳实践的情况下暴露的风险等级：**高 

## 实施指导
<a name="implementation-guidance"></a>

 保护静态数据对于维护数据的完整性、机密性以及符合监管要求非常重要。您可以实施多种控制措施来协助实现这一目标，包括访问控制、隔离、条件访问和版本控制。

 您可以按照最低权限原则强制实施访问控制，该原则仅向用户和服务提供执行其任务所需的权限。这包括对于加密密钥的访问权限。查看您的 [AWS Key Management Service (AWS KMS) policies](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)，来验证您授予的访问权限级别是否适当，以及相关条件是否适用。

 可以通过为每个分类级别使用不同的 AWS 账户，根据不同的分类级别分离数据，并使用 [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) 管理这些账户。这种隔离有助于防止未经授权的访问，并最大限度地降低数据泄露的风险。

 定期审核在 Amazon S3 存储桶策略中授予的访问权限级别。除非绝对必要，否则请避免使用可公开读取或写入的存储桶。考虑使用 [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html) 来检测可公开可用的存储桶，并使用 Amazon CloudFront 来提供 Amazon S3 中的内容。验证正确配置了应不支持公开访问的存储桶，以防止公开访问。

 对存储在 Amazon S3 中的关键数据实施版本控制和对象锁定机制。[Amazon S3 版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)保留对象的先前版本，以便在意外删除或覆盖时恢复数据。[Amazon S3 对象锁定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html)为对象提供强制访问控制，从而防止对象在锁定到期之前被删除或覆盖，即使是根用户也是如此。此外，[Amazon Glacier 文件库锁定](https://docs.aws.amazon.com/amazonglacier/latest/dev/vault-lock.html)为存储在 Amazon Glacier 中的归档提供了类似的功能。

### 实施步骤
<a name="implementation-steps"></a>

1.  **采用最低权限原则，强制实施访问控制**：
   +  审核向用户和服务授予的访问权限，并验证他们是否只拥有执行其任务所需的权限。
   +  通过检查 [AWS Key Management Service (AWS KMS) policies](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 来查看对加密密钥的访问权限。

1.  **根据不同的分类级别将数据分开**：
   +  对每个数据分类级别使用不同的 AWS 账户。
   +  使用 [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) 管理这些账户。

1.  **审核 Amazon S3 存储桶和对象权限**：
   +  定期审核在 Amazon S3 存储桶策略中授予的访问权限级别。
   +  除非绝对必要，否则请避免使用可公开读取或写入的存储桶。
   +  考虑使用 [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html) 来检测公开可用的存储桶。
   +  使用 Amazon CloudFront 来提供 Amazon S3 中的内容。
   +  验证正确配置了应不支持公开访问的存储桶，以防止公开访问。
   +  可以对使用 IAM 身份验证的数据库和任何其它数据来源（例如 SQS 或第三方数据存储）应用相同的审核流程。

1.  **使用 AWS IAM Access Analyzer**：
   +  您可以配置 [AWS IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) 来分析 Amazon S3 存储桶，并在 S3 策略向外部实体授予访问权限时生成调查发现。

1.  **实施版本控制和对象锁定机制**：
   +  使用 [Amazon S3 版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)来保留对象的先前版本，这样可以从意外删除或覆盖中恢复。
   +  使用 [Amazon S3 对象锁定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html)来为对象提供强制访问控制，从而防止对象在锁定到期之前被删除或覆盖，即使是根用户也是如此。
   +  将 [Amazon Glacier 文件库锁定](https://docs.aws.amazon.com/amazonglacier/latest/dev/vault-lock.html)用于存储在 Amazon Glacier 中的归档。

1.  **使用 Amazon S3 清单**：
   +  可以使用 [Amazon S3 清单](https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html)来审计和报告 S3 对象的复制和加密状态。

1.  **审核 Amazon EBS 和 AMI 共享权限**：
   +  审核 [Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html) 和 [AMI 共享](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharing-amis.html)的共享权限，来验证映像和卷是否未与工作负载外部的 AWS 账户共享。

1.  **定期审核 AWS Resource Access Manager 共享**：
   +  可以使用 [AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) 来在 Amazon VPC 内共享资源，如 AWS Network Firewall 策略、Amazon Route 53 Resolver 规则和子网。
   +  定期审计共享的资源，并停止共享不再需要共享的资源。

## 资源
<a name="resources"></a>

 **相关最佳实践：**
+ [SEC03-BP01 定义访问要求](sec_permissions_define.md) 
+  [SEC03-BP02 授予最低访问权限](sec_permissions_least_privileges.md) 

 **相关文档：**
+  [AWS KMS 加密详情白皮书](https://docs.aws.amazon.com/kms/latest/cryptographic-details/intro.html) 
+  [管理对 Amazon S3 资源的访问权限简介](https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-managing-access-s3-resources.html) 
+  [管理对 AWS KMS 资源的访问权限概览](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html) 
+  [AWS Config 规则](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html) 
+  [Amazon S3 \$1 Amazon CloudFront: A Match Made in the Cloud](https://aws.amazon.com/blogs/networking-and-content-delivery/amazon-s3-amazon-cloudfront-a-match-made-in-the-cloud/) 
+  [使用版本控制](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) 
+  [使用 Amazon S3 对象锁定以锁定对象](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) 
+  [共享 Amazon EBS 快照](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html) 
+  [共享 AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharing-amis.html) 
+  [Hosting a single-page application on Amazon S3](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) 
+  [AWS 全局条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) 
+  [Building a Data Perimeter on AWS](https://docs.aws.amazon.com/whitepapers/latest/building-a-data-perimeter-on-aws/building-a-data-perimeter-on-aws.html) 

 **相关视频：**
+  [在 AWS 上保护您的数据块存储](https://youtu.be/Y1hE1Nkcxs8) 

# 保护传输中数据
<a name="protecting-data-in-transit"></a>

 *传输中数据*是指从一个系统发送到另一个系统的任何数据。这包括您工作负载中资源之间的通信以及其他服务与最终用户之间的通信。通过为传输中数据提供适当级别的保护，您就可以保护工作负载数据的机密性和完整性。

**保护 VPC 之间或本地位置之间的数据：**您可以使用[AWS PrivateLink](https://aws.amazon.com/privatelink/) 在 Amazon Virtual Private Cloud （Amazon VPC）之间或与 AWS 中托管的服务的本地连接之间创建安全的私有网络连接。您可以像访问自己私有网络上的服务那样访问 AWS 服务、第三方服务和其他 AWS 账户 账户中的服务。借助 AWS PrivateLink，无需使用互联网网关或 NAT，即可跨具有重叠 IP CIDR 的账户访问服务。您也不需要配置防火墙规则、路径定义或路由表。流量保留在 Amazon 主干网络上，不会流经互联网，所以数据会受到保护。您可以遵循行业特定的合规法规，例如《健康保险流通与责任法案》（HIPAA）和《欧美隐私盾协议》（EU/US Privacy Shield）。AWS PrivateLink 与第三方解决方案无缝协作，可创建精简的全球网络，从而让您加快向云端的迁移并利用可用的 AWS 服务。

**Topics**
+ [SEC09-BP01 实施安全密钥和证书管理](sec_protect_data_transit_key_cert_mgmt.md)
+ [SEC09-BP02 在传输中执行加密](sec_protect_data_transit_encrypt.md)
+ [SEC09-BP03 对网络通信进行身份验证](sec_protect_data_transit_authentication.md)

# SEC09-BP01 实施安全密钥和证书管理
<a name="sec_protect_data_transit_key_cert_mgmt"></a>

 传输层安全性协议（TLS）证书用于保障网络通信的安全，确立网站、资源和工作负载在互联网上以及专用网络上的身份。

 **期望结果：**一个安全的证书管理系统，可以在公钥基础设施（PKI，Public Key Infrastructure）中预置、部署、存储和续订证书。安全密钥和证书管理机制可防止证书私钥材料泄露，并定期自动续订证书。它还与其他服务集成，为工作负载内的计算机资源提供安全的网络通信和标识。密钥材料永远不应能够通过人员的身份来访问。

 **常见反模式：**
+  在证书部署或续订流程中执行人工步骤。
+  在设计私有证书颁发机构（CA，Certificate Authority）时，对 CA 层次结构的关注不够。
+  对公共资源使用自签名证书。

 **建立此最佳实践的好处：**
+  通过自动化的部署和续订流程简化证书管理 
+  鼓励使用 TLS 证书对传输中数据进行加密 
+  提高了证书颁发机构执行的证书操作的安全性和可审计性 
+  在 CA 层次结构的不同层级上组织管理职责 

 **在未建立这种最佳实践的情况下暴露的风险等级：**高

## 实施指导
<a name="implementation-guidance"></a>

 现代化工作负载广泛使用通过 PKI 协议（如 TLS）进行加密的网络通信。PKI 证书管理可能很复杂，但是，通过自动化的证书预置、部署和续订机制，可以减少与证书管理相关的麻烦。

 AWS 提供了两种服务用于管理通用 PKI 证书：[AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) 和 [AWS 私有证书颁发机构（AWS 私有 CA）](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html)。ACM 是客户用于预置、管理和部署证书的主要服务，适用于面向公众的工作负载以及私有 AWS 工作负载。ACM 使用 AWS 私有 CA 来颁发私有证书，并 [integrates](https://docs.aws.amazon.com/acm/latest/userguide/acm-services.html) 许多其它 AWS 托管式服务，以便为工作负载提供安全的 TLS 证书。ACM 还可以从 [Amazon Trust Services](https://www.amazontrust.com/repository/) 颁发公开可信的证书。ACM 的公有证书可用于面向公众的工作负载，因为默认情况下，现代浏览器和操作系统信任这些证书。

 利用 AWS 私有 CA，您可以建立自己的根证书颁发机构或从属证书颁发机构，并通过 API 颁发 TLS 证书。在 TLS 连接的客户端一侧控制和管理信任链的场景中，您可以使用这些类型的证书。除了 TLS 使用场景外，还可以使用 AWS 私有 CA 通过[自定义模板](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html)向 Kubernetes 容器组（pod）、Matter 设备产品认证、代码签名和其他使用场景颁发证书。您还可以使用 [IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html)，向已经为其颁发了 X.509 证书（使用您的私有 CA 签名）的本地工作负载提供临时 IAM 凭证。

 除了 ACM 和 AWS 私有 CA 之外，[AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html) 还针对为物联网设备预置、管理和部署 PKI 证书提供专业化支持。AWS IoT Core 提供专门的机制，用于大规模[将物联网设备载入](https://docs.aws.amazon.com/whitepapers/latest/device-manufacturing-provisioning/device-manufacturing-provisioning.html)到您的公有密钥基础设施中。

 某些 AWS 服务，例如 [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 和[弹性负载均衡](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)，提供自己的使用证书保护应用程序连接的能力。例如，API Gateway 和应用程序负载均衡器（ALB）都支持使用客户端证书的双向 TLS（mTLS），而这些证书是使用 AWS 管理控制台、CLI 或 API 创建和导出的。

**建立私有 CA 层次结构的注意事项 **

 当您需要建立私有 CA 时，请务必重视预先正确设计 CA 层次结构。在创建私有 CA 层次结构时，最佳实践是将 CA 层次结构的每个级别部署到单独的 AWS 账户 中。这个有意而为的步骤可减少 CA 层次结构中每个级别的暴露范围，使得发现 CloudTrail 日志数据中的异常变得更加简单，并可在某个账户遭到未经授权的访问时，缩小访问或影响的范围。根 CA 应位于自己的独立账户中，并且只能用于发布一个或多个中间 CA 证书。

 然后，在不同于根 CA 账户的账户中创建一个或多个中间 CA，为最终用户、设备或其他工作负载发布证书。最后，从您的根 CA 向中间 CA 颁发证书，后者随之向您的最终用户或设备颁发证书。有关规划 CA 部署和设计 CA 层次结构（包括弹性规划、跨区域复制、在组织中共享 CA 等）的更多信息，请参阅《[Planning your AWS 私有 CA deployment](https://docs.aws.amazon.com/privateca/latest/userguide/PcaPlanning.html)》。

### 实施步骤
<a name="implementation-steps"></a>

1.  确定您的使用场景所需的相关 AWS 服务：
   +  许多使用场景都可以利用现有的 AWS 公钥基础设施并使用 [AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html)。ACM 可用于为 Web 服务器、负载均衡器或公共可信证书的其他用途部署 TLS 证书。
   +  在您需要建立自己的私有证书颁发机构层次结构或需要使用可导出证书时，请考虑 [AWS 私有 CA](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html)。然后，可以使用 ACM 颁发[多种类型的终端实体证书](https://docs.aws.amazon.com/privateca/latest/userguide/PcaIssueCert.html)（使用 AWS 私有 CA）。
   +  对于必须为嵌入式物联网（IoT）设备大规模预置证书的使用场景，请考虑使用 [AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/x509-client-certs.html)。
   +  考虑在 [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 或[应用程序负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)等服务中使用原生 mTLS 功能。

1.  尽可能实施自动证书续订：
   +  将 [ACM 托管续订](https://docs.aws.amazon.com/acm/latest/userguide/managed-renewal.html)用于 ACM 颁发的证书以及集成的 AWS 托管服务。

1.  建立日志记录和审计跟踪：
   +  启用 [CloudTrail 日志](https://docs.aws.amazon.com/privateca/latest/userguide/PcaCtIntro.html)，以便跟踪对具有证书颁发机构的账户的访问。请考虑在 CloudTrail 中配置日志文件完整性验证，用于验证日志数据的真实性。
   +  定期生成和审查[审计报告](https://docs.aws.amazon.com/privateca/latest/userguide/PcaAuditReport.html)，列出您的私有 CA 已颁发或撤销的证书。这些报告可以导出到 S3 存储桶。
   +  部署私有 CA 时，您还需要创建一个 S3 存储桶，用于存储证书撤销列表（CRL，Certificate Revocation List）。有关根据工作负载要求配置此 S3 存储桶的指南，请参阅《[Planning a certificate revocation list (CRL)](https://docs.aws.amazon.com/privateca/latest/userguide/crl-planning.html)》。

## 资源
<a name="resources"></a>

 **相关最佳实践：**
+  [SEC02-BP02 使用临时凭证](sec_identities_unique.md) 
+ [SEC08-BP01 实施安全密钥管理](sec_protect_data_rest_key_mgmt.md)
+  [SEC09-BP03 对网络通信进行身份验证](sec_protect_data_transit_authentication.md) 

 **相关文档：**
+  [How to host and manage an entire private certificate infrastructure in AWS](https://aws.amazon.com/blogs/security/how-to-host-and-manage-an-entire-private-certificate-infrastructure-in-aws/) 
+  [How to secure an enterprise scale ACM Private CA hierarchy for automotive and manufacturing](https://aws.amazon.com/blogs/security/how-to-secure-an-enterprise-scale-acm-private-ca-hierarchy-for-automotive-and-manufacturing/) 
+  [Private CA best practices](https://docs.aws.amazon.com/privateca/latest/userguide/ca-best-practices.html) 
+  [How to use AWS RAM to share your ACM Private CA cross-account](https://aws.amazon.com/blogs/security/how-to-use-aws-ram-to-share-your-acm-private-ca-cross-account/) 

 **相关视频：**
+  [Activating AWS Certificate Manager Private CA（讲习会）](https://www.youtube.com/watch?v=XrrdyplT3PE) 

 **相关示例：**
+  [Private CA workshop](https://catalog.workshops.aws/certificatemanager/en-US/introduction) 
+  [物联网设备管理讲习会](https://iot-device-management.workshop.aws/en/)（包括设备预置） 

 **相关工具：**
+  [使用 AWS 私有 CA 的 Kubernetes 证书管理器插件](https://github.com/cert-manager/aws-privateca-issuer) 

# SEC09-BP02 在传输中执行加密
<a name="sec_protect_data_transit_encrypt"></a>

实施您根据贵组织的政策、监管义务和标准定义的加密要求，以帮助满足组织、法律和合规性要求。如要在虚拟私有云（VPC）外部传输敏感数据，务必仅使用具有加密功能的协议。即使在不可信的网络中传输数据，加密也有助于保持数据的机密性。

 **期望结果：**对资源与互联网之间的网络流量进行加密，以减少对数据的未经授权访问。根据您的安全需求，加密内部 AWS 环境中的网络流量。可以使用安全的 TLS 协议和密码套件对传输中数据进行加密。

 **常见反模式：**
+  使用已弃用的 SSL、TLS 和密码套件组件版本（例如，SSL v3.0、1024 位 RSA 密钥和 RC4 密码）。
+  允许未加密的（HTTP）流量进出面向公众的资源。
+  未在 X.509 证书到期前监控和替换证书。
+  对 TLS 使用自签名 X.509 证书。

 **在未建立这种最佳实践的情况下暴露的风险等级：**高 

## 实施指导
<a name="implementation-guidance"></a>

 AWS 服务提供使用 TLS 的 HTTPS 端点进行通信，从而可以在与 AWS API 通信时提供传输中加密。通过使用安全组，可以在虚拟私有云（VPC）中审计和阻止不安全的 HTTP 协议。也可以在 Amazon CloudFront 中或[应用程序负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#redirect-actions)上，将 HTTP 请求[自动重定向到 HTTPS](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html)。可以使用 [Amazon Simple Storage Service (Amazon S3) bucket policy](https://aws.amazon.com/blogs/storage/enforcing-encryption-in-transit-with-tls1-2-or-higher-with-amazon-s3/) 来限制通过 HTTP 上传对象的功能，从而有效地强制使用 HTTPS 将对象上传到存储桶。您可以完全控制计算资源，以便在整个服务中实施加密。您也可以利用 VPN 连接从外部网络或 [AWS Direct Connect](https://aws.amazon.com/directconnect/) 连接到您的 VPC 中，以便于对流量进行加密。验证客户端是否使用至少 TLS 1.2 来调用 AWS API，因为 [AWS has deprecated the use of earlier versions of TLS as of February 2024](https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/)。我们建议您使用 TLS 1.3。如果您对传输中加密有特殊要求，可以在 AWS Marketplace 中找到可用的第三方解决方案。

### 实施步骤
<a name="implementation-steps"></a>
+  **实施传输中加密：**您定义的加密要求应基于最新的标准和最佳实践，且仅允许使用安全协议。例如，配置一个安全组，仅允许通过 HTTPS 协议访问应用程序负载均衡器或 Amazon EC2 实例。
+  **在边缘服务中配置安全协议：**[使用 Amazon CloudFront 配置 HTTPS](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html)，并使用[适合您的安全状况和使用案例的安全配置文件](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/secure-connections-supported-viewer-protocols-ciphers.html#secure-connections-supported-ciphers)。
+  **将 [VPN 用于外部连接](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html)：**考虑使用 IPsec VPN 来保护点对点或网络对网络连接，以帮助实现数据隐私和完整性。
+  **在负载均衡器中配置安全协议：**选择一个安全策略，该策略提供受客户端支持且将要连接到侦听器的强大密码套件。[为应用程序负载均衡器创建 HTTPS 侦听器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)。
+  **在 Amazon Redshift 中配置安全协议：**将集群配置为要求[安全套接字层（SSL）或传输层安全性协议（TLS）连接](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)。
+  **配置安全协议：**查看 AWS 服务文档，以确定传输中加密功能。
+  **上传到 Amazon S3 存储桶时配置安全访问：**使用 Amazon S3 存储桶策略控制措施[执行对数据的安全访问](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)。
+  **不妨考虑使用 [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/)：**ACM 允许您预置、管理和部署用于 AWS 服务的公有 TLS 证书。
+  **不妨考虑使用 [AWS 私有证书颁发机构](https://aws.amazon.com/private-ca/) 满足私有 PKI 需求：**AWS 私有 CA 允许您创建私有证书颁发机构（CA）层次结构，以签发可用于创建加密 TLS 通道的终端实体 X.509 证书。

## 资源
<a name="resources"></a>

 **相关文档：**
+ [ 将 HTTPS 与 CloudFront 搭配使用 ](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html)
+ [ 使用 AWS Virtual Private Network 将 VPC 连接到远程网络](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html)
+ [ 为应用程序负载均衡器创建 HTTPS 侦听器 ](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)
+ [ 教程：在 Amazon Linux 2 上配置 SSL/TLS ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-2.html)
+ [ 使用 SSL/TLS 加密与数据库实例的连接 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
+ [ 配置连接的安全选项 ](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-ssl-support.html)

# SEC09-BP03 对网络通信进行身份验证
<a name="sec_protect_data_transit_authentication"></a>

 使用传输层安全性协议（TLS）或 IPsec 等支持身份验证的协议来验证通信的身份。

 将您的工作负载设计为在服务和应用程序之间通信或与用户通信时，使用经过身份验证的安全网络协议。使用支持身份验证和授权的网络协议，可以加强对网络流量的控制，并减少未授权访问的影响。

 **期望结果：**工作负载具有明确定义的数据面板和控制面板，它们控制流量在服务之间的流动。在技术上可行的情况下，流量将使用经过身份验证和加密的网络协议。

 **常见反模式：**
+  工作负载中存在未加密或未经身份验证的流量。
+  在多个用户或实体之间重用身份验证凭证。
+  仅依赖网络控制作为访问控制机制。
+  创建自定义身份验证机制，而不是依赖行业通用身份验证机制。
+  VPC 中的服务组件或其它资源之间有过于宽松的流量流动。

 **建立此最佳实践的好处：**
+  限制未经授权访问工作负载某一部分的影响范围。
+  提供更高级别的保障，即操作只能由经过身份验证的实体执行。
+  通过明确定义和强制执行预期的数据传输接口，改善服务的解耦。
+  通过请求归因和明确定义的通信界面，增强监控、日志记录和事件响应。
+  通过将网络控制与身份验证和授权控制相结合，为您的工作负载提供深度防御。

 **在未建立这种最佳实践的情况下暴露的风险等级：**低 

## 实施指导
<a name="implementation-guidance"></a>

 您的工作负载的网络流量模式可分为两类：
+  *东西向流量*代表构成工作负载的服务之间的流量。
+  *南北向流量*代表您的工作负载和使用器之间的流量。

 对南北向流量进行加密是常见做法，而使用经过身份验证的协议保护东西向流量则不太常见。现代安全实践建议，仅靠网络设计并不足以在两个实体之间建立可信关系。当两项服务可能位于公共网络边界内时，极佳做法仍然是对这些服务之间的通信进行加密、身份验证和授权。

 例如，无论请求来自哪个网络，AWS 服务 API 都使用 [AWS 签名版本 4（SigV4）](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)签名协议对调用方进行身份验证。这种身份验证可确保 AWS API 可以验证请求操作的身份，然后可以将该身份与策略结合起来，作出授权决策，以确定是否应该允许该操作。

 [Amazon VPC Lattice](https://docs.aws.amazon.com/vpc-lattice/latest/ug/access-management-overview.html) 和 [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html) 等服务允许您使用相同的 SigV4 签名协议，为自己的工作负载中的东西向流量添加身份验证和授权。如果您的 AWS 环境之外的资源要与服务进行通信，而服务需要基于 SigV4 的身份验证和授权，则您可以对非 AWS 资源使用 [AWS Identity and Access Management（IAM）Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) 来获取临时 AWS 凭证。这些凭证可用于对使用 SigV4 的服务请求进行签名，以授权访问权限。

 验证东西向流量的另一种常见机制是 TLS 双向身份验证（mTLS）。许多物联网（IoT）、企业对企业应用程序和微服务都使用 mTLS，通过使用客户端和服务器端 X.509 证书来验证 TLS 通信两端的身份。这些证书可以由 AWS 私有证书颁发机构（AWS 私有 CA）颁发。可以使用 [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-mutual-tls.html) 等服务，针对工作负载间或工作负载内的通信提供 mTLS 身份验证。[应用程序负载均衡器还支持将 mTLS](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/mutual-authentication.html) 用于内部或外部工作负载。虽然 mTLS 为 TLS 通信的两端提供身份验证信息，但它不提供授权机制。

 最后，OAuth 2.0 和 OpenID Connect（OIDC）这两种协议通常用于控制用户对服务的访问，但如今在服务间流量中也变得越来越流行。API Gateway 提供了 [JSON Web 令牌（JWT）授权方](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-jwt-authorizer.html)，允许工作负载使用 OIDC 或 OAuth 2.0 身份提供商颁发的 JWT 来限制对 API 路由的访问。可依据 OAuth2 范围来作出基本授权决策，但授权检查仍需要在应用层实现，仅靠 OAuth2 范围无法支持更复杂的授权需求。

### 实施步骤
<a name="implementation-steps"></a>
+  **定义并记录您的工作负载网络流：**实施深度防御策略的第一步是定义工作负载的流量。
  +  创建数据流示意图，明确定义构成工作负载的不同服务之间如何传输数据。此示意图是强制这些流量通过经身份验证的网络渠道传输的第一步。
  +  在开发和测试阶段对您的工作负载进行检测，以验证数据流示意图是否准确反映了工作负载在运行时的行为。
  +  在执行威胁建模练习时，数据流示意图可能也很有用，如《[SEC01-BP07 使用威胁模型识别威胁并确定缓解措施的优先级](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_securely_operate_threat_model.html)》中所述。
+  **建立网络控制：**考虑使用 AWS 功能建立起与数据流相符的网络控制。虽然网络边界不应该是唯一的安全控制措施，但它们在深度防御策略中提供了一个安全层来保护您的工作负载。
  +  使用[安全组](https://docs.aws.amazon.com/vpc/latest/userguide/security-groups.html)来建立、定义和限制资源之间的数据流。
  +  考虑使用 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) 与 AWS 以及支持 AWS PrivateLink 的第三方服务通信。通过 AWS PrivateLink 接口端点发送的数据保留在 AWS 网络主干内，而不通过公共互联网传输。
+  **在工作负载中实施跨服务的身份验证和授权：**选择极其适合在工作负载中提供经过身份验证的加密流量的一组 AWS 服务。
  +  考虑使用 [Amazon VPC Lattice](https://docs.aws.amazon.com/vpc-lattice/latest/ug/what-is-vpc-lattice.html) 来保护服务间的通信。VPC Lattice 可以结合使用 [Sigv4 身份验证与身份验证策略](https://docs.aws.amazon.com/vpc-lattice/latest/ug/auth-policies.html)来控制服务间的访问。
  +  对于使用 mTLS 进行的服务间通信，请考虑使用 [API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-mutual-tls.html) 和[应用程序负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/mutual-authentication.html)。[AWS 私有 CA](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) 可用于建立私有 CA 层次结构，该层次结构能够颁发与 mTLS 结合使用的证书。
  +  与使用 OAuth 2.0 或 OIDC 的服务集成时，可以考虑[使用 JWT 授权方的 API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-jwt-authorizer.html)。
  +  对于工作负载和物联网设备之间的通信，可以考虑使用 [AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/client-authentication.html)，它提供多种网络流量加密和身份验证选项。
+  **监控未经授权的访问：**持续监控非预期的通信渠道、试图访问受保护资源的未授权主体以及其它不当访问模式。
  +  如果使用 VPC Lattice 来管理对服务的访问，请考虑启用和监控 [VPC Lattice 访问日志](https://docs.aws.amazon.com/vpc-lattice/latest/ug/monitoring-access-logs.html)。这些访问日志包括有关请求实体的信息、源和目的地 VPC 等网络信息以及请求元数据。
  +  考虑启用 [VPC 流日志](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)，以捕获网络流量的元数据并定期检查是否存在异常。
  +  有关规划、模拟和响应安全事件的更多指导，请参阅《[AWS Security Incident Response Guide](https://docs.aws.amazon.com/whitepapers/latest/aws-security-incident-response-guide/aws-security-incident-response-guide.html)》和 AWS Well-Architected Framework 安全性支柱的[“事件响应”部分](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/incident-response.html)。

## 资源
<a name="resources"></a>

 **相关最佳实践：**
+ [ SEC03-BP07 分析公共和跨账户访问 ](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_permissions_analyze_cross_account.html)
+ [ SEC02-BP02 使用临时凭证 ](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_identities_unique.html)
+ [ SEC01-BP07 使用威胁模型识别威胁并确定缓解措施的优先级 ](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_securely_operate_threat_model.html)

 **相关文档：**
+ [ Evaluating access control methods to secure Amazon API Gateway APIs ](https://aws.amazon.com/blogs/compute/evaluating-access-control-methods-to-secure-amazon-api-gateway-apis/)
+ [ Configuring mutual TLS authentication for a REST API ](https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-mutual-tls.html)
+ [ How to secure API Gateway HTTP endpoints with JWT authorizer ](https://aws.amazon.com/blogs/security/how-to-secure-api-gateway-http-endpoints-with-jwt-authorizer/)
+ [ Authorizing direct calls to AWS services using AWS IoT Core credential provider ](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html)
+ 《[AWS Security Incident Response Guide](https://docs.aws.amazon.com/whitepapers/latest/aws-security-incident-response-guide/aws-security-incident-response-guide.html)》

 **相关视频：**
+ [AWS re:invent 2022: Introducing VPC Lattice ](https://www.youtube.com/watch?v=fRjD1JI0H5w)
+ [AWS re:invent 2020: Serverless API authentication for HTTP APIs on AWS](https://www.youtube.com/watch?v=AW4kvUkUKZ0)

 **相关示例：**
+ [ Amazon VPC Lattice Workshop ](https://catalog.us-east-1.prod.workshops.aws/workshops/9e543f60-e409-43d4-b37f-78ff3e1a07f5/en-US)
+ [ Zero-Trust Episode 1 – The Phantom Service Perimeter workshop ](https://catalog.us-east-1.prod.workshops.aws/workshops/dc413216-deab-4371-9e4a-879a4f14233d/en-US)