2012-03-11 33 views
6

現在,我知道我無法阻止某人下載我的視頻和分享內容,但是我希望這樣做,這樣人們就不會將粘貼鏈接直接複製到我的存儲分區。因此,有沒有辦法讓我的存儲桶只能從發出請求的服務器/域訪問?亞馬遜S3視頻文件只能從我的域/服務器訪問?

如果有幫助,我使用jwplayer,它從包含所有鏈接的xml播放列表加載。這個播放列表絕對可以從任何地方打開和查看,並且是我期望輕鬆複製和粘貼的地方。

我不想掩蓋網址,因爲這意味着我的存儲桶對每個人都是可讀的。有可能是一些機會,有人會找到我的桶的URL和文件的名稱和連接在一起的一切...

回答

7

這是可以通過Using Bucket Policies,它允許你定義的Amazon S3資源訪問權限 - 有一對夫婦的Example Cases for Amazon S3 Bucket Policies說明的功能,並且在這些當中,你會發現一個例子限制訪問特定IP地址還有:

該語句授予權限的任何用戶執行任何動作S3 指定存儲桶中的對象。但是,請求必須 來自條件中指定的IP地址範圍。

根據您的使用案例的具體情況,該桶政策看起來可能是這樣:

{ 
    "Version": "2008-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:*", 
      "Resource": "arn:aws:s3:::bucket/*", 
      "Condition" : { 
       "IpAddress" : { 
        "aws:SourceIp": "192.168.143.0/24" 
       }, 
       "NotIpAddress" : { 
        "aws:SourceIp": "192.168.143.188/32" 
       } 
      } 
     } 
    ] 
} 

如圖所示aws:sourceIp值參數IPAddressNotIpAddressCIDR notation表達,使各自的靈活性用於組成所需的範圍。

最後,您可能想看看推薦AWS Policy Generator,選擇類型S3鬥政策和瀏覽可用操作條件爲你的使用情況撰寫更具針對性的政策最終會 - 爲Conditions的文檔解釋這在細節上。

+0

感謝斯特芬,只是想知道,而不是一個IP地址,我可以把它從一個域名?原來我每月支付獲得一個唯一的IP爲我的共享主機... – Matt 2012-03-12 07:28:59

+0

@Ali:恐怕這是不是可以作爲這樣的(儘管是確實是一個明顯的用例);我已經更新了我關於使用CIDR標記爲'AWS回答的結尾段落:sourceIp'以及其他條件可用,可探索通過[AWS策略生成器(http://awspolicygen.s3.amazonaws.com/ policygen.html) - 前者可能允許您指定您的提供商可能使用的所有IP地址塊(如果有記錄),因此已經大大減少了熱鏈接表面。當然這是否可行取決於你的用例和環境(即提供者)。 – 2012-03-12 08:05:31

+0

請參閱arulraj.net的域特定權限答案。我知道這是兩年後,但這個評論通過我的搜索,所以我想我會更新它。 – 2014-09-19 17:27:37

1

您可以讓您的存儲桶受到保護,這是默認情況下的方式。 (這意味着您只能訪問其中的對象)然後,您可以從您的網站向Amazon S3請求文件,並給它一個用戶可以看到的時間限制。

//set time so that users can see file for 1 minute. then it is protected again. 
$response = $s3->get_object_url(YOUR_A3_BUCKET, PATH/TO/FILE, '1 minutes'); 

這會自動爲您提供一個具有相關參數的網址,該網址只能訪問1分鐘。您可以在您的網站中將其用作您的源代碼,然後在1分鐘後無法將其複製並粘貼到瀏覽器中。

您可以在Amazon SDK for PHP

+0

這可以在桶級別上完成嗎?例如獲取存儲桶中所有文件的簽名url將在XX後過期,而不需要在運行時爲每個URL請求這一點? – 2014-11-23 16:07:36

6

閱讀更多關於這一點,如果你的服務器去訪問你的水桶的IP地址會有所幫助。但JWPlayer來自客戶端。所以請求是直接從jwplayer(瀏覽器)到s3桶url,而不是通過你的服務器。在這種情況下,「引用者存儲桶策略」將在這方面爲你提供幫助。

{ 
"Version": "2008-10-17", 
"Statement": [ 
    { 
    "Sid": "1", 
    "Effect": "Deny", 
    "Principal": { 
     "AWS": "*" 
    }, 
    "Action": "s3:GetObject", 
    "Resource": "arn:aws:s3:::yourbucketname/*", 
    "Condition": { 
     "StringNotLike": { 
     "aws:Referer": [ 
      "http://yoursitename.com/*", 
      "http://*.yoursitename.com/*" 
     ] 
     } 
    } 
    } 
] 
} 

因此,現在s3將允許,如果該請求只來自您的網站。

+0

如果有人通過設置引薦人標題發送請求,那麼我會這麼輕易地下載視頻。 – shuboy2014 2017-12-17 11:45:10

0

限制訪問特定的HTTP推薦

假設你有一個域名(www.example.com或example.com)鏈接到存儲在Amazon S3的桶,examplebucket照片和視頻網站。默認情況下,所有Amazon S3資源都是私有的,因此只有創建資源的AWS賬戶才能訪問它們。爲了允許從您的網站對這些對象進行讀取訪問,您可以添加一個存儲桶策略,該策略允許使用aws:referer鍵的帶有條件的s3:GetObject權限,該get請求必須源自特定的網頁。以下策略用aws指定StringLike條件:Referer條件鍵。

http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html