2017-01-30 55 views
1

因此,我一直在關注CloudFront和S3上的指南,我覺得我仍然缺少Origin Access身份和CloudFront簽名URL之間關係中的核心信息。Origin訪問身份和CloudFront簽名的Url之間的關係

我想要什麼:一個私有CDN主持音頻片段(幾秒鐘的長度)和低分辨率的圖像。我只希望這些文件在來自特定域(Web應用程序所在的域)以及可能是測試服務器的請求時可訪問。所以,我的web應用程序可以獲取文件,但只是人不能沒有通過web應用程序會訪問它們

什麼IM困惑:我模糊的關係(如果有的話)CloudFront的起源訪問身份之間和簽署CloudFront網址。

我目前已經爲我的cloudfront發佈創建了一個私有S3,一個OAI,並且已經通過cloudfront爲圖片生成了一個鏈接的url。但我不明白這些事情是如何相關的,以及他們如何阻止其他人訪問CDN文件(如果他們能夠執行檢查並獲取簽名的URL)。

是否要確保簽名url快到期?如果是的話,OAI如何在其中發揮作用?這是否在CORS中設置?

回答

0

添加指向您的CloudFront域的新CNAME條目。此條目應與CloudFront控制檯中的「備用域名」中輸入的條目匹配。

enter image description here

默認情況下CloudFront的自動生成域名(例如d3i29vunzqzxrt.cloudfront.net),但你可以定義你選擇的域名。你

也可以保證的Cloudfront Serving Private Content through CloudFront

+0

好的。 CDN不會只改變網址嗎?如何確保在除指定域以外的其他人可以訪問CDN上的項目? – crazyCoder

+1

您可以選擇保護您的Amazon S3存儲桶中的內容,以便用戶可以通過CloudFront訪問它,但無法使用Amazon S3 URL直接訪問它。這可以防止任何人繞過CloudFront並使用Amazon S3 URL獲取您想要限制訪問的內容。此步驟不需要使用簽名的URL --AWS –

4

的原點了接入身份是內CloudFront的一個實體 可通過桶政策被授權訪問區中的物件。當CloudFront使用源訪問標識訪問存儲區中的內容時,CloudFront將使用OAI的憑據生成簽名請求,以便將其發送到存儲區以獲取內容。查看者無法訪問此簽名。

這裏使用的單詞「origin」的含義不應該與在其他上下文中使用的詞「origin」混淆,例如CORS,其中「origin」是指允許訪問內容的網站。

原始訪問標識與訪問被限制爲包含特定OriginReferer標頭的請求無關。

一旦CloudFront驗證簽名URL爲匹配與您的AWS賬戶(或您指定爲可信簽署人的另一賬戶)相關聯的CloudFront簽名密鑰,則該對象將從存儲桶中獲取,並使用來源訪問身份已經被授予。

是否要確保簽名url快到期?

基本上,是的。

通過嘗試基於發現鏈接的站點限制訪問的身份驗證和授權請求是而不是可行的安全措施。它可以防止來自其他站點的熱鏈接,但不會防止任何人僞造請求標頭。擊敗這樣的措施是微不足道的。

相比之下,簽名的URL對計算不可行性極其篡改。

簽名的URL不僅僅在到期之前纔有效,還可以選擇性地限制訪問策略文檔中包含的具有相同IP地址的人員,如果使用custom policy。一旦簽名,對URL的任何更改(包括策略聲明)都會使整個URL無法使用。

OAI僅與CloudFront簽署的URL間接連接 - 它們可以單獨使用或一起使用 - 但是如果沒有OAI,CloudFront無法證明它有權從您的存儲桶請求對象,因此存儲桶將需要公開,這將打破CloudFront上簽名URL的許多目的。

+0

明白了。所以試圖限制訪問,所以只有我的網站可以訪問cdn文件不是一個好方法?我最好用合理的過期時間創建網址,或者使用IP限制爲僅允許訪問我的網站(域)的自定義策略創建網址? – crazyCoder

+0

試圖通過網絡瀏覽器*聲稱這是一個來自您的網站的請求,這是一種保護內容的原始形式,以此來限制您的網站的神奇功能。是的,過期的網址會更好。如果您關心用戶「共享」網址,那麼僅限於*用戶* IP的簽名URL也可以提供幫助。請注意,IP是用戶的IP--而不是您網站的IP。這個想法通常是在頁面呈現時生成簽名的URL。讓我知道這個答案需要更多細節或澄清。 –

+0

我明白了,謝謝。我對用戶共享URL和更多關注webapp上的材料(音頻文件和圖像)的關注較少。除了帶寬使用外,這些文件不應該在webapp以外的任何人訪問 – crazyCoder

相關問題