CloudFront - 限制访问 Application Load Balancer

发表时间:2021-04-26 18:02

对于 Web 应用程序或由 Elastic Load Balancing 中的 ApplicationLoad Balancer 提供的其他内容,CloudFront 可以缓存对象并将它们直接提供给用户(查看者),从而减少 Application Load Balancer的负载。但是,如果用户可以绕过 CloudFront 并直接访问 Application Load Balancer,则无法获得这些益处。


但是,您可以配置 AmazonCloudFront 和 Application Load Balancer,以防止用户直接访问 Application Load Balancer。这使得用户只能通过 CloudFront 访问 Application Load Balancer,从而确保您获得使用 CloudFront 的益处。


要防止用户直接访问 Application Load Balancer 并仅允许通过 CloudFront 进行访问,请完成以下步骤:

1. 配置CloudFront的自定义 HTTP 标头。

2. 配置ApplicationLoad Balancer为仅转发包含此自定义 HTTP 标头的请求。

完成这些步骤后,用户只能通过 CloudFront 访问您的 ApplicationLoad Balancer。


步骤一:配置 CloudFront 的自定义 HTTP 标头


此使用案例依赖于对自定义标头名称和值保密。如果标头名称和值没有保密,其他 HTTP 客户端可能会将它们包含在直接发送到 Application Load Balancer 的请求中。这可能会导致 Application LoadBalancer 的行为看起来就好像请求来自 CloudFront,但实际上请求并非来自 CloudFront。为防止这种情况,请将自定义标头名称和值保密。


1. 登录您的AWS账号,转到CloudFront控制台中。


2. 使用源设置中的源自定义标题设置。


3. 输入标头名称( X-Custom-Header ) 及其值 ( random-value-0123456789) 。


本示例中的标头名称和值仅用于演示。在生产环境中,请使用随机生成的值。将标题名称和值视为安全凭证,如用户名和密码。因此,请定期轮换标头名称和值,并使用 HTTPS 进行源请求。


4. 修改之后,等待CloudFront的分配状态为Deployed,大概需要等待十分钟左右。



步骤二:配置Application Load Balancer为仅转发包含此自定义 HTTP 标头的请求


1、在Amazon EC2 控制台中打开负载均衡器页面。选择作为CloudFront 分配源的负载均衡器,然后选择侦听器选项卡;对于正在修改的侦听器,请选择查看/编辑规则。具体步骤如下图所示:



2、选择图标以添加规则,选择 InsertRule。


3、对于新规则,请执行以下操作:

  1. 选择添加条件,然后选择 Http 标头。输入在CloudFront中配置的 HTTP     标头名称和值。

  2. 选择添加操作,然后选择转发到。选择要转发请求的目标组。

  3. 选择保存以创建新规则。


4、选择图标以编辑规则,选择默认规则的编辑图标。

                           

5、对于默认规则,请执行以下操作:

a. 删除默认操作。


b. 选择添加操作,然后选择返回固定响应。


c. 对于响应代码,输入 403。

d. 对于响应正文,输入 Access denied。

e. 选择更新以更新默认规则。


最后,可以通过向 CloudFront 分配发送请求和向 Application Load Balancer 发送一个请求来验证该解决方案是否有效。对CloudFront 的请求将返回您的Web 应用程序或内容;直接访问Application Load Balancer 的请求将返回403,并带有纯文本消息的响应Access denied。


测试情况:

访问ApplicationLoad Balancer 域名出现Accessdenied;

访问CloudFront 域名能正常访问。



产品和服务  
解决方案  
客户案例
关注我们
联系我们
- 海外代付
- Amazon Web Services
姓名
*
职称
*
电话
*
邮箱
*
公司
*
地址
*
需求
*
提交
扫描二维码关注我们,获取更多云端资讯。
*您已详阅本公司的 隐私权声明,并同意本公司依法搜集、处理及利用您的个人资料