仅通过CloudFront访问ElasticBeanstalk

时间:2016-02-28 12:21:23

标签: amazon-web-services elastic-beanstalk amazon-cloudfront

我目前的设置包括CloudFront和Elastic Beanstalk。如何配置相应LoadBalancer的安全组,以便只有来自CloudFront的请求才能通过LoadBalancer?

3 个答案:

答案 0 :(得分:1)

可以通过使用云前端IP地址设置安全组并将EC2实例限制为该安全组来完成此操作。由于Cloudfront IP一直在变化,this will be updated with a Lambda Function

Full Directions Are Here,但这里有悬崖说明:

  1. AWS控制台 - > EC2 - >安全组

  2. 在与EB实例相同的VPC中创建安全组,确保创建以下标记:

    • AutoUpdate:true
    • 名称:cloudfront
    • 协议:http(或者,如果您修改脚本,可以是https或自定义内容)。
  3. 使用以下内容创建IAM策略:

  4. {   “版本”:“2012-10-17”,   “声明”:[     {       “效果”:“允许”,       “行动”:[         “日志:CreateLogGroup”         “日志:CreateLogStream”         “日志:PutLogEvents”       ]       “资源”:“arn:aws:logs:”     },     {       “效果”:“允许”,       “行动”:[         “EC2:DescribeSecurityGroups”         “EC2:AuthorizeSecurityGroupIngress”         “EC2:RevokeSecurityGroupIngress”       ]       “资源”:“”     }   ] }

    1. 在IAM中,使用上述政策创建角色

    2. 创建一个Lambda函数based on this source code,并为其指定在步骤#5中创建的角色。

    3. Use the sample at the bottom of the source code to test the function

    4. 当它因为您提取的JSON与测试请求中的哈希不匹配而失败时,请从错误消息中获取预期的哈希值,并将该测试样本中的md5值替换为该值。

    5. 重新运行测试。这次它会成功。

    6. 注意:看看您创建的群组,现在他们已经填充了一大堆CloudFront IP条目。

      1. AWS控制台 - > Elastic Beanstalk - >申请 - >环境 - >配置 - >实例 - 更新组以包括您创建的组的组ID。
      2. Lambda函数将使您的IP列表保持同步。

答案 1 :(得分:0)

您可以在 Elastic BeanStalk 上添加 IAM角色,以仅允许来自 CloudFront 的传入邮件。或者,您只能允许从某个端口访问 ELB实例,然后将 CloudFront 过滤到该端口。例如,Port 443HTTPS,通过Port 443授予 CloudFront ELB ,然后在您的安全组上,仅允许来自 CloudFront 将访问它的IP的入站访问实例。

检查this

答案 2 :(得分:0)

您可以创建仅允许CloudFront并自动更新的安全组。您还可以在发行版和Elastic Beanstalk环境之间添加自定义标头(预共享密钥)。

  1. https://github.com/awslabs/aws-cloudfront-samples
  2. https://aws.amazon.com/about-aws/whats-new/2015/12/now-add-or-modify-request-headers-forwarded-from-amazon-cloudfront-to-origin/