【发布时间】:2021-02-02 13:26:21
【问题描述】:
我已将 Fulls3Access 角色分配给 EC2。 EC2 上的网站能够上传和删除 S3 对象,但访问 s3 资产 url 被拒绝(这意味着我无法读取图像)。我已启用阻止公共访问设置。我想让一些文件夹保密,只有网站可以访问这些文件夹。我尝试在存储桶策略上设置诸如 sourceIp 和referer url 之类的公共读取条件,但以下不起作用,网站上的图像仍然不显示。任何人都有想法来启用和限制仅对网站的读取 s3 存储桶访问?
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::bucketname/assets/*", ]
},
{
"Sid": "AllowIP",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::bucketname/private/*",
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"ip1/32",
"ip2/32", ]
}
}
}
]
}
【问题讨论】:
-
你能澄清这部分吗? “我已启用阻止公共访问设置”。那么你能说“block public xxx”哪个是ON,哪个是OFF吗?除非在 UI 中发生更改,否则所有这些都应该关闭。我看不出存储桶策略有任何明显错误。最好将私有部分的访问权限授予通过实例配置文件分配给实例的角色,而不是 IP 地址条件。但这不会导致公共访问问题。
-
谢谢佩奇。 ON 中的“阻止公共访问”。通过关闭它,它解决了读取访问问题。现在我的问题是如何限制对某些前缀的访问。私人部分是什么意思?它是私有子网的 VPC 吗?
-
对不起,让我澄清一下。我的意思是“到你的私人部分”我。 e.
bucketname/private/。因此,如果您的实例具有实例配置文件,您可以根据 ec2 实例的角色允许访问。这要灵活得多。我用谷歌搜索了这个例子docs.databricks.com/administration-guide/cloud-configurations/… -
谢谢@petrch,让我测试一下。这个链接很有帮助。
标签: amazon-web-services amazon-s3 amazon-ec2