[英]How do I restrict GCP load balancer access by domain, domain's IP or GKE ingress IP?
[英]Is it possible to have a GET access to private S3 files based on domain or IP?
我在 S3 中有一个私有存储桶。 我可以在 S3 中上传文件,但是当我想查看/下载文件时,我收到“拒绝访问”消息。
现在,我无法使用 signedURL。
我想允许基于我的服务器 IP / 域下载我的文件。 是否可以在存储桶策略级别进行管理? 我在 inte.net 中找到的所有内容都将我的存储桶转换为公共存储桶,这不是我想要的。
您可以使用aws:Referer ,如下所示:
{
"Version":"2012-10-17",
"Id":"http referer policy example",
"Statement":[
{
"Sid":"Allow get requests originating from www.example.com and example.com.",
"Effect":"Allow",
"Principal":"*",
"Action":["s3:GetObject","s3:GetObjectVersion"],
"Resource":"arn:aws:s3:::awsexamplebucket1/*",
"Condition":{
"StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
}
}
]
}
然而,这是相当容易规避的保护,不应该依赖于绝对安全:
aws:referer不应用于防止未经授权的各方直接发出 AWS 请求。 提供它只是为了让客户保护他们的数字内容,例如存储在 Amazon S3 中的内容,以免在未经授权的第三方网站上被引用。
不确定我们是否拥有了解您的问题的所有详细信息,例如,您是否拥有存储桶的所有权等。
鉴于您询问 IP 白名单,这里有一个指南: https://www.cloudsavvyit.com/5761/how-to-whitelist-ip-addresses-to-access-an-aws-s3-bucket/
所以是的,如果您对 s3 拥有必要的所有权,这一切都应该是可能的
根据您希望如何使用它,您可以使用以下选项。
签约Cookies
如果您试图限制对资产的访问,除非有人公开访问您的网站,这个想法的解决方案是在您的 S3 存储桶前面添加 CloudFront(最好为 S3 使用一个来源,为您的应用程序使用另一个来源,但都在同一域下) .
使用此方法 go 后,您可以使用Signed Cookies ,这将至少强制用户通过安全签名者访问。 与签名 URL 不同,这是一次性完成的,不会影响现有的代码库(没有资产的自定义 URL)。
推荐人 Header
虽然不理想,但您可以使用 referer header 作为存储桶策略的条件或附加到 CloudFront 分配时作为WAF规则。 需要明确的是,这只是一个 header ,任何人都可以设置。 如果任何信息是敏感的,则不要使用此选项。
有关此选项的更多信息,请参阅如何使用 AWS WAF、Amazon CloudFront 和 Referer 检查文档防止热链接。
VPC 网关端点
如果与 S3 的唯一通信是通过连接到 S3 API 的实例(例如通过 SDK 或 CLI),则保持 S3 存储桶私有的首选方法。 如果您在浏览器中从 S3 向用户公开提供内容,这将不起作用。
通过为 S3 创建网关端点,您可以在 S3 存储桶策略中为aws:SourceVpce
创建条件,这将允许您将GetObject
操作限制为仅此连接。
IP 地址
正如您可以通过referer
header 将其列入白名单一样,您也可以通过源地址 IP 将其列入白名单。 此选项仅适用于访问 object 的源是固定 IP 地址的情况,例如通过 NAT 连接出站的 EC2 实例。 如果您正在运行一个公共网站并且资产在浏览器中提供,则此选项不可行,因为需要列入白名单的 IP 将是客户端而不是服务器。
这可以通过使用IpAddress
条件的存储桶策略或通过将IPSet附加到附加到 CloudFront 的 WAF 来执行。
概括
以上是所有可用的选项,其中一些选项优于其他选项。 这完全取决于您如何使用 S3,并且您可以使用其中的多个来进一步锁定它。
您可以使用 NotIpAddress 条件将特定 IP 地址限制到存储桶。 如果您仍然收到访问被拒绝的信息,请检查文件的内容是否未使用 KMS 密钥加密,如果您没有访问 KMS 密钥的权限,这将阻止用户通过 UI 下载文件。
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::awsexamplebucket1",
"arn:aws:s3:::awsexamplebucket1/*"
],
"Condition": {
"NotIpAddress": {"aws:SourceIp": "54.240.143.0/24"}
}
}
]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.