ApsaraVideo for Live支援通過設定Referer黑白名單、User-Agent黑白名單、IP黑白名單進行存取控制,本文介紹ApsaraVideo for Live存取控制功能、適用情境和使用方式。
簡介
存取控制是在雲端配置視頻資源的存取原則,達到基本的保護目的,具有使用門檻低(僅雲端配置不需要額外開發)、快速生效等優點,主要手段有:
Referer黑白名單
User-Agent黑白名單
IP黑白名單
User-Agent黑白名單,由於配置繁瑣且存在誤操作風險,暫未開放控制台設定,如有需求可以提交工單聯絡阿里雲支援人員。關於如何提交工單,請參見聯絡我們。
適用情境
存取控制的使用門檻很低,只需簡單配置即可使用,能起到一定的保護作用,特別是Web端。
Referer和User-Agent都基於HTTP Header,容易被偽造,安全性低。
IP黑白名單機制,無法實現內容分發給大量C端使用者,不適合廣泛的內容消費情境。
Referer黑白名單
介紹
基於HTTP協議支援的Referer機制,通過Referer跟蹤來源,對來源進行識別和判斷,使用者可配置訪問的Referer黑、白名單來限制視頻資源被訪問的情況。
訪客對資源發起請求後,請求到達CDN節點,節點會根據使用者預設的防盜鏈黑名單或白名單進行過濾:符合規則可順利請求到視頻資料;若不符合,請求會被拒絕,並返回403響應碼。
Referer黑白名單是可選配置,預設不啟用。
配置後會自動添加泛網域名稱支援。例如填寫
example.com
,最終配置生效的是*.example.com
,所有子級網域名稱都會生效。支援設定是否允許空Referer欄位訪問資源,即允許通過瀏覽器地址欄直接存取資源URL。
使用方式
控制台:具體操作請參見防盜鏈。
API:通過調用BatchSetLiveDomainConfigs介面,可大量設定直播網域名稱,包括Referer黑白名單。
java sdk設定Referer防盜鏈的範例程式碼如下:
//需要<>內容替換成實際使用的值 DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>"); IAcsClient client = new DefaultAcsClient(profile); BatchSetLiveDomainConfigsRequest batchSetLiveDomainConfigsRequest =new BatchSetLiveDomainConfigsRequest(); batchSetLiveDomainConfigsRequest.setDomainNames("<DomainNames>"); batchSetLiveDomainConfigsRequest.setFunctions("[{\"functionArgs\":[{\"argName\":\"refer_domain_allow_list\",\"argValue\":\"<referer_white_domain_list>\"},{\"argName\":\"allow_empty\",\"argValue\":\"<off>\"}],\"functionName\":\"referer_white_list_set\"}]"); try { BatchSetLiveDomainConfigsResponse response = client.getAcsResponse(batchSetLiveDomainConfigsRequest); System.out.println(new Gson().toJson(response)); //todo something } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); }
說明以上範例程式碼表示:為<DomainNames>設定Referer防盜鏈白名單,白名單網域名稱列表為<referer_white_domain_list>,且不允許空Referer訪問(allow_empty值為<off>)。
使用JAVA SDK,具體請參見Java SDK使用說明。
注意事項
重要黑、白名單互斥,同一時間您只能選擇一種方式。
由於移動端一般拿不到Referer,當前預設支援空Referer訪問,可選擇關閉。如果設定為不允許空referer訪問,在移動端可以配合阿里雲播放器設定referer。
當您設定不允許空Referer訪問時,請務必配置HTTPS安全加速,並開啟強制跳轉HTTPS(HTTP>HTTPS)。部分瀏覽器處理HTTPS請求HTTP的資源時,會移除Referer,導致無法訪問。
樣本
當設定播流網域名稱
demo.developer.aliyundoc.com
的Referer白名單為example.com
,且不允許空Referer訪問。請求資料:
curl -i 'http://demo.developer.aliyundoc.com/apptest/stream0000'
返回中包含:
X-Tengine-Error:denied by Referer ACL
當請求帶上允許的Referer後即正常返回:
curl -i 'http://demo.developer.aliyundoc.com/apptest/stream0000' \ -H 'Referer: http://www.example.com'
User-Agent黑白名單
介紹
User-Agent是一個特殊字元串頭,協助服務端識別使用者使用的作業系統及版本、CPU類型、瀏覽器及版本、瀏覽器渲染引擎&語言和外掛程式等。可通過User-Agent黑白名單來限制特定瀏覽器或終端的訪問。
使用方式
提交工單聯絡阿里雲支援人員。關於如何提交工單,請參見聯絡我們。
樣本
如PC端IE9瀏覽器:
User-Agent:Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0;
可類比HTTP請求驗證:
curl -i 'http://demo.developer.aliyundoc.com/apptest/stream0000' \ -H 'User-Agent: iPhone OS;MI 5'
IP黑白名單
介紹
支援配置IP黑名單或白名單,拒絕或只允許特定IP的訪問。
添加IP到黑名單,那麼該IP無法訪問當前加速網域名稱。
添加IP到白名單,那麼只有該IP能夠訪問當前加速網域名稱。
支援IP列表添加,並支援添加IP網段。
例如:網段127.0.0.0/24,24表示採用子網路遮罩中的前24位為有效位,即用32-24=8bit來表示主機號,該子網可以容納28-2=254台主機,故可表示IP網段範圍:127.0.0.0~127.0.0.254。
支援IPV6地址。
使用方式
控制台:具體操作,請參見IP黑白名單。
API:通過調用BatchSetLiveDomainConfigs介面,可大量設定直播網域名稱,包括IP黑白名單。
java sdk設定IP黑白名單的範例程式碼如下:
//需要<>內容替換成實際使用的值 DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>"); IAcsClient client = new DefaultAcsClient(profile); BatchSetLiveDomainConfigsRequest batchSetLiveDomainConfigsRequest =new BatchSetLiveDomainConfigsRequest(); batchSetLiveDomainConfigsRequest.setDomainNames("<DomainNames>"); batchSetLiveDomainConfigsRequest.setFunctions("[{\"functionArgs\":[{\"argName\":\"ip_list\",\"argValue\":\"<127.0.0.0/24>\"}],\"functionName\":\"ip_allow_list_set\"}]"); try { BatchSetLiveDomainConfigsResponse response = client.getAcsResponse(batchSetLiveDomainConfigsRequest); System.out.println(new Gson().toJson(response)); //todo something } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); }
說明以上範例程式碼表示:為<DomainNames>設定IP白名單,白名單IP列表為<127.0.0.0/24>。
使用JAVA SDK,具體請參見Java SDK使用說明。
注意事項
重要黑、白名單互斥,同一時間您只能選擇一種方式。
最多可配置1000個IPv6地址,或者3000個IPv4地址。IPv6地址中的英文字母不區分大小寫,不支援::縮寫格式。