首页 > 云计算 > 公有云实践 > 秒懂边缘云 | CDN基础入门:访问控制及带宽阈值
作者:辰舒
在通过CDN对外提供服务时,为了保障资源的安全性,我们建议对请求进行访问权限控制,避免被恶意用户请求,提升业务在CDN上的安全性。
1.已经添加完成的CDN域名
2.阿里云CDN控制台。
在使用CDN前,一般鉴权和响应均在源站完成。如下图,当终端用户对资源发起请求时,请求到达源站先校验是否符合权限控制规则,如果鉴权通过,源站再响应终端用户所请求的内容。

当业务使用CDN后,可能面临两个问题:
那这两个问题如何解决呢?我们需要鉴权和响应拆分为两个环节去处理,其中的鉴权动作拆分到CDN节点执行,响应由源站和CDN节点共同完成。
如下图,当终端用户对资源发起请求时,请求到达CDN节点,由CDN节点校验是否符合权限控制规则。如果鉴权通过,CDN节点再执行内容响应动作:

了解鉴权功能的实现位置后,我们再一起学习CDN已经开放的鉴权功能,概览信息参考下表,常见功能将在下文介绍,您可以根据需求选择性阅读。在配置时,也可以通过基础防护组合进阶防护的方式,共同完成加强防护等级的目的。 针对常用的基础防护和进阶防护,下文将为您具体介绍其工作逻辑及配置方法。如果您需要使用特殊防护中的功能,可以在控制台申请开通,参考产品文档进行配置。
|
类别 |
功能 |
效果 |
优点 |
缺点 |
安全指数 |
|
基础防护 |
Referer防盗链 |
通过配置访问的 Referer黑名单和白名单来实现对访客身份的识别和过滤 |
配置简单,定向防护 |
过滤方式单一,可能被伪造 |
★☆☆ |
|
IP黑白名单 |
通过配置IP黑名单和白名单来实现对访客身份的识别和过滤 |
配置简单,定向防护 |
过滤方式单一,可能被伪造 |
★☆☆ | |
|
UA黑白名单 |
通过配置 UserAgent黑名单和白名单来实现对访客身份的识别和过滤 |
配置简单,定向防护 |
过滤方式单一,可能被伪造 |
★☆☆ | |
|
进阶防护 |
URL鉴权 |
通过配置URL鉴权功能保护用户站点的资源不被非法站点下载盗用 |
安全性相对简单配置功能较高,无法伪造 |
被抓取URL后,在有效期内仍有遭受攻击可能。 |
★★★ |
|
远程鉴权 |
通过配置远程鉴权功能,对发送到 CDN边缘节点上的用户请求进行校验,避免CDN节点上的资源被非授权用户访问。 |
鉴权逻辑可根据业务需求自定义规则,调整便捷度高,安全度可控 |
源站需要部署鉴权服务器,客户需要有开发能力
|
★★★ | |
|
特殊防护 |
频次控制 |
遭受恶意CC攻击导致响应缓慢,可通过频次控制功能拦截恶意流量,阻断访问该网站的所有请求,提升网站的安全性。 |
专注对CC的防护。 |
需要申请开通 |
★★☆ |
|
区域封禁 |
一键阻断来自指定区域的访问请求,解决部分地区高发的恶意请求问题。 |
按照区域划分,拦截面较大 |
需要申请开通 |
★★☆ | |
|
CDN WAF |
结合边缘Web应用防火墙WAF能力,将业务流量进行恶意特征识别及防护,将正常、安全的流量回源到 服务器 |
对请求行为有分析识别能力,阻断常规攻击注入手段。 |
增值服务 |
★★★ |
配置入口: 登录 CDN控制台 ,在左侧导航栏,单击 域名管理 ,单击目标域名对应的 管理 ,单击 访问控制 ,在 Referer防盗链/IP黑白名单/UA黑白名单 区域,单击 修改配置。
基于HTTP协议支持的Referer机制,通过请求header中携带的Referer头部跟踪来源,对来源进行识别和判断。
以下图为例,该请求发出时,浏览器自动携带了请求头referer:https://cdn.console.aliyun.com/,代表该请求来源为阿里云CDN控制台域名,被请求域名可以通过referer防盗链控制放行或者拒绝该referer的请求。


