2013-09-05 84 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來做到這一點,但這意味着任何有鏈接的人都可以下載資源,無論他們是否登錄到網站。但是,我希望只有登錄的用戶才能下載該文件。這種抽象是可能的嗎? –