访问控制

设置防盗链

设置Referer黑白名单

原理介绍

CDN获取HTTP请求中的 referer header,同配置中的Referer黑名单/白名单进行匹配,对匹配上的请求进行拒绝/放过。

应用场景

  • 对于通过验证的域名,用户需要设置防盗链保护用户的网站不会被其他网站盗链。

  • CDN支持用户自己配置referer黑白名单,用户可在域名详情页的“防盗链”页签中设置防盗链。

  • 用户最多可配置100个Referer黑白名单。

  • 系统默认不开启防盗链功能,需要用户自己配置。

操作步骤

  1. “CDN域名管理”页点击“域名地址”进入“CDN域名详情”页。

  2. 点击“访问控制”页签,进入防盗链设置页面。

    说明1:默认允许Referer为空。当请求Referer字段为空或无Referer时,CDN正常返回请求信息。空Referer与Referer黑白名单是分别配置,互不干涉。

    • 当配置了“允许Referer为空”和黑名单时,空Referer可以访问;
    • 当配置了“不允许Referer为空”和黑名单时,空Referer不能访问;
    • 当配置了“允许Referer为空”和白名单时,空Referer可以访问;
    • 当配置了“不允许Referer为空”和白名单时,空Referer不能访问。

    说明2:

    • Referer暂不支持路径中有多个通配符,仅支持*.a.com/*形式的模糊匹配。
    • Referer不区分协议设置,前缀不再需要输入http:// 或 https://,如果要配置http://zoe.baidu.com的Referer地址只需要输入zoe.baidu.com即可。
  3. 选择“白名单生效”或者“黑名单生效”,可设置域名对应的referer黑白名单。

    注意: 点击“编辑”后可删除域名对应的全部Referer的黑白名单,数据清除后不可被还原,请谨慎操作。

设置IP黑白名单

原理介绍

CDN获取客户端IP,同配置中的IP黑/白名单进行匹配,对匹配上的客户端请求进行拒绝/放过。

应用场景

  • 对于通过验证的域名,用户需要设置IP黑白名单保护用户的网站不会被其他网站盗链。

  • CDN支持用户自己配置IP黑白名单,用户可在域名详情页的“访问控制”页签中设置IP黑白名单。

  • 用户最多可配置100个IP黑白名单。

  • 系统默认不开启IP黑白名单功能,需要用户自己配置。

操作步骤

  1. “CDN域名管理”页点击“域名地址”进入“CDN域名详情”页。

  2. 点击“访问控制”页签,进入IP黑白名单设置页面。

  3. 选择“白名单生效”或者“黑名单生效”,可设置域名对应的IP黑白名单。

  4. 删除IP地址后会清除域名对应的全部IP的黑白名单,数据清除后不可被还原,请谨慎操作。

高级鉴权

应用场景

为防止客户源站内容被盗用,CDN提供防盗链功能,用户可通过配置Referer和IP的黑白名单来保护源站资源。然而由于Referer内容可被伪造,实际使用中仍存在盗链的隐患。为了更好地保护源站资源,CDN支持加密源站URL的功能,通过鉴权方式来正确响应合法请求、拒绝非法请求。

原理概述

URL高级鉴权是百度智能云CDN加速节点和客户源站配合实现的一种更加安全可靠的源站资源防盗方法。CDN客户站点提供加密URL给用户,当用户使用加密后的URL对CDN节点发起请求时,加速节点会验证加密URL的权限信息以判断请求的合法性。请求合法时正常响应,请求不合法时拒绝请求,以保护源站资源。

URL鉴权方式

百度智能云CDN支持A类、B类、C类三种鉴权方式,用户可以根据业务需要选择不同的鉴权方式对URL进行加密,实现对源站资源的保护。

A类鉴权方式

原理说明

用户访问加密URL构成:http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash

鉴权字段解释

字段 描述
DomainName CDN客户站点的域名
timestamp 失效时间,整形正数,固定长度10,值为1970年1月1日以来的当前时间秒数 + 过期时间秒数。用来控制失效时间,过期时间由客户端设置,若设置为1800s,则用户访问CDN的时间超过1800s后,该鉴权失效。
rand 随机数,通常设置为0。
uid userID。
md5hash 通过md5算法计算出来的验证串,数字0-9和小写英文字母a-z混合组成,固定长度32。
Filename 实际回源访问的URL,鉴权时Filename需以/开头。
SecretKey 用户设定的鉴权密钥,如bdcloud666。

CDN服务器拿到请求后,首先会判断请求中的timestamp是否小于当前时间,如果timestamp小于当前时间,则认为过期失效并返回HTTP 403错误。如果timestamp大于当前时间,则以sstring方式构造出一个字符串(参考以下sstring构造方式)。然后使用md5算法算出HashValue,并和用户请求中带来的md5hash进行对比。结果一致则认为鉴权通过并返回文件,否则鉴权失败返回HTTP 403错误。

HashValue计算方式如下:

  1. sstring = “URI-Timestamp-rand-uid-SecretKey”(URI是用户请求对象相对地址,不包含参数,如/Filename,其中SecretKey字段用户可以自行设置。)
  2. HashValue = md5sum(sstring)

示例说明

  1. 通过req_auth请求对象:http://opencdn.example.com/authentication/test/2F.html
  2. 密钥设为:bdcloud666(由用户自行设置)
  3. 鉴权配置文件失效日期为:2017年6月30日00:00:00,计算出来的秒数为1498752000。
  4. CDN服务器构造一个用于计算HashValue的签名字符串:“/authentication/test/2F.html -1498752000-0-0-bdcloud666”;
  5. CDN服务器根据该签名字符串计算HashValue:
    HashValue = md5sum(“/authentication/test/2F.html-1498752000-0-0-bdcloud666”) = 89518343a306f93173783a260bb364f0
  6. 请求时URL为:http://opencdn.example.com/authentication/test/2F.html?auth_key=1498752000-0-0-89518343a306f93173783a260bb364f0

如果计算出来的HashValue与用户请求中带的md5hash值(89518343a306f93173783a260bb364f0)一致,则鉴权通过。

配置示例

"anti_hot_link":{"antiType": "typeA", "secretKey": "bdcloud666", "newsecretKey": "opencdn666","secureFile": "/test.txt", "auth_arg": "auth_key"}

B类鉴权方式

原理说明

用户访问加密URL构成:http://DomainName/timestamp/md5hash/FileName

当鉴权通过时,实际回源的URL是:http://DomainName/FileName

鉴权字段解释

字段 描述
DomainName CDN客户站点的域名
timestamp 失效时间,即用户定义的有效访问时间,格式为YYYYMMDDHHMM。默认设置有效时间为1800s,即用户访问客户源服务器时间超过1800s后,该鉴权失效。例如用户设置访问时间2017-06-30 10:00:00,链接在2017-06-30 10:30:00失效。
md5hash 通过md5算法计算出来的验证串,数字0-9和小写英文字母a-z混合组成,固定长度32。
Filename 实际回源访问的URL,鉴权时Filename需以/开头。
SecretKey 用户设定的鉴权密钥,如bdcloud666。

示例说明

  1. 回源请求对象:http://opencdn.example.com/4/44/obhqonkjtlhquiy93.mp3
  2. 密钥设为:bdcloud666(用户自行设置)
  3. 用户访问客户源服务器时间为 201706301000(格式为:YYYYMMDDHHMM)
  4. CDN服务器构造一个用于计算md5hash的签名字符串:bdcloud666201706301000/4/44/obhqonkjtlhquiy93.mp3
  5. CDN服务器根据该签名字符串计算md5hash:
    md5hash = md5sum("bdcloud666201706301000/4/44/ obhqonkjtlhquiy93.mp3") = de04628d413e4261405091b731396901
  6. 请求CDN时URL:http://opencdn.example.com/201706301000/de04628d413e4261405091b731396901/4/44/ obhqonkjtlhquiy93.mp3

如果计算出来的md5hash与用户请求中带的md5hash值(de04628d413e4261405091b731396901)一致,则鉴权通过。

配置示例

"anti_hot_link":{"antiType": "typeB", "secretKey": "bdcloud666", "newsecretKey": "opencdn666","secureFile": "/test.txt", "timeout": 1800}

C类鉴权方式

原理说明

C类鉴权方式用户访问加密URL支持两种格式:

  • 格式一: http://DomainName/{<md5hash>/<timestamp>}/FileName
  • 格式二:http://DomainName/FileName?md5hash=<md5hash>&timestamp=<timestamp>

说明:{}中的内容表示在标准URL基础上添加的加密信息。

鉴权字段解释

字段 描述
DomainName CDN客户站点的域名
timestamp 用户访问源服务器时间,取UNIX时间。未加密的字符串,以明文表示。固定长度10,1970年1月1日以来的秒数,表示为十六进制。
md5hash 通过md5算法计算出来的验证串,数字0-9和小写英文字母a-z混合组成,固定长度32。
Filename 实际回源访问的URL,鉴权时Filename需以/开头。
SecretKey 用户设定的鉴权密钥,如bdcloud666。

示例说明

用户使用加密URL访问加速节点,CDN服务器先把加密串1提取出来,并得到原始的URL的和用户访问时间,然后按照定义的业务逻辑进行验证:

  1. 使用原始的URL中的 、请求时间及SecretKey进行md5加密得到一个加密串2。如Filename=/test.flv,timestamp = 5955b0a0,SecretKey=bdcloud666,则md5hash = md5sum(bdcloud666/test.flv5955b0a0) = 34f55132617957ab98d86c4342a1f394

    这样生成加密URL:

    • 格式一: http://opencdn.example.com/34f55132617957ab98d86c4342a1f394/5955b0a0/test.flv
    • 格式二: http://opencdn.example.com/test.flv?md5hash=34f55132617957ab98d86c4342a1f394&timestamp=5955b0a0
  2. 比较加密串2与加密串1是否一致,如果不一致则拒绝
  3. 取加速节点服务器当前时间,并与从访问URL中所带的明文时间相减,判断是否超过设置的时限t(时间域值t默认为1800s)。
  4. 若时间差小于设置时限,则视作合法请求,CDN加速节点正常响应;若时间差大于设置时限,则拒绝该请求并返回HTTP 403。

配置URL鉴权

在“CDN域名管理”页面点击“高级鉴权”进入高级鉴权设置页。

说明:

  • 高级防盗链功能开启后,可根据用户设置的鉴权Key对URL进行加密,保护客户源站资源。
  • 鉴权类型有三种,分别为A类鉴权B类鉴权C类鉴权,请根据需要选择。
  • 鉴权KEY包含主KEY和备KEY,主KEY必须设置,通过此KEY生成加密URL来限制用户访问。当需要替换密钥时,若需要新旧密钥同时生效,可设置备KEY。主、备KEY之一鉴权通过即可正常访问。KEY的格式为大小写字母、数字,长度6到32。备KEY不强制填写,格式与主KEY相同。
  • 有效时间:用户设置的加密URL的有效时间,用以生成鉴权URL,以s(秒)为单位,时间范围0~100000000整数。
  • 鉴权计算器可以根据选择的类型以及输入的参数生成鉴权URL,用户可以通过鉴权计算器知晓配置结果并验证是否生效。

设置跨域访问

跨域访问是指发起请求的资源所在域不同于该请求所指向的资源所在域,出于安全考虑,浏览器会限制这种非同源的访问。开启此功能,用户可以自己进行清除缓存及跨域访问配置,当源站(BOS)对象更新后,CDN所有对应的缓存可进行同步自动更新。

说明:

  • 对接BOS所支持的CORS标准来实现跨域访问,Origins数量不可超过100个,header字符数不可超过50。
  • 具体的CORS规则可以参考W3C CORS规范

设置IP访问限频

为防御CC攻击,CDN支持单IP访问频率限制功能,限制单IP 1s内访问单节点的次数。IP访问限频功能默认情况下关闭,开启后默认值为20QPS(Query Per Second),即1s内单IP访问单节点次数不得超过20次,否则返回503。用户可在控制台自行调整。

在“访问控制”页面上将IP访问限频调整到ON状态,并设置取值。

说明:

  • IP限频的取值范围为1~100000 QPS,最小粒度为1,只允许整数输入。
  • 限制单IP单节点的每秒访问次数,可抵御部分CC攻击,也可能影响网站的正常访问,请合理设置。

单请求响应限速配置

单请求响应限速是指通过用户自定义值来限定此域名下向客户端传输的每份请求的最大响应速率。该速率是针对单个请求的,多请求自动翻倍。

在“访问控制”页面上将单请求响应限速调整到“开启”状态,并设置限速值的数值即可开通。

说明:

限速值为非0自然数,范围:1-999999999,单位为B/s。
该速率是针对每个请求的,即如果客户端同时发起两个请求,则总的最大发送速率将是该数值的两倍,以此类推。

获取真实用户IP

通常情况下,网站访问请求并不是简单地从用户(访问者)的浏览器直达网站的源站服务器,而是中间经过了所部署的CDN代理服务器,这种情况下,访问请求在经过多层加速或代理转发后,源站服务器无法获取发起请求的真实客户端IP。

开启此功能,用户源站可接收到包含客户端IP/真实IP的http header。

根据您的设置:

  • Client IP:源站可以获取到访问源的客户端IP地址,携带True-Client-Ip;
  • Real IP:源站可以获取到访问源的真实IP地址,携带X-Real-IP。

多用户访问控制

介绍

多用户访问控制,主要用于帮助用户管理云账户下资源的访问权限,适用于企业内的不同角色,可以对不同的工作人员赋予使用产品的不同权限,当您的企业存在多用户协同操作资源时,推荐您使用多用户访问控制。

适用于下列使用场景:

  • 中大型企业客户:对公司内多个员工授权管理;

  • 偏技术型vendor或SAAS的平台商:对代理客户进行资源和权限管理;

  • 中小开发者或小企业:添加项目成员或协作者,进行资源管理。

创建用户

  1. 主账号用户登录后在控制台选择“多用户访问控制”进入用户管理页面。

  2. 在左侧导航栏点击“用户管理”,在“子用户管理列表”页,点击“新建用户”。

  3. 在弹出的“新建用户”对话框中,完成填写“用户名”和确认,返回“子用户管理列表”区可以查看到刚刚创建的子用户。

配置策略

CDN支持系统策略和用户自定义策略两种,分别实现CDN的产品级权限和域名级权限控制。

  • 系统策略:百度智能云系统为管理资源而预定义的权限集,这类策略可直接为子用户授权,用户只能使用而不能修改。
  • 自定义策略:由用户自己创建,更细化的管理资源的权限集,可以针对单个域名配置权限,更加灵活的满足账户对不同用户的差异化权限管理。

系统策略

CDN有CdnReadAccessPolicy、CdnOperateAccessPolicy和CdnFullAccessPolicy三种系统策略,三种系统策略的权限范围说明如下:

策略名称 说明 备注
CdnReadAccessPolicy 只读访问百度智能云内容分发网络(CDN)的权限 CDN 只读策略:
- 查看CDN域名
- 查看域名配置
- 查看缓存刷新的操作记录
- 统计分析中数据(除了“WAF防护”“服务月报”功能)
CdnOperateAccessPolicy 运维操作百度智能云内容分发网络(CDN)的权限,运维权限包含只读权限。 CDN运维策略:
- CDN修改域名配置
- 刷新缓存
- 日志转储和下载
- IP检测等操作
CdnFullAccessPolicy 管理百度智能云内容分发网络(CDN)的权限,管理权限包含只读和运维权限。 CDN管理策略:
- CDN所有操作权限
- 计费变更
- 添加域名
- 停止域名加速
- 删除域名

注:子账户所支持功能的操作步骤均与对应主账户功能的操作步骤相同。

自定义策略

自定义策略是从域名维度进行授权,与系统策略不同,只对选定的域名生效。

用户填写策略名称并选择服务类型为“内容分发网络CDN”,其中策略生成方式默认为策略生成器,不需要修改。自定义策略支持对域名设定配置、启停和删除的操作权限且可以多选;选择完权限后,勾选可操作的资源范围即域名。

用户授权

在“用户管理->子用户管理列表页”的对应子用户的“操作”列选择“添加权限”,并为用户选择系统权限或自定义策略进行授权。

说明:如果在不修改已有策略规则的情况下修改某子用户的权限,只能通过删除已有的策略并添加新的策略来实现,不能取消勾选已经添加过的策略权限。

子用户登录

主账号完成对子用户的授权后,可以将链接发送给子用户;子用户可以通过IAM用户登录链接登录主账号的管理控制台,根据被授权的策略对主账户资源进行操作和查看。