2013-09-05 71 views
4

我试图设置一个S3策略存储桶,但它根本不起作用。我需要允许上传文件给匿名用户,但只有经过身份验证的用户才能下载这些文件。我试过2认为:已认证用户的AWS S3策略

{ 
    "Id": "Policy1378380575437", 
    "Statement": [ 
{ 
    "Sid": "Stmt1378380436712", 
    "Action": [ 
    "s3:PutObject" 
    ], 
    "Effect": "Allow", 
    "Resource": "arn:aws:s3:::my_bucket/*", 
    "Principal": { 
    "AWS": [ 
     "*" 
    ] 
    } 
}, 
{ 
    "Sid": "Stmt1378380568645", 
    "Action": [ 
    "s3:GetObject" 
    ], 
    "Effect": "Allow", 
    "Resource": "arn:aws:s3:::my_bucket/*", 
    "Principal": { 
    "AWS": [ 
     "arn:aws:iam::1111111111:root" 
    ] 
    } 
} 
] 
} 

但问题是GetObject默认是允许的,那么它就意味着匿名用户可以下载文件。我试图添加一个新的Sid否认* GetObject,但拒绝总是覆盖允许。

我欣赏任何建议。

谢谢。

回答

1

我想你可以用ACL来做到这一点。将存储桶上的权限更改为需要ACL“已认证读取”。你的用户将不得不在他们的上传中设置ACL标志,否则他们会得到一个访问被拒绝的错误,但是如果你能让他们设置那个标志,我认为这可能适用于你。 Editing Bucket Permissions

+0

我需要排序与此相反。我需要一个用户只有登录到我的网站才能下载资源。我想我可以使用公共读取acl来做到这一点,但这意味着任何有链接的人都可以下载资源,无论他们是否登录到网站。但是,我希望只有登录的用户才能下载该文件。这种抽象是可能的吗? –