gkr*_*zek 4 policy acl amazon-s3 amazon-web-services aws-sdk
我试图限制我的存储桶以拒绝所有内容,但允许从一个特定 IAM 用户上传并根据referer
标头获取对象。这是我的政策:
{
"Version": "2012-10-17",
"Id": "Meteor refer policy",
"Statement": [
{
"Sid": "allow upload",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::556754141176:user/username"
},
"Action": "s3:PutObject*",
"Resource": [
"arn:aws:s3:::bucketname",
"arn:aws:s3:::bucketname/*"
]
},
{
"Sid": "Allow get",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "bucketname/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://myapp.com*",
"http://localhost*"
]
}
}
},
{
"Sid": "Explicit deny",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "bucketname/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://myapp.com*",
"http://localhost*"
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
此策略仅将 GetObject 指令正确地强制执行到引用标头,但我无法像我所说的那样向该用户上传任何内容。如果我取消显式拒绝,我可以从任何地方访问该对象,并且引用者并不重要。我的政策有什么问题吗?另外,我无法从控制台访问存储桶中的任何内容。我需要为此做什么?
谢谢,
默认情况下,Amazon S3 存储桶中的所有内容都是私有的。因此,只需向应允许的用户添加访问权限即可。
此外,仅授予权限PutObject
将仅允许该 API 调用,而不允许通过 AWS 管理控制台进行访问,这需要ListAllMyBuckets
. 因此,请确保上传用户具有必要的权限,或者仅使用允许的 API 调用。
所以:
GetObject
,您还应该删除"Resource": "bucketname/*",
,因为存储桶策略适用于它所附加到的存储桶这一事实是明确的PutObject
或授予额外权限即可使用适用于 Amazon S3 的 AWS 管理控制台(如下所示)以下是一组在 Amazon S3 管理控制台中授予上传访问权限的权限(感谢是否有 S3 策略用于将访问权限限制为仅查看/访问一个存储桶?):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1",
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucketname"
]
},
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4210 次 |
最近记录: |