在没有公共子网的私有子网中运行Amazon ElasticBeanstalk实例

问题描述 投票:1回答:2

我想从我的ElasticBeanstalk应用访问我的AWS账户中的资源,例如Kinesis和DynamoDB。 ElasticBeanstalk应用程序不提供任何与Web相关的流量,而仅侦听Kinesis Stream或其他资源并将其写入DynamoDB等文件中进行处理。

我有以下问题:1.此Web Server层或Worker层的最佳环境是什么?我的应用程序不提供任何网络流量,但同时,Worker层似乎是批处理作业的一部分,并且与SQS队列绑定。我可以根据网络流量自动扩展Beanstalk env,并在Web服务器层上尝试了几次,并且运行良好。2.如果仅想访问我的AWS账户中的DynamoDB,Kinesis资源,是否可以将所有EC2实例放在专用子网中?3.为什么大多数标准的ElasticBeanstalk云信息模板被分为公共子网和私有子网,实例在私有子网中,而ELB和NAT网关在公共子网中。这更安全吗?如果黑客进入了公共子网,他们还不能进入私有子网,从而进入您的应用程序吗?

amazon-elastic-beanstalk
2个回答
0
投票

如果您的实例仅需要连接到其他AWS服务,则应:

  1. 从您的VPC上删除并删除Internet网关,以消除外部人不当地访问您的实例,服务或帐户的任何可能,
  2. 将您的实例放置在专用子网中,
  3. 将VPC端点添加到您的VPC,以通过AWS网络内部连接到Kinesis和DynamoDB,然后...
  4. 配置VPC以使用端点。

请不要将您的实例连接到NAT网关。对于仅连接到均提供VPC终端节点的AWS服务的应用程序,这不是最佳实践。


-1
投票

如果您的Beanstalk应用程序不需要对公共Internet可见,那么最好在专用子网中进行配置。

  1. 很难根据问题中的信息回答这个问题,但是听起来您当前的环境合适。

  2. 是的,您可以将EC2实例放入一个私有子网中,如果不需要公共Internet访问,建议您这样做。如果您的服务需要与其他AWS服务进行通信,则应使用PrivateLink,但如果该服务不支持,则需要使用NATGateway。

    您需要一个EC2 instance in a public subnet才能连接到任何私有EC2实例。您应该对此公共实例应用安全加固,并且可以在不使用它时将其关闭。

  3. 分割专用和公用子网是一种标准的安全做法,其简单原因是您不希望关键服务出现在公用Internet上。从理论上讲,坚定的黑客可以进入您的私有实例(如果它们位于公共网络中),但是您可以尽可能地锁定公共访问以防止这种情况(例如,Web应用程序防火墙,安全组,ALB等)。

© www.soinside.com 2019 - 2024. All rights reserved.