

# 安全性
<a name="security"></a>

安全性支柱包括保护数据、系统和资产以利用云技术来改善安全性的能力。

安全性支柱概述了设计原则、最佳实践和问题。有关具体实施的说明性指导，请参阅《[安全性支柱白皮书](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html?ref=wellarchitected-wp)》。

**Topics**
+ [设计原则](sec-design.md)
+ [定义](sec-def.md)
+ [最佳实践](sec-bp.md)
+ [资源](sec-resources.md)

# 设计原则
<a name="sec-design"></a>

在云中，有很多原则可帮助您提高工作负载的安全性：
+ **实施强大的身份验证基础：**实施最低权限原则，并通过对每一次与 AWS 资源之间的交互进行适当授权来强制执行职责分离。集中进行身份管理，并努力消除对长期静态凭证的依赖。
+ **保持可追溯性：**实时监控和审查对环境执行的操作和更改并发送警报。为系统集成日志和指标收集功能，以自动调查并采取行动。
+ **在所有层面应用安全措施：**利用多种安全控制措施实现深度防御。应用到所有层面（例如网络边缘、VPC、负载均衡、每个实例和计算服务、操作系统、应用程序和代码）。
+ **自动化安全性最佳实践：**借助基于软件的自动化安全机制，您能够以更为快速且更具成本效益的方式实现安全扩展。创建安全架构，包括实施可在版本控制模板中以代码形式定义和管理的控制措施。
+ **保护传输中数据和静态数据：**按敏感程度对数据进行分类，并根据情况采用加密、令牌化和访问控制等适当机制。
+ **限制对数据的访问：**利用相关机制和工具来减少或消除对于直接访问或手动处理数据的需求。这样可以降低处理敏感数据时数据处理不当、被修改以及人为错误的风险。
+ **做好应对安全性事件的准备工作：**制定符合组织要求的事件管理和调查政策和流程，做好应对意外事件的准备工作。开展意外事件响应模拟演练，并使用具有自动化功能的工具来提高检测、调查和恢复的速度。

# 定义
<a name="sec-def"></a>

 在云中实现安全性有七个领域的最佳实践：
+ 安全基础知识
+ Identity and access management
+ 检测
+ 基础设施保护
+ 数据保护
+ 事件响应
+ 应用程序安全性

 在构建任何工作负载之前，您需要确定可能影响安全性的实践。您需要控制谁可以执行什么操作。另外，您需要能够识别安全事件、保护系统和服务，并通过数据保护机制来保持数据的机密性和完整性。您应该具备一个定义明确且经过实践的流程来响应安全事件。这些工具和技术非常重要，因为它们有助于实现诸如避免财务损失或履行监管义务等目标。

 借助 AWS 责任共担模式，组织能够利用云服务实现其安全性与合规性目标。AWS 负责保护用于支持云服务的基础设施的安全，作为 AWS 的客户，您能够专注于使用这些服务来实现目标。还可通过 AWS 云更好地访问安全数据，并以自动化方式响应安全事件。

# 最佳实践
<a name="sec-bp"></a>

**Topics**
+ [安全基础知识](sec-security.md)
+ [Identity and access management](sec-iam.md)
+ [检测](sec-detection.md)
+ [基础设施保护](sec-infrastructure.md)
+ [数据保护](sec-dataprot.md)
+ [事件响应](sec-incresp.md)
+ [应用程序安全性](sec-appsec.md)

# 安全基础知识
<a name="sec-security"></a>

以下问题主要针对安全性方面的注意事项。（有关安全性问题的列表和最佳实践，请参阅[附录](a-security.md)。） 


| SEC 1：如何安全地运行工作负载？ | 
| --- | 
| 为了安全地操作您的工作负载，您必须将纲领性最佳实践应用于每个安全领域。将您在组织和工作负载级别的卓越运营中定义的要求和流程应用于所有领域。 及时了解 AWS 提供的建议、行业资源以及威胁情报，可帮助改进您的威胁模型和控制目标。通过自动化安全流程、测试和验证，您可以扩大安全运营规模。 | 

 在 AWS 中，建议根据账户的功能和合规性或数据敏感性要求分割不同的工作负载。

