[英]AWS S3 Bucket Accessible from my ElasticBeanStalk Instance only
[英]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.