Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS上从S3到EC2的安全连接_Amazon Web Services_Amazon S3_Amazon Ec2 - Fatal编程技术网

Amazon web services AWS上从S3到EC2的安全连接

Amazon web services AWS上从S3到EC2的安全连接,amazon-web-services,amazon-s3,amazon-ec2,Amazon Web Services,Amazon S3,Amazon Ec2,关于AWS上的EC2和S3,我相信这是一个相当简单的问题 我有一个托管在S3上的静态网站,它连接到我想要保护的EC2实例上的MongoDB服务器。目前,它对端口27017上的所有internet 0.0.0.0/0开放,这是MDB的默认设置。出于安全原因,我想将入站流量限制为仅来自S3静态网站的请求。显然,S3不提供导致问题的固定地址 我唯一的想法是为我所在的S3区域的所有IP范围打开端口。AWS上的此文档说明了如何查找这些。尽管可能会在不另行通知的情况下更改 这是继续下去的方式还是我遗漏了一些

关于AWS上的EC2和S3,我相信这是一个相当简单的问题

我有一个托管在S3上的静态网站,它连接到我想要保护的EC2实例上的MongoDB服务器。目前,它对端口27017上的所有internet 0.0.0.0/0开放,这是MDB的默认设置。出于安全原因,我想将入站流量限制为仅来自S3静态网站的请求。显然,S3不提供导致问题的固定地址

我唯一的想法是为我所在的S3区域的所有IP范围打开端口。AWS上的此文档说明了如何查找这些。尽管可能会在不另行通知的情况下更改


这是继续下去的方式还是我遗漏了一些明显的东西。为S3分配IP的另一种方法可能是?

我认为不可能只允许S3托管站点访问ec2内的DB,因为S3不为您提供IP地址


因此,最好尝试另一种解决方案,例如不直接访问DB,而是通过ec2内的https服务代理,并限制mondo DB端口的入站流量。S3是存储服务,而不是计算服务,因此它无法向MongoDB发出请求。当S3提供静态网页时,浏览器将呈现该网页,当用户单击链接连接到MongoDB时,请求将从用户的计算机发送到MongoDB


所以MongoDB看到来自用户IP的请求。由于您不知道用户来自何处或IP范围,因此您别无选择,只能监听来自任何IP的流量。

s3不会请求ec2实例上的mongodb服务器。据我所知,浏览器中的js文件会请求在ec2实例上运行mongodb。在这种情况下,您必须在mongodb配置文件中添加消息头以允许CORS


CORS:

是否可以按域名而不是IP设置入站规则?或者将静态IP分配给S3。可能使用VPC端点,阅读本文,您误解了一些非常重要的内容。当您在S3上托管静态站点或提供静态托管的任何其他服务时,您的其他资源(本例中为MongoDB)将永远看不到来自S3的请求以及静态web服务器IP。它们来自查看网站的web浏览器。无法使用IP地址或域名来控制此访问,因为请求直接来自浏览器。这与S3或AWS无关。这是网站在浏览器上运行活动内容时的工作方式。您有一个设计问题。问题是您需要保护服务器,同时允许任何人从服务器访问资源。这里的主题变得相当广泛,部分取决于mongo资源的使用方式以及想要限制它的具体动机,但总体思路是一个可信的中间实体,不会向其规则不允许的内部资源发送任何内容。数据库通常通过API层(如AWS API网关)间接公开,通常与AWS Lambda结合使用。