# Identity and access management
<a name="sec-iam"></a>

 身份和访问管理是信息安全计划的关键部分，可以确保只有经过授权和通过身份验证的用户和组件才能访问您的资源，并且只能以您要求的方式进行访问。例如，您应该定义一些主体（即可以在您的账户中执行操作的账户、用户、角色和服务）、创建与这些主体相匹配的策略，并实施严格的凭证管理。这些权限管理元素构成了身份验证和授权的核心。

 在 AWS 中，权限管理主要由 AWS Identity and Access Management（IAM）服务提供支持，您可以使用该服务控制对 AWS 服务和资源的用户和编程访问。您应该应用细粒度的策略向用户、组、角色或资源分配权限。您还可以应用强密码原则（例如复杂程度）来避免重复使用并强制执行多重身份验证（MFA）。您可以将联合身份验证与现有的目录服务配合使用。对于需要系统接入 AWS 的工作负载，IAM 支持通过角色、实例配置文件、身份联合验证和临时凭证进行安全访问。

 以下问题主要针对安全性方面的注意事项。


| SEC 2：如何管理人员和计算机的身份？ | 
| --- | 
|  在操作安全 AWS 工作负载时，您需要管理两类身份。了解您需要管理和授予访问权限的身份类型，有助于确保正确的身份能够在正确的条件下访问正确的资源。 人类身份：您的管理员、开发人员、操作员和最终用户需要身份才能访问您的 AWS 环境和应用程序。他们是您组织的成员或与您合作的外部用户，他们通过 Web 浏览器、客户端应用程序或交互式命令行工具与您的 AWS 资源进行交互。 机器身份：您的服务应用程序、操作工具和工作负载需要一个身份来向 AWS 服务发出请求以执行某种操作，例如读取数据。这些身份包括运行在您的 AWS 环境（例如 Amazon EC2 实例或 AWS Lambda 函数）中的计算机。您还可以为需要访问权限的外部各方管理计算机身份。此外，您还可以拥有位于 AWS 以外且需要访问您的 AWS 环境的计算机。  | 


| SEC 3：如何管理人员和计算机的权限？ | 
| --- | 
| 管理权限以控制对需要访问 AWS 和工作负载的人员和机器身份的访问。权限用于控制哪些人可以在什么条件下访问哪些内容。 | 

 凭证不得在任何用户或系统之间共享。应使用最低权限原则授予用户访问权限，并采用密码要求和强制执行 MFA 等最佳实践。应使用临时凭证和有限权限凭证（例如 AWS Security Token Service 发放的凭证）来执行编程访问（包括对 AWS 服务的 API 调用）。

如果用户需要在 AWS 管理控制台之外与 AWS 交互，则需要编程式访问权限。授予编程式访问权限的方法取决于访问 AWS 的用户类型。

要向用户授予编程式访问权限，请选择以下选项之一。


****  

