2014-01-31 33 views
1

我在使用簽名URL的CloudFront(而不是s3)上使用原始服務器。我需要一種方法來確保對我的服務器的請求僅來自CloudFront。也就是說,阻止某人繞過CloudFront並直接在我的服務器上請求資源。如何才能做到這一點?只允許CloudFront從原始服務器讀取?

+0

是否有可能知道您使用自定義來源製作符號網址時所採取的配置步驟,以及雲前臺對s3的選擇。我設法用s3做到這一點,現在我想用自定義來源配置成立類似的希望,你可以提供一些關於它的信息 –

回答

1

根據文檔,目前還沒有支持。我能想到的唯一的事情就是可以限制更多的訪問權限,儘管並非完全只允許Amazon IP地址訪問您的Web服務器。他們應該能夠提供給他們(IP地址範圍),因爲他們已經提供給我們。

這是什麼文件說:

使用HTTP服務器的專用內容

您可以使用簽名的網址,任何CloudFront的分佈,無論起源是一個Amazon S3存儲或HTTP服務器。但是,爲了讓CloudFront訪問HTTP服務器上的對象,對象必須保持可公開訪問。因爲這些對象是可公開訪問的,所以擁有HTTP服務器上對象的URL的任何人都可以在沒有CloudFront簽名URL提供的保護的情況下訪問該對象。如果您使用簽名的URL並且您的源是HTTP服務器,請不要將HTTP服務器上的對象的URL提供給您的客戶或組織外的其他人。

+0

這就是我從AWS論壇獲得的。這很不幸,因爲它們確實提供了一種保護S3服務器的機制,但不允許您爲非S3服務器啓用它。 –

0

我剛剛爲自己做過這件事,並認爲我會在這裏留下答案,我開始搜索。

下面是你需要把你的.htaccess中的幾行(假設你已經打開了重寫引擎):

RewriteCond %{HTTP_HOST} ^www-origin\.example\.com [NC] 
RewriteCond %{HTTP_USER_AGENT} !^Amazon\ CloudFront$ [NC] 
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L] 

這都將訪問者重定向到您的Cloudfront分佈 - https://example.com在此,例如 - 只能讓www-origin.example.com適用於Amazon CloudFront。如果您的網站代碼也位於不同的URL(例如,開發或登臺服務器)上,則不會妨礙您的工作。

注意:用戶代理是可猜測和可欺騙的;更安全的方法是在Cloudfront中設置自定義HTTP標頭,並在.htaccess中檢查其值。

相關問題