仅适用于 S3 存储桶的 ECS 入口规则

ECS ingress rule only for S3 bucket

我正在使用 AWS 托管 Web 应用程序。前端客户端代码位于 S3 存储桶中。 CloudFront 分配指向 S3 存储桶。 Route53 DNS 记录指向 CloudFront 分配。

后端服务器代码运行在ECS上。我想锁定 ECS 服务以仅接受来自 S3 存储桶的请求。安全组入口规则只允许为 IP 地址指定一个 CIDR 块,但我只看到 S3、CloudFront 和 Route53 中的主机名。

这可以吗?

the backend server code runs on ECS. I want to lock down the ECS service to only accept requests from the S3 bucket.

评论里的人说的对,我会尽力解释的

在此设置中,您通常有一个静态部分(托管在 S3 上)和后端服务 - 在您的情况下在 ECS 上实现。 对 ECS 服务的请求来自客户端的浏览器,而不是来自 S3

因此,如果该应用程序用于 public 互联网,您没有真正的方法来“锁定”仅为该应用程序提供的服务。如果你有一些子网范围,你可以限制网络访问,例如为您的家庭、学校、公司、..

通常做的是让服务返回 CORS headers,例如:

access-control-allow-methods: OPTIONS,POST
access-control-allow-origin: https://mysite.example.com

取决于你为什么要求它以及你想要实现什么。

强制用户浏览器仅在使用特定站点发送请求时才接受响应(防止 cross-site 请求)。但是,无法 prevent/limits 不是来自浏览器的请求,例如机器人或恶意行为者。

如果它是一个需要身份验证的应用程序,那么您可以使用 presigned cookie 只允许经过身份验证的用户。