在浏览器地址栏中直接输入URL地址进行访问时,其来源为空,因此请求头部中默认不会携带referer,如允许此类不携带referer访问请求,建议勾选开启。如果该域名下资源的所有请求都会携带referer,可以保持关闭。
通过对客户端真实IP或客户端建联IP进行限制,实现仅部分IP用户可访问,或特定用户IP不允许访问的需求。 支持输入IP段,限制某个地址段用户的访问。
默认情况下,仅校验客户端真实IP,如需校验建联IP需通过提交工单申请。配置时,支持黑名单机制或白名单机制:
User-Agent是HTTP请求头的一部分,包含用户访问时所使用的操作系统及版本、浏览器类型及版本等标识信息。
配置UA黑白名单后,用户请求资源时,CDN将获取用户请求时HTTP请求头中的User-Agent字段,同配置中的黑/白名单进行匹配。
以下图为例,该请求发出时,浏览器自动携带了请求头
user-agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
代表该请求来源的客户端信息,被请求域名可以通过user-agnet黑白名单控制放行或者拒绝该UA的请求。
一般适用于限制特定UA的终端请求,或对当客户端携带特定UA才允许放行的场景适用。


配置时,支持黑白名单两种防护方式,配置规则时支持通配符*匹配,多个值时使用 | 分割,例如 *curl*|*IE*|*chrome*|*firefox*。
如果需要对空UA(不携带UA 或 UA值为空)限制,规则的值可以配置用 ^$ 表示。
如果您的业务对URL资源安全性要求较高,担心基础防护无法满足安全性需求,可以了解URL鉴权和远程鉴权功能,两者均能实现较高的安全防护。
配置入口: 登录 CDN控制台 ,在左侧导航栏,单击 域名管理 ,单击目标域名对应的 管理 ,单击 访问控制 ,在 URL鉴权/远程鉴权 区域,单击 修改配置。
URL鉴权功能通过阿里云CDN加速节点与客户资源站点配合,形成了更为安全可靠的源站资源防盗方法。主要由以下几个部分配合:

开启鉴权前访问URL: http://DomainName/timestamp/md5hash/FileName
开启鉴权后访问URL: http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash (A类鉴权为例)
当用户携带的时间戳或鉴权凭证错误时,访问到达CDN节点后将被拒绝,返回状态码403。

URL鉴权支持三种鉴权的签算算法:
http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash
http://DomainName/timestamp/md5hash/FileName
格式1: http://DomainName/FileName{&KEY1=<md5hash>&KEY2=<timestamp>}
格式2: http://DomainName/{<md5hash>/<timestamp>}/FileName
三种方式在安全等级上一致,但URL的构造形式有所区别,如果不需要混淆URL,选择方式A即可,如果有混淆URL的需求,可以选择方式B或者C,算法详情请参考产品文档说明。
注意:
如果您觉得URL鉴权的算法模式单一,无法满足业务的定制化鉴权诉求,您也可以通过远程鉴权,通过自行维护的鉴权服务器用于自主管理。

① 用户发起的资源访问请求到达CDN节点,请求中携带了鉴权参数。
② CDN节点收到用户请求,将用户请求直接转发(或者经过指定的规则处理后转发)给鉴权服务器。
③ 鉴权服务器根据用户请求中携带的鉴权参数给出鉴权结果,并返回给CDN节点。
④ CDN节点根据鉴权服务器返回的鉴权结果执行对应的动作,并返回对应的数据给用户。
鉴权结果举例如下:
举例1:鉴权成功,CDN节点与用户开始正常的缓存数据访问交互。
举例2:鉴权失败,CDN节点返回404状态码给用户。(失败状态码可自定义)
举例3:鉴权失败,CDN节点对用户访问进行限速。
举例4:鉴权超时,CDN节点执行鉴权超时的默认动作,即放行或者拒绝用户请求。

在配置远程鉴权时,您需要指定以下信息
如果您担心存在突发流量导致的损失,可以为域名设置封顶带宽。带宽封顶,即通过设置带宽上限,来控制带宽用量。当指定加速域名在统计周期(1分钟)内产生的平均带宽超出预设上限,CDN将停止为该域名提供加速服务,且该域名会被解析到无效地址 offline.***.com ,无法被继续访问。
注意:触发封顶后业务将无法继续被访问,非限速策略。
配置入口: 登录 CDN控制台 ,在左侧导航栏,单击 域名管理 ,单击目标域名对应的 管理 ,单击 流量限制 ,单击 修改配置。

小提示:
至此,访问控制及带宽阈值的介绍及使用部分已经结束,在下个章节中,我们会继续学习CDN监控与计量相关内容,主要包含内容有:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70018969/viewspace-2913390/ ,如需转载,请注明出处,否则将追究法律责任。