全部產品
Search
文件中心

ApsaraVideo Live:存取控制

更新時間:Jul 13, 2024

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訪問。

    1. 請求資料:

      curl -i 'http://demo.developer.aliyundoc.com/apptest/stream0000'
    2. 返回中包含:

      X-Tengine-Error:denied by Referer ACL
    3. 當請求帶上允許的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地址中的英文字母不區分大小寫,不支援::縮寫格式。