托管静态网站的 S3 存储桶策略
S3 Bucket Policy for Hosted Static Website
我有一个用于托管静态网站的 S3 存储桶。 This example 显示授予 每个人 访问指定存储桶中对象的策略(即使网站 public):
{
"Version":"2012-10-17",
"Statement":[{
"Sid":"PublicReadGetObject",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::example-bucket/*"]
}]
}
但是,我想让该网站仅供特定的亚马逊用户访问。所以在 this documentation 之后,我在 Principal
中指定了这些用户:
{
"Version":"2012-10-17",
"Statement":[{
"Sid":"PublicReadGetObject",
"Effect":"Allow",
"Principal": {
"AWS": "arn:aws:iam::Account-ID:user/Dave"
},
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::example-bucket/*"]
}]
}
虽然这正确地为谁可以通过 S3 控制台访问资源启用了权限,但它会导致 每个人 尝试访问托管网站时返回 403。
是否可以使用用户级权限来限制对托管存储桶的访问?
不可以,无法将用户级权限应用于 S3 中的静态网站存储桶。来自 Permissions Required for Website Access:
When you configure a bucket as a website, you must make the objects that you want to serve publicly readable.
我有一个用于托管静态网站的 S3 存储桶。 This example 显示授予 每个人 访问指定存储桶中对象的策略(即使网站 public):
{
"Version":"2012-10-17",
"Statement":[{
"Sid":"PublicReadGetObject",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::example-bucket/*"]
}]
}
但是,我想让该网站仅供特定的亚马逊用户访问。所以在 this documentation 之后,我在 Principal
中指定了这些用户:
{
"Version":"2012-10-17",
"Statement":[{
"Sid":"PublicReadGetObject",
"Effect":"Allow",
"Principal": {
"AWS": "arn:aws:iam::Account-ID:user/Dave"
},
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::example-bucket/*"]
}]
}
虽然这正确地为谁可以通过 S3 控制台访问资源启用了权限,但它会导致 每个人 尝试访问托管网站时返回 403。
是否可以使用用户级权限来限制对托管存储桶的访问?
不可以,无法将用户级权限应用于 S3 中的静态网站存储桶。来自 Permissions Required for Website Access:
When you configure a bucket as a website, you must make the objects that you want to serve publicly readable.