| 哪个用户需要编程式访问权限？ | 目的 | 方式 | 
| --- | --- | --- | 
| IAM | （推荐）使用控制台凭证作为临时凭证来签署向 AWS CLI、AWS SDK 或 AWS API 发出的编程请求。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/wellarchitected/latest/framework/sec-iam.html)  | 
|  人力身份 （在 IAM Identity Center 中管理的用户）  | 使用临时凭证签署向 AWS CLI、AWS SDK 或 AWS API 发出的编程请求。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/wellarchitected/latest/framework/sec-iam.html)  | 
| IAM | 使用临时凭证签署向 AWS CLI、AWS SDK 或 AWS API 发出的编程请求。 | 按照《IAM 用户指南》中[将临时凭证用于 AWS 资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)中的说明进行操作。 | 
| IAM | （不推荐使用）使用长期凭证签署向 AWS CLI、AWS SDK 或 AWS API 发出的编程请求。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/wellarchitected/latest/framework/sec-iam.html)  | 

 AWS 提供了能够帮助您使用身份和访问管理的资源。为了帮助学习最佳实践，请浏览我们关于[管理凭证和身份验证](https://wellarchitectedlabs.com/Security/Quest_Managing_Credentials_and_Authentication/README.html?ref=wellarchitected-wp)、[控制人员访问](https://wellarchitectedlabs.com/Security/Quest_Control_Human_Access/README.html?ref=wellarchitected-wp)和[控制编程访问](https://wellarchitectedlabs.com/Security/Quest_Control_Programmatic_Access/README.html?ref=wellarchitected-wp)的动手实验室。

# 检测
<a name="sec-detection"></a>

 您可以使用检测控制来发现潜在的安全威胁或意外事件。检测控制是治理框架的重要组成部分，并且可以用于支持质量流程、法律或合规性义务，还可以用于威胁识别和响应工作。检测控制分为多种不同类型。例如，编制资产清单及其详细属性，有助于更有效地制定决策（以及进行生命周期管理），从而帮助建立运营基准。您还可以通过内部审核（是指对信息系统相关的控制措施进行的检查）来确保实践符合策略和要求，并确保您已根据定义的条件设置了正确的自动化警报通知。这些控制措施都是重要的响应手段，可以帮助组织确定和了解异常活动的范围。

 在 AWS 中，您可以通过处理可用于审核、自动化分析和触发警报的日志、事件以及监控来实施检测控制。CloudTrail 日志、AWS API 调用和 CloudWatch 可以提供对指标进行监控以及报警的功能，AWS Config 可以提供配置历史记录。Amazon GuardDuty 是一种托管的威胁检测服务，可以持续监控恶意或未经授权的行为，从而帮助您保护 AWS 账户和工作负载。还可以使用服务水平日志，例如，您可以使用 Amazon Simple Storage Service（Amazon S3）来记录访问请求。

 以下问题主要针对安全性方面的注意事项。


| SEC 4：如何检测和调查安全事件？ | 
| --- | 
| 从日志和指标中捕获和分析事件以获得可见性。对安全事件和潜在威胁采取行动，从而保护您的工作负载。 | 

 日志管理对于架构完善的工作负载至关重要，这其中原因众多，包括安全性或取证、法律或法规要求。分析日志并相应地做出响应至关重要，以便您能够识别潜在的安全事件。借助 AWS 提供的功能，您能够定义数据留存生命周期或定义数据保存、存档或最终删除的位置，从而更轻松地管理日志。这样，您就能够以更简单且更具成本效益的方式进行可预测且可靠的数据处理。

# 基础设施保护
<a name="sec-infrastructure"></a>

 基础设施保护包括满足最佳实践和组织或监管义务所必需的控制方法（例如深度防御）。使用这些方法对于在云中或本地持续成功运营至关重要。

 在 AWS 中，您可以通过使用 AWS 原生技术或使用 AWS Marketplace 提供的合作伙伴产品和服务来实施有状态和无状态数据包检查。您应该使用 Amazon Virtual Private Cloud（Amazon VPC）创建一个安全且可扩展的私有环境，您可以在其中定义拓扑结构，包括网关、路由表以及公有子网和私有子网。

 以下问题主要针对安全性方面的注意事项。


| SEC 5：如何保护网络资源？ | 
| --- | 
| 任何以某种形式连接至网络（互联网或专用网络）的工作负载都需要多层防御，以帮助防御基于外部和内部网络的威胁。 | 


| SEC 6：如何保护计算资源？ | 
| --- | 
| 工作负载中的计算资源需要多层防御，以帮助抵御外部和内部威胁。计算资源包括 EC2 实例、容器、AWS Lambda 函数、数据库服务、IoT 设备等。 | 

 在任何类型的环境中，我们都建议使用多层防御。在基础设施保护方面，许多概念和方法在跨云和本地模型中都有效。实施边界保护、监控入站点和出站点以及建立全面的日志记录、监控和警报机制对于制定有效的信息安全计划至关重要。

 AWS 客户能够定制或加强 Amazon Elastic Compute Cloud（Amazon EC2）、Amazon Elastic Container Service（Amazon ECS）容器或 AWS Elastic Beanstalk 实例的配置，并将配置捆绑到不可变的亚马逊机器映像（AMI）。之后，无论是由 Auto Scaling 启动还是手动启动，使用此 AMI 启动的所有新虚拟服务器（实例）都会收到加强的配置。

# 数据保护
<a name="sec-dataprot"></a>

 在构建任何系统之前，您应确定可能影响安全性的基本实践。例如，数据分类提供了一种基于敏感程度对组织数据进行分类的方法，加密通过让未经授权的用户无法获知数据的真正内容来保护数据。这些工具和技术非常重要，因为它们有助于实现诸如避免财务损失或履行监管义务等目标。

 在 AWS 中，以下实践有助于保护数据：
+  作为 AWS 客户，您拥有对自己的数据的完全控制权。
+  AWS 可帮助您更轻松地加密数据和管理密钥（包括定期密钥轮换），这些操作可以由 AWS 轻松自动执行，也可由您执行。
+  我们还提供包含文件访问和更改等重要内容的详细日志记录。
+  AWS 设计的存储系统具有优异的韧性。例如，Amazon S3 Standard、S3 Standard–IA、S3 One Zone-IA 和 Amazon Glacier 都设计为可以在一年内实现 99.999999999% 的对象持久性。这一持久性级别相当于平均每年有 0.000000001% 的对象丢失。
+  作为较大规模数据生命周期管理流程中的一部分，版本控制可以防止意外覆盖、删除数据和类似损害。
+  AWS 永远不会主动在区域之间移动数据。除非您明确使用相关功能或利用提供该功能的服务移动数据，否则放置在某个区域中的内容将保留在该区域中。

 以下问题主要针对安全性方面的注意事项。


| SEC 7：如何对数据进行分类？ | 
| --- | 
| 分类提供了一种基于重要程度和敏感度对数据进行分类的方法，以帮助您确定适当的保护和保留控制措施。 | 


| SEC 8：如何保护静态数据？ | 
| --- | 
| 通过实施多种控制措施来保护静态数据，以降低未经授权的访问或处理不当的风险。 | 


| SEC 9：如何保护传输中数据？ | 
| --- | 
| 通过实施多种控制措施来保护传输中数据，以降低未经授权的访问或丢失的风险。 | 

 AWS 提供了多种加密静态数据和传输中数据的方法。我们将这些功能内置在我们的服务中，这样您可以更轻松地加密数据。例如，我们为 Amazon S3 实施了服务器端加密（SSE），这样您可以更轻松地以加密方式存储数据。您还可以将整个 HTTPS 加密和解密过程（通常称为 SSL 终端）交给弹性负载均衡（ELB）来完成。

# 事件响应
<a name="sec-incresp"></a>

 即使采用极为成熟的预防和检测控制机制，组织仍应制定相关流程来响应安全事件并缓解安全事件可能带来的影响。工作负载的架构会极大地影响团队在意外事件发生期间采取有效行动、隔离或约束系统并将运行状态恢复到已知良好状态的能力。在安全事件发生之前确保相关工具和访问权限部署到位，而后通过 GameDay 活动定期进行意外事件响应演练，将有助于确保您的架构能够及时进行调查和恢复。

 在 AWS 中，以下实践有助于做出有效的意外事件响应：
+  我们提供包含文件访问和更改等重要内容的详细日志记录。
+  事件可以被自动处理，并且会启动通过使用 AWS API 自动做出响应的工具。
+  您可以使用 AWS CloudFormation 预置工具和“洁净室”。这样您就可以在安全且隔离的环境中进行取证。

 以下问题主要针对安全性方面的注意事项。


| SEC 10：如何预测、响应事件以及从意外事件中恢复？ | 
| --- | 
| 准备工作对于及时有效地调查、响应安全事件以及从安全事件中恢复至关重要，可以尽可能减少对组织的破坏。 | 

 确保您能够快速授予安全团队访问权限，而且系统可以自动隔离实例并自动捕获数据与状态信息用于取证。

# 应用程序安全性
<a name="sec-appsec"></a>

 应用程序安全（AppSec）介绍了如何设计、构建和测试所开发工作负载的安全属性的整个过程。组织中应该有经过适当培训的人员，了解构建和发布基础设施的安全属性，并使用自动化来发现安全问题。

 在软件开发生命周期（SDLC）和发布后流程的常规部分采用应用程序安全测试，有助于确保您拥有一种结构化机制来发现、修复和防止应用程序安全问题进入生产环境。

 在设计、构建、部署和操作工作负载时，应用程序开发方法应该包括安全控制机制。在此过程中，协调流程以持续减少缺陷并尽可能减少技术债务。例如，在设计阶段使用威胁建模有助于及早发现设计缺陷，这使得缺陷更易于修复，修复的成本更低，而不是等到以后再来缓解这些缺陷。

 在 SDLC 中，越早的阶段，解决缺陷的成本和复杂性通常就会越低。解决问题最简单的方法就是从一开始就不要有问题，所以从威胁模型开始有助于您在设计阶段专注于实现正确的结果。随着 AppSec 计划日渐成熟，您可以增加使用自动化执行的测试数量，提高向构建者提出的反馈的准确性，并减少安全审查所需的时间。所有这些操作都可以提高所构建软件的质量，并加快将新功能推向生产环境的速度。

 这些实施指南侧重于四个方面：组织和文化、管道*的*安全性、管道*中的*安全性以及依赖关系管理。每个方面都提供了一组可以实施的原则，并提供了有关如何设计、开发、构建、部署和操作工作负载的端到端视图。

 在 AWS 中，可以使用很多方法来处理应用程序安全计划。其中有些方法依赖于技术，而有些方法侧重于应用程序安全计划的人员和组织方面。

以下问题主要针对应用程序安全方面的注意事项。


| SEC 11：如何在整个设计、开发和部署生命周期中纳入并验证应用程序的安全属性？ | 
| --- | 
| 开展员工培训、执行自动化测试、了解依赖项，并验证各种工具和应用程序的安全属性，有助于降低生产工作负载中出现安全问题的可能性。 | 

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

 请参阅以下资源，详细了解安全方面的最佳实践。

## 文档
<a name="sec-doc"></a>
+  [AWS 云安全性](https://aws.amazon.com/security/?ref=wellarchitected-wp) 
+  [AWS 合规性](https://aws.amazon.com/compliance/?ref=wellarchitected-wp) 
+  [AWS 安全博客](http://blogs.aws.amazon.com/security/?ref=wellarchitected-wp) 
+  [AWS 安全成熟度模型](https://maturitymodel.security.aws.dev/en/0.-introduction/) 

## 白皮书
<a name="sec-wp"></a>
+  [安全支柱](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html?ref=wellarchitected-wp) 
+  [AWS 安全概述](https://d1.awsstatic.com/whitepapers/Security/AWS%20Security%20Whitepaper.pdf?ref=wellarchitected-wp) 
+  [AWS 风险和合规性](https://d1.awsstatic.com/whitepapers/compliance/AWS_Risk_and_Compliance_Whitepaper.pdf?ref=wellarchitected-wp) 

## 视频
<a name="sec-video"></a>
+  [AWS 安全中心](https://youtu.be/Wvyc-VEUOns?ref=wellarchitected-wp) 
+  [责任共担模式概述](https://www.youtube.com/watch?v=U632-ND7dKQ&ref=wellarchitected-wp) 