文档首页/ 视频直播 Live/ 最佳实践/ 如何保障直播资源的安全?
更新时间:2024-07-02 GMT+08:00

如何保障直播资源的安全?

场景说明

为保护用户直播源站的资源不被非法源站下载盗用,视频直播服务提供了Referer防盗链、Key防盗链、IP黑白名单鉴权机制和禁推功能。

  • 开启鉴权机制后,CDN会对访问者的身份进行识别和过滤,符合规则的才可使用直播服务,其它非法的访问将予以拒绝。
  • 禁推功能主要针对正在推送的直播流,在直播过程中,发现直播流内容不合法或被非法盗用,用户可对直播流进行禁止推送操作,从而保障直播资源的安全。

实现原理

图1所示,视频直播服务主要通过以下几方面保障直播资源的安全。

图1 直播安全架构图
  • 推流鉴权
    • Key防盗链:主播使用租户提供的带加密串的鉴权推流地址向CDN请求直播推流,CDN会根据推流地址中携带的鉴权信息校验请求的合法性,仅校验通过的请求会被允许。
    • IP黑白名单:配置IP黑名单或白名单后,CDN会根据名单对推流请求者的IP进行识别和过滤,允许或拒绝推流请求。
  • 播放鉴权
    • Referer防盗链:配置Referer黑名单或白名单后,CDN会根据名单对播放请求中携带的Referer字段进行识别,允许或拒绝播放请求。
    • Key防盗链:观众使用租户提供的带加密串的鉴权播放地址向CDN请求直播播放,CDN会根据请求地址中携带的鉴权信息进行检验,判断地址是否在有效期内,只有通过校验的请求才会被允许,从而保障直播资源的安全。
    • IP黑白名单:配置IP黑名单或白名单后,CDN会根据名单对播放请求者的IP进行识别和过滤,允许或拒绝播放请求。
  • 直播流管理:在直播过程中,发现直播流内容不合法或推流地址被非法盗用,将直播控制台上将此直播流加入禁推名单,对直播流进行封禁,在执行恢复推流前将无法进行推流活动。

推流鉴权

在直播推流前,为推流域名配置Key防盗链或IP黑白名单。

  1. 登录视频直播控制台
  2. 在左侧导航栏中,选择域名管理,进入域名管理页面。
  3. 在需要配置鉴权信息的域名行,单击“管理”
  4. 在左侧导航栏中,选择基础配置 > 鉴权配置
  5. 请根据实际需求配置以下鉴权方式。

    • Key防盗链

      若您有其它自定义防盗链规则的需求,请您提交工单与华为云技术客服联系。

      1. 选择Key防盗链,弹出“Key防盗链”对话框。
      2. 单击“开关”,配置Key防盗链参数,如图2所示。
        图2 配置Key防盗链
        表1 Key防盗链参数说明

        参数名

        描述

        类型

        计算鉴权串的方式,可选为:方式A、方式B、方式C或方式D。

        说明:

        鉴权方式ABC存在安全风险,鉴权方式D拥有更高的安全性,建议您优先使用鉴权方式D。

        Key

        鉴权key值。

        • 支持自定义设置,由32位的字母和数字组成。
        • 支持自动生成。

        时长

        URL鉴权信息的超时时长,指的是鉴权信息中携带的请求时间与直播服务收到请求时的时间的最大差值,用于检查直播推流URL或者直播播放URL是否已过期,单位:秒,范围限制:1分钟-30天。

      3. 配置完成后,单击“确定”
      4. 通过以下方式获取推流鉴权地址。
        Key防盗链配置成功后,原始地址将无法使用,您需要获取对应的推流鉴权地址。
        • 自动生成:使用防盗链地址生成工具快速生成鉴权地址,具体生成方法请参见防盗链地址生成
        • 手动拼接:根据配置的鉴权类型拼接对应的鉴权地址,具体拼接示例请参见Key防盗链
          • 鉴权方式A
            鉴权URL格式
            原始URL?auth_key={timestamp}-{rand}-{uid}-{md5hash}
            md5hash的计算公式:
            sstring = "{URI}-{Timestamp}-{rand}-{uid}-{Key}"
            HashValue = md5sum(sstring)
          • 鉴权方式B
            鉴权URL格式
            原始URL?txSecret=md5(Key + StreamName + txTime)&txTime=hex(timestamp)
          • 鉴权方式C
            鉴权URL格式
            原始URL?auth_info=加密串.EncodedIV

            鉴权字段的生成算法:

            LiveID=<AppName>+"/"+<StreamName>

            加密串=UrlEncode(Base64(AES128(<Key>,"$"+<Timestamp>+"$"+<LiveID>+"$"+<CheckLevel>)))

            EncodedIV=Hex(加密使用的IV)

          • 鉴权方式D
            鉴权URL格式
            原始URL?hwSecret=hmac_sha256(Key, StreamName + hwTime)&hwTime=hex(timestamp)
      5. 验证防盗链功能。

        使用第三方直播推流工具,通过鉴权推流地址进行验证,若原始推流地址无法成功推流,使用鉴权推流地址能成功推流,则表示Key防盗链生效。

    • IP黑白名单
      1. 选择IP黑白名单,弹出“IP黑白名单”对话框。
      2. 单击“开关”,配置IP黑白名单,如图3所示。
        图3 配置IP黑白名单
      3. 根据“鉴权类型”输入禁止或允许访问的播放域名IP地址,您也可以通过输入IP网段添加黑白名单。
      4. 配置完成后,单击“确定”

