本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
确保AWS负载均衡器使用安全的侦听器协议 (HTTPS、SSL/TLS)
由 Chandini Penmetsa (AWS) 和 Purushotham G K () 创作 AWS
摘要
在亚马逊网络服务 (AWS) 云上,Elastic Load Balancing 会自动将传入的应用程序流量分配到多个目标,例如亚马逊弹性计算云 (AmazonEC2) 实例、容器、IP 地址和 Lamb AWS da 函数。负载均衡器使用侦听器定义负载均衡器用来接受来自用户的流量的端口和协议。应用程序负载均衡器在应用程序层做出路由决策并使用. HTTP/HTTPS protocols. Network Load Balancers make routing decisions at the transport layer and use the Transmission Control Protocol (TCP), Transport Layer Security (TLS), User Datagram Protcol (UDP), or TCP_UDP protocols. Classic Load Balancers make routing decisions at either the transport layer, using TCP or Secure Sockets Layer (SSL) protocols, or at the application layer, using HTTP/HTTPS
您的组织可能有安全或合规性要求,即负载均衡器仅接受使用安全协议(例如HTTPS或SSL/TLS)的用户的流量。
此模式提供了一种安全控制,它使用 Amazon EventBridge 规则来监视CreateListener
和ModifyListener
API调用应用程序负载均衡器和网络负载均衡器,CreateLoadBalancerListeners
并CreateLoadBalancer
API调用经典负载均衡器。如果负载均衡器的侦听器协议使用HTTPUDP、TCP/或 TCP _,UDP则该控件将调用 Lambda 函数。Lambda 函数向亚马逊简单通知服务 (AmazonSNS) 主题发布一条消息,以发送包含负载均衡器详细信息的通知。
先决条件和限制
先决条件
一个活跃的AWS账户
接收违规通知的电子邮件地址
用于存储 Lambda 代码 .zip 文件的 Amazon Simple Storage Service(Amazon S3)存储桶。
限制
除非对负载均衡器侦听器进行了更新,否则此安全控制不会检查现有的负载均衡器。
此安全控制是区域性的,必须部署在您要监控的AWS区域。
架构
目标技术堆栈
Lambda 函数
亚马逊SNS话题
EventBridge 规则
目标架构
自动化和扩缩
如果您使用的是 Organi AWS zations,则可以使用 AWSCloudformation 将此模板部署 StackSets到您想要监控的多个账户中。
工具
AWS CloudFormation— AWS CloudFormation 是一项通过使用基础架构即代码来帮助您建模和设置AWS资源的服务。
亚马逊 EventBridge — Amazon EventBridge 提供来自您自己的应用程序、软件即服务 (SaaS) 应用程序和AWS服务的实时数据流,并将这些数据路由到 Lambda 函数等目标。
AWSLambda — Lambda 支持在不预配置或管理服务器的情况下运行代码。
Amazon S3 – Amazon Simple Storage Service (Amazon S3) 是一项高度可扩展的对象存储服务,可用于各种存储解决方案,包括网站、移动应用程序、备份和数据湖。
亚马逊 SNS — 亚马逊简单通知服务 (AmazonSNS) 协调和管理发布者与客户之间的消息传送或发送,包括网络服务器和电子邮件地址。订阅用户接收所有发布至他们所订阅主题的消息,并且一个主题的所有订阅用户收到的消息都相同。
最佳实践
确保所使用的SNS主题不可公开访问。有关更多信息,请参阅 AWS 文档。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
定义 S3 存储桶。 | 在 Amazon S3 控制台上,选择或创建一个具有不包含前导斜杠的唯一名称的 S3 存储桶。S3 存储桶名称是全球唯一的,命名空间由所有AWS账户共享。您的 S3 存储桶必须与要评估的负载均衡器位于同一区域中。 | 云架构师 |
将 Lambda 代码上传至 S3 存储桶。 | 将“附件”部分中提供的 Lambda 代码.zip 文件上传到定义的 S3 存储桶。 | 云架构师 |
部署 AWS CloudFormation 模板。 | 在AWS CloudFormation 控制台上,在与 S3 存储桶相同的AWS区域中,部署 “附件” 部分中提供的模板。在下一个操作说明中,提供参数的值。 | 云架构师 |
任务 | 描述 | 所需技能 |
---|---|---|
命名 S3 存储桶。 | 输入您在第一个操作说明中创建的 S3 存储桶的名称。 | 云架构师 |
提供 Amazon S3 前缀。 | 提供 Lambda 代码 .zip 文件在 S3 存储桶中的位置,不带前导斜杠(例如, | 云架构师 |
提供SNS主题ARN。 | 如果您想使用现有SNS主题发送违规通知,请提供SNS主题 Amazon 资源名称 (ARN)。要创建新SNS主题,请将该值保留为 | 云架构师 |
提供电子邮箱地址。 | 提供有效的电子邮件地址以接收 Amazon SNS 通知。 | 云架构师 |
定义日志记录级别。 | 定义 Lambda 函数的日志记录级别和频率。 | 云架构师 |
任务 | 描述 | 所需技能 |
---|---|---|
下载 模板。 | 下载 “附件” 部分中提供的 CloudFormation 模板。 | 云架构师 |
创建堆栈。 | 在与 S3 存储桶相同的区域中,导航到 CloudFormation 服务控制台,然后部署下载的模板。有关参数的详细信息,请参阅上一篇操作说明。 | 云架构师 |
验证资源。 | 堆栈创建完毕后,导航至资源选项卡,然后验证资源。模板将创建以下资源:
| 云架构师 |
任务 | 描述 | 所需技能 |
---|---|---|
确认订阅。 | 成功部署模板后,如果创建了新SNS主题,则会向参数中提供的电子邮件地址发送订阅电子邮件。您必须确认此电子邮件订阅才能接收违规通知。 | 云架构师 |
故障排除
事务 | 解决方案 |
---|---|
堆栈创建失败。错误发生在 GetObject。S3 错误代码: PermanentRedirect. S3 错误消息:存储桶位于此区域中:us-east-1。请使用此区域重试请求。 | 确保 S3 存储桶区域和堆栈部署区域相同。 |
堆栈创建失败。不再支持 python3.6 的运行时参数来创建或更新 Lambda 函数。AWS | 将第 186 行下载的模板从 Python 版本 3.6 更新至 3.9。 |
相关资源
附件
要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip