簡體   English   中英

我的S3存儲桶中的項目可公開訪問。 如何限制訪問權限,以便只能從我的應用程序內訪問S3存儲桶鏈接?

[英]Items in my S3 bucket are publicly accessible. How do I restrict access so that the S3 Bucket link is only accessible from within my app?

我有一個包含物品的S3存儲桶。 現在,任何人都可以通過鏈接訪問這些文件。 該鏈接包含一個UUID,因此某人實際訪問它的機會非常低。 盡管如此,由於GDPR即將來臨,我急於將其束縛住。

我不太確定要用什么Google來找到答案,而且經過搜索后,我離答案還很近。 我想知道其他人是否可以解決這個問題? 我只想在我的應用程序內單擊鏈接時才能訪問資源。

根據S3文檔 ,您應該能夠將對S3對象的訪問限制為某些HTTP引薦來源網址,並明確deny阻止對您應用之外的任何人的訪問:

{
   "Version": "2012-10-17",
   "Id": "http referer policy example",
   "Statement": [
     {
       "Sid": "Allow get requests referred by www.example.com and example.com.",
       "Effect": "Allow",
       "Principal": "*",
       "Action": "s3:GetObject",
       "Resource": "arn:aws:s3:::examplebucket/*",
       "Condition": {
         "StringLike": {"aws:Referer": ["http://www.example.com/*","http://example.com/*"]}
       }
     },
      {
        "Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::examplebucket/*",
        "Condition": {
          "StringNotLike": {"aws:Referer": ["http://www.example.com/*","http://example.com/*"]}
        }
      }
   ]
}

使用此設置的先決條件是構建S3鏈接包裝器服務並將其托管在您的應用程序的某個站點上。

這是使用Pre-signed URL的標准用例。

基本上,當您的應用程序生成包含鏈接的HTML頁面時,它會生成一個包含到期時間的特殊URL。 然后,它將該URL插入HTML鏈接代碼中(例如,對於圖像,您將使用: <img src='[PRE-SIGNED URL]'/>

生成預簽名URL的代碼非常簡單(大多數SDK中都提供了該代碼)。

將您的Amazon S3存儲桶保持私有狀態,以便其他人無法訪問內容。 然后,具有有效預簽名URL的任何人都將獲得內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM