簡體   English   中英

通過查詢字符串通過Route53 A記錄訪問私有內容到s3存儲桶

[英]Access private content via query string to s3 bucket via Route53 A record

我正在嘗試使用具有指定生存時間的查詢字符串來限制對S3存儲桶中存儲的文件資源的訪問,(如此處所述, http://birkoff.net/blog/amazon-s3-query-string-authentication-using -php / )到我的存儲桶的別名。 例如在Route53我有類型別名A記錄,securefiles.mysite.com指向S3別名securefiles.mysite.com.s3-website-ap-southeast-2.amazonaws.com。

這對於使用標准S3地址尋址的文件非常有效: securefiles.mysite.com.s3-ap-southeast-2.amazonaws.com/privateresource.png?biglongquerystringsecurefiles.mysite.com.s3.amazonaws.com /privateresource.png?biglongquerystring,但是當我嘗試使用較短的securefiles.mysite.com/privateresource.png?biglongquerystring鏈接時,它失敗並顯示403,訪問被拒絕消息。

為了調查起見,我編輯了存儲桶策略以允許所有用戶訪問所有存儲桶資源

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "PublicReadGetObject",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::securefiles.mysite.com/*"
    }
]

}

現在,查詢字符串適用於較短的地址,但由於所有用戶現在都可以訪問,因此不再安全。

我也嘗試過“不啟用網站托管”到我的存儲桶,這對於完整的S3地址, securefiles.mysite.com.s3.amazonaws.com / privateresource.png?biglongquerystring仍然可以正常工作,但是在尋址時失敗,出現404 NoSuchWebsiteConfiguration較短的securefiles.mysite.com/privateresource.png?biglongquerystring

關於如何安全地將Route53 A記錄中的S3存儲桶中的文件尋址到我的S3存儲桶別名的任何想法?

我執行了以下任務:

  • 在Amazon S3中創建了一個名為images.my-domain.com的存儲桶
  • 將文件上傳到存儲桶
  • 在Amazon Route 53中創建了一個記錄集(一條記錄,Alias =是,Alias Target = s3-website-ap-southeast-2.amazonaws.com - s3-website-ap-southeast-2.amazonaws.com - s3-website-ap-southeast-2.amazonaws.com - s3-website-ap-southeast-2.amazonaws.com - s3-website-ap-southeast-2.amazonaws.com是的,我也在悉尼)

測試1-直接訪問:單擊Amazon S3中的對象鏈接( s3-ap-southeast-2.amazonaws.com/images.my-domain.com/picture.jpg )返回AccessDenied與預期的一樣,因為對賓語。

測試2-直接預簽名URL:在S3中使用對象上的預簽名URL (通過BucketExplorer創建)(使用常規S3 URL)成功提供了對該對象的訪問權限。 這是預料之中的。

測試3-別名訪問:訪問Amazon S3中的對象鏈接,但將其更改為直接使用域名( images.my-domain.com/picture.jpg )返回了AccessDenied

測試4-使用預簽名URL的別名訪問:通過帶有預簽名URL的靜態網站URL訪問失敗 這與您遇到的問題是一致的。

因此,我同意在靜態S3網站上似乎無法使用預簽名URL和Route 53別名。

然后,我使用Amazon S3靜態網站URL對其進行了進一步測試:

Tst 5-具有預簽名URL的S3靜態網站URL:此測試嘗試通過靜態網站URL訪問私人文件( images.my-domain.com.s3-website-ap-southeast-2.amazonaws.com/picture.jpg )和簽名。 這也返回AccessDenied

因此,問題似乎與Route 53 URL無關。 而是,預簽名URL似乎無法通過靜態網站URL起作用。 由於Route 53使用靜態URL,因此也會失敗。

暫無
暫無

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

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