2014-11-23 174 views
2

我試圖允許只有在其URL(時間戳)上簽名的用戶才能訪問存儲桶文件。亞馬遜上的存儲桶權限

我添加了一個政策,到鬥:

{ 
    "Version": "2008-10-17", 
    "Id": "Policy1416760830285", 
    "Statement": [ 
     { 
      "Sid": "Stmt1416760822325", 
      "Effect": "Deny", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::my-bucket/*", 
      "Condition": { 
       "Null": { 
        "aws:TokenIssueTime": false 
       } 
      } 
     } 
    ] 
} 

但還是任何人都可以訪問我的網址。

任何想法?

回答

6

「任何人都可以訪問」你的對象的事實表明你已經授予對象的默認訪問權限,然後你試圖拒絕沒有簽名的訪問(預先簽名的URL)。

如果您希望僅使用預先簽名的URL提供對Amazon S3中對象的訪問權限,則不需要Bucket Policy。解釋...

默認情況下,Amazon S3中的所有對象都是私有的。然後,您可以添加權限,以便人們可以訪問您的對象。這可以通過以下方式進行:

  • 對單個對象
  • 水桶策略的訪問控制列表的權限(按照你上面)
  • IAM用戶和組

一個Pre-Signed URL可用於授予對S3對象的訪問權限,作爲「覆蓋」訪問控制的一種方式。一個通常爲私人的對象可以通過追加到期時間和簽名通過URL訪問。這是在不需要Web服務器的情況下提供私人內容的好方法。

如果你的目標是服務內容只有在使用預簽名URL,然後:

  • 不分配通過上面列出的常規方法的任何權限(這讓他們的私人默認)
  • 使用預先簽名的URL訪問對象

這樣,訪問對象的唯一方法就是使用預先簽名的URL(具有簽名)。不需要存儲桶策略。

+0

謝謝約翰。 我的問題是桶中的對象是共享的。 我禁用了共享,現在只允許使用預先簽名的URL。 – user3510408 2014-11-24 07:31:53