播放鉴权

为直播播放域名配置Referer防盗链、Key防盗链或IP黑白名单。

  1. 登录视频直播控制台
  2. 在左侧导航栏中,选择域名管理,进入域名管理页面。
  3. 在需要配置鉴权信息的域名行,单击“管理”
  4. 在左侧导航栏中,选择基础配置 > 鉴权配置
  5. 请根据实际需求配置以下鉴权方式。

    • Referer防盗链
      1. 选择Referer防盗链,弹出“Referer防盗链”对话框。
      2. 单击“开关”,配置Referer防盗链参数,如图4所示。
        图4 配置Referer防盗链
        表2 Referer防盗链配置

        参数名

        描述

        类型

        支持黑名单和白名单模式。
        • Referer黑名单:允许非名单内的域名请求访问资源,拒绝名单中的域名请求访问。
        • Referer白名单:允许名单内的域名请求访问资源,拒绝其它域名请求访问。

        您可以设置是否允许空Referer字段访问资源,即是否允许通过浏览器地址栏直接访问资源URL。

        规则

        黑名单或白名单中的域名。

        • 输入的域名总数最多支持100条(最少1条),以英文“;”进行分隔。
        • 域名为正则匹配,若填写“^http://test.*com$”,则“http://test.example.com”“http://test.example01.com”也会匹配成功。
      3. 配置完成后,单击“确定”
    • Key防盗链

      播放域名的Key防盗链配置与推流域名的Key防盗链配置方法相同,具体请参见推流鉴权

    • IP黑白名单

      播放域名的IP黑白名单配置与推流域名的IP黑白名单配置方法相同,具体请参见推流鉴权

直播流管理

在直播过程中,若发现直播流内容不合法或推流地址被非法盗用,可以对直播流进行禁止推流操作,从而保障直播资源的安全。

  1. 登录视频直播控制台
  2. 在左侧导航栏中,选择直播管理 > 流管理,进入流管理页面。
  3. 选择需要禁止直播推流的域名。
  4. 在需要禁推的直播流行,单击“禁推”,弹出“禁推”对话框。

    选择恢复时间。可以在“禁推流”页签,查看禁止推流后的直播流信息。

    图5 禁推配置

    限时:最长支持禁推90天,在恢复时间前,该直播流无法进行推流活动。

正在推送的直播流加入禁推名单后,在恢复推流前该推流地址将无法进行直播活动。