

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

# 验证 ELB 负载均衡器是否需 TLS 终止
<a name="verify-that-elb-load-balancers-require-tls-termination"></a>

*Priyanka Chaudhary，Amazon Web Services*

## Summary
<a name="verify-that-elb-load-balancers-require-tls-termination-summary"></a>

在亚马逊网络服务 (AWS) 云上，Elastic Load Balancing (ELB) 会自动将传入的应用程序流量分配到多个目标，例如亚马逊弹性计算云 (Amazon EC2) 实例、容器、IP 地址和 AWS Lambda 函数。负载均衡器使用侦听器定义负载均衡器用来接受来自用户的流量的端口和协议。应用程序负载均衡器在应用层做出路由决策并使用 HTTP/HTTPS 协议。经典负载均衡器使用 TCP 或安全套接字层 (SSL) 协议在传输层做出路由决策，或使用 HTTP/HTTPS 在应用层做出路由决策。

此模式提供了安全控制，用于检查应用程序负载均衡器和经典负载均衡器的多种事件类型。调用该函数时，AWS Lambda 会检查事件，并确保负载均衡器合规。

该函数通过以下 API 调用启动 Amazon Events CloudWatch 事件：[CreateLoadBalancer[CreateLoadBalancerListeners[DeleteLoadBalancerListeners](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_DeleteLoadBalancerListeners.html)](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_CreateLoadBalancerListeners.html)](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_CreateLoadBalancer.html)、、[CreateLoadBalancerPolicy](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_CreateLoadBalancerPolicy.html)、[SetLoadBalancerPoliciesOfListener](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_SetLoadBalancerPoliciesOfListener.html)、[CreateListener](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateListener.html)、[DeleteListener](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DeleteListener.html)、和[ModifyListener](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_ModifyListener.html)。当事件检测到其中一个事件时 APIs，它会调用运行 Python 脚本的 AWS Lambda。Python 脚本会进行评估以查看侦听器是否包含 SSL 凭证，以及所应用的策略是否使用传输层安全性协议（TLS）。如果确定 SSL 策略不是 TLS，则该函数会向用户发送包含相关信息的 Amazon Simple Notiﬁcation Service (Amazon SNS) 通知。 

## 先决条件和限制
<a name="verify-that-elb-load-balancers-require-tls-termination-prereqs"></a>

**先决条件**
+ 一个活跃的 AWS 账户

**限制**
+ 若非对负载均衡器侦听器进行了更新，否则此安全控制不会检查现有的负载均衡器。
+ 这种安全控制为区域性的。您必须将它部署到要监控的每个 AWS 区域。

## 架构
<a name="verify-that-elb-load-balancers-require-tls-termination-architecture"></a>

**目标架构**

![\[确保负载均衡器需要 TLS 终止。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/da99cda2-ac34-4791-a2bd-d37264d8d3d9/images/af92b3c8-32bb-45eb-a2a8-d8276fb3e824.png)


**自动化和扩展**
+ 如果您使用的是 [AWS Organ](https://aws.amazon.com/organizations/) izations，则可以使用 [AWS Cloudformation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) 在要监控的多个账户中部署此模板。

## 工具
<a name="verify-that-elb-load-balancers-require-tls-termination-tools"></a>

**AWS 服务**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS CloudFormation 可帮助您建模和设置 AWS 资源，快速一致地配置这些资源，并在资源的整个生命周期中对其进行管理。您可以使用模板来描述资源及其依赖关系，然后将它们作为堆栈一起启动和配置，而不必单独管理资源。
+ [Amazon CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) Events — Amazon CloudWatch Events 提供近乎实时的系统事件流，这些事件描述了 AWS 资源的变化。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) – AWS Lambda 是一项计算服务，支持无需预置或管理服务器即可运行代码。
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html) – Amazon Simple Storage Service (Amazon S3) 是一项高度可扩展的对象存储服务，可用于各种存储解决方案，包括网站、移动应用程序、备份和数据湖。
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) — Amazon Simple Notiﬁcation Service (Amazon SNS) 可协调和管理发布者和客户端之间消息的传送或发送，包括 Web 服务器和电子邮件地址。订阅用户接收所有发布至他们所订阅主题的消息，并且一个主题的所有订阅用户收到的消息都相同。

**代码**

此模式包括以下附件：
+ `ELBRequirestlstermination.zip` — 用于安全控制的 Lambda 代码。
+ `ELBRequirestlstermination.yml`— 用于设置事件和 Lambda 函数的 CloudFormation 模板。

## 操作说明
<a name="verify-that-elb-load-balancers-require-tls-termination-epics"></a>

### 设置 S3 存储桶
<a name="set-up-the-s3-bucket"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 定义 S3 存储桶。 | 在 [Amazon S3 控制台](https://console.aws.amazon.com/s3/)，选择或创建 S3 存储桶来托管 Lambda 代码 .zip 文件。此 S3 存储桶必须与要评估的负载均衡器位于同一 AWS 区域 中。S3 存储桶名称是全局唯一的，并且命名空间由所有 AWS 账户共享。S3 存储桶名称不得包含前导斜杠。 | 云架构师 | 
| 上传 Lambda 代码。 | 将*附件*部分中提供的 Lambda 代码（`ELBRequirestlstermination.zip` 文件）上传至 S3 存储桶。 | 云架构师 | 

### 部署 CloudFormation 模板
<a name="deploy-the-cloudformation-template"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 启动 AWS CloudFormation 模板。 | 在与您[的 S3 存储桶相同的 AWS 区域中打开 AWS CloudFormation 控制台](https://console.aws.amazon.com/cloudformation/)，然后部署所附的模板`ELBRequirestlstermination.yml`。有关部署 AWS CloudFormation 模板的更多信息，请参阅 CloudFormation 文档中的在 [AWS CloudFormation 控制台上创建堆栈](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)。 | 云架构师 | 
| 填写模板中的参数。 | 启动模板时，系统将会提示输入以下信息：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/verify-that-elb-load-balancers-require-tls-termination.html) | 云架构师 | 

### 确认订阅
<a name="confirm-the-subscription"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 确认订阅。 |  CloudFormation 模板成功部署后，它会向您提供的电子邮件地址发送一封订阅电子邮件。您必须确认此电子邮件订阅，才能开始接收违规通知。 | 云架构师 | 

## 相关资源
<a name="verify-that-elb-load-balancers-require-tls-termination-resources"></a>
+ 在 [AWS CloudFormation 控制台上创建堆栈](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)（AWS CloudFormation 文档）
+ [什么是 AWS Lambda？](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) (AWS Lambda 文档)
+ [什么是经典负载均衡器？](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/introduction.html) （ELB 文档）
+ [什么是应用程序负载均衡器？](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) （ELB 文档）

## 附件
<a name="attachments-da99cda2-ac34-4791-a2bd-d37264d8d3d9"></a>

要访问与此文档相关联的其他内容，请解压以下文件：[attachment.zip](samples/p-attach/da99cda2-ac34-4791-a2bd-d37264d8d3d9/attachments/attachment.zip)