2015-06-03 37 views
2

這是安全的嗎?使用AWS S3 Bucket對象的預簽名url維護安全性?AWS S3簽名URL的安全性作爲超鏈接

<a href="https://mywebsite.s3.amazonaws.com/40.pdf?AWSAccessKeyId=[my access key]&Expires=1433297453&Signature=[this random set of numbers]">my link</a> 

另一個詞 - 第1部分...

說我存儲了一堆獨立的個人文件的水桶。我想爲用戶提供一個文件鏈接。顯然,每個文件都是唯一連續命名的,我不希望人們能夠將鏈接從40.pdf更改爲30.pdf並獲取不同的文件。這個URL似乎這樣做。

第2部分,更重要的是....

這是安全的或者是在我的桶的安全性方面顯示URL的它危險的方法?顯然,我會在這裏放棄我的「訪問密鑰」,但當然不是我的「祕密」。

已經在3年前回答...抱歉。 How secure are Amazon AWS Access keys?

回答

6

AWS安全憑證在向AWS進行API調用時使用。它們由兩個部分組成:

  • 訪問密鑰(如AKIAISEMTXNOG4ABPC6Q):這是類似於用戶名。人們可以看到它。
  • 密鑰:這是一串很長的隨機字符,它是您和AWS之間共享密鑰的一個。在進行API調用時,SDK使用共享密鑰「簽名」您的API調用。這是一種單向散列,因此人們無法對您的密鑰進行逆向工程。祕密密鑰應該保密。

A 簽名的URL是一種授予S3對象的時間限制訪問的方法。該URL包含訪問密鑰和簽名,這是從對象計算的單向哈希,到期時間和密鑰。

已簽名的URL是安全的,因爲:

  • 它是有效的只有你指定
  • 它僅適用於您指定的Amazon S3的對象是有效的在有限的時間內
  • 它不能用於檢索一個不同的對象,也不能在時間段被修改(因爲它會無效簽名)

然而,任何人可以在有效時間段內使用該URL。所以,如果有人推特URL,許多人可能會訪問對象,直到到期時間。應該對這種潛在的安全威脅進行權衡,直接從Amazon S3提供流量服務,而不必運行自己的Web服務器。