我正在托管一个使用AWS的web应用程序。前端客户端代码位于S3桶中。CloudFront发行版指向S3桶。Route53 DNS记录指向CloudFront发行版。
后端服务器代码运行在ECS上。我希望锁定ECS服务,使其只接受来自S3桶的请求。安全组入口规则只允许为IP地址指定CIDR块,但我只在S3、CloudFront和Route53中看到主机名。
这有可能做到吗?
发布于 2021-12-17 16:05:04
后端服务器代码运行在ECS上。我希望锁定ECS服务,使其只接受来自S3桶的请求。
在评论中的人是对的,我会尽力解释。
在这个设置中,您通常有一个静态部分(托管在S3上)和后端服务--在您的示例中是在ECS上实现的。对ECS服务的请求来自客户端浏览器,而不是来自S3。
因此,如果应用程序是针对公共互联网的,则您没有真正的方法来“锁定”仅用于应用程序的服务。您可以限制网络访问,如果您有一些子网范围,例如,您的家庭,学校,公司,。
通常的做法是让服务返回CORS头,例如:
access-control-allow-methods: OPTIONS,POST
access-control-allow-origin: https://mysite.example.com这取决于你为什么要求它,以及你想实现什么。
这强制用户浏览器仅在使用特定站点发送请求时才接受响应(防止跨站点请求)。但是,没有办法防止/限制不来自浏览器的请求,例如机器人或恶意参与者。
如果它是一个需要身份验证的应用程序,那么您可以使用预签名曲奇只允许经过身份验证的用户。
https://stackoverflow.com/questions/70395283
复制相似问题