秒懂边缘云 | CDN基础入门:访问控制及带宽阈值

作者:辰舒

在通过CDN对外提供服务时,为了保障资源的安全性,我们建议对请求进行访问权限控制,避免被恶意用户请求,提升业务在CDN上的安全性。

准备工作

1.已经添加完成的CDN域名

2.阿里云CDN控制台。

基础介绍

在使用CDN前,一般鉴权和响应均在源站完成。如下图,当终端用户对资源发起请求时,请求到达源站先校验是否符合权限控制规则,如果鉴权通过,源站再响应终端用户所请求的内容。

当业务使用CDN后,可能面临两个问题:

  1. 如果CDN在命中缓存时直接返回内容给终端用户,无需回源站,那此时源站的鉴权规则不会被触发。
  2. 如果鉴权token参数通过请求的query携带(例如:http://test.aliyun.com/test.mp4?token=1234&timestamp=12345),由于鉴权参数值频繁变化,此时,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黑白名单 区域,单击修改配置。

Referer防盗链(推荐)

基于HTTP协议支持的Referer机制,通过请求header中携带的Referer头部跟踪来源,对来源进行识别和判断。

以下图为例,该请求发出时,浏览器自动携带了请求头referer:https://cdn.console.aliyun.com/,代表该请求来源为阿里云CDN控制台域名,被请求域名可以通过referer防盗链控制放行或者拒绝该referer的请求。

  1. 配置时,支持黑名单机制或白名单机制:
  • 黑名单:仅黑名单内域名禁止访问该资源
  • 白名单:仅允许白名单内域名访问该资源
  1. 配置需要放行/限制的域名即可,支持通配符*匹配多个子域名。
  2. 允许通过地址栏直接访问资源URL:

在浏览器地址栏中直接输入URL地址进行访问时,其来源为空,因此请求头部中默认不会携带referer,如允许此类不携带referer访问请求,建议勾选开启。如果该域名下资源的所有请求都会携带referer,可以保持关闭。

IP黑白名单

通过对客户端真实IP或客户端建联IP进行限制,实现仅部分IP用户可访问,或特定用户IP不允许访问的需求。支持输入IP段,限制某个地址段用户的访问。

  • 客户端真实IP:用户请求中x-forwarded-for请求头携带的第一个IP
  • 客户端建联IP:客户端与CDN节点之间建连使用的IP

默认情况下,仅校验客户端真实IP,如需校验建联IP需通过提交工单申请。配置时,支持黑名单机制或白名单机制:

  • 黑名单:仅黑名单内IP禁止访问该域名
  • 白名单:仅白名单内IP允许访问该域名

UA黑白名单

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鉴权(推荐)

URL鉴权功能通过阿里云CDN加速节点与客户资源站点配合,形成了更为安全可靠的源站资源防盗方法。主要由以下几个部分配合:

  • 源站应用服务器:根据鉴权URL生成规则(包括鉴权算法、密钥)生成鉴权URL返回给客户端。
  • 客户端:发起资源请求,并发送鉴权URL给CDN节点进行验证。
  • CDN节点:对鉴权URL中的鉴权信息(鉴权字符串、时间戳等)进行验证。

开启鉴权前访问URL:http://DomainName/timestamp/md5hash/FileName

开启鉴权后访问URL:http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash(A类鉴权为例)

当用户携带的时间戳或鉴权凭证错误时,访问到达CDN节点后将被拒绝,返回状态码403。

URL鉴权支持三种鉴权的签算算法:

  • A方式

http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash

  • B方式

http://DomainName/timestamp/md5hash/FileName

  • C方式

格式1:http://DomainName/FileName{&KEY1=<md5hash>&KEY2=<timestamp>}

格式2:http://DomainName/{<md5hash>/<timestamp>}/FileName

三种方式在安全等级上一致,但URL的构造形式有所区别,如果不需要混淆URL,选择方式A即可,如果有混淆URL的需求,可以选择方式B或者C,算法详情请参考产品文档说明。

注意:

  1. 如果您是线上域名,需要确保业务已经携带正确鉴权参数后,再点击确定开启功能,防止开启后因鉴权失败导致业务无法访问。
  2. 如果您已关闭URL鉴权,请删除业务中携带的鉴权参数,或,配置忽略参数缓存,避免业务因鉴权参数无法命中缓存(开启鉴权时自动忽略鉴权参数缓存)。

远程鉴权

如果您觉得URL鉴权的算法模式单一,无法满足业务的定制化鉴权诉求,您也可以通过远程鉴权,通过自行维护的鉴权服务器用于自主管理。

① 用户发起的资源访问请求到达CDN节点,请求中携带了鉴权参数。

② CDN节点收到用户请求,将用户请求直接转发(或者经过指定的规则处理后转发)给鉴权服务器。

③ 鉴权服务器根据用户请求中携带的鉴权参数给出鉴权结果,并返回给CDN节点。

④ CDN节点根据鉴权服务器返回的鉴权结果执行对应的动作,并返回对应的数据给用户。

鉴权结果举例如下:

举例1:鉴权成功,CDN节点与用户开始正常的缓存数据访问交互。

举例2:鉴权失败,CDN节点返回404状态码给用户。(失败状态码可自定义)

举例3:鉴权失败,CDN节点对用户访问进行限速。

举例4:鉴权超时,CDN节点执行鉴权超时的默认动作,即放行或者拒绝用户请求。

在配置远程鉴权时,您需要指定以下信息

  1. 鉴权服务器的地址,CDN转发鉴权请求时所使用的请求方法,以及是否需求针对特定文件类型鉴权。
  2. 请求鉴权服务器时,访问URL中的请求参数是否需要全部保留转发。
  3. 鉴权服务器返回的状态码,具体如何判断鉴权成功或失败。
  4. 如果鉴权服务器返回鉴权失败,CDN需要返回什么状态码给客户端。
  5. 鉴权服务器多久未响应时判定为超时,超时后应判断本次鉴权通过还是拒绝。

带宽上限阈值

如果您担心存在突发流量导致的损失,可以为域名设置封顶带宽。带宽封顶,即通过设置带宽上限,来控制带宽用量。当指定加速域名在统计周期(1分钟)内产生的平均带宽超出预设上限,CDN将停止为该域名提供加速服务,且该域名会被解析到无效地址offline.***.com,无法被继续访问。

注意:触发封顶后业务将无法继续被访问,非限速策略。

配置入口:登录CDN控制台,在左侧导航栏,单击域名管理,单击目标域名对应的管理,单击流量限制,单击修改配置。

  • 域名带宽小于上限:域名正常使用CDN加速服务。
  • 突发流量,域名带宽达到或超过带宽上限:域名将会自动下线,并通过CNAME域名被解析到无效地址offline.***.com,无法被继续访问。
  • 突发流量恢复正常,域名带宽重新小于带宽上限:CDN默认不会自动恢复加速服务,您需要在CDN控制台手动启用该域名来恢复CDN加速服务。如果您需要恢复业务,可以在CDN控制台域名管理页面,选中该域名,单击启用,重新启用该域名。

小提示:

  • 开启带宽封顶功能后,您的域名会受到带宽封顶的限制而下线。为了不影响您的域名业务,建议您合理评估,谨慎设置您的带宽峰值。
  • 由于带宽的监控数据存在一定的延迟,因此域名将在带宽达到峰值后10分钟左右被下线。

结束

至此,访问控制及带宽阈值的介绍及使用部分已经结束,在下个章节中,我们会继续学习CDN监控与计量相关内容,主要包含内容有:

  • 如何查看边缘访问/回源的状态码分布、带宽、流量等信息。
  • 如何分区域/运营商查看业务带宽分布。
  • 如何配置CDN的业务监控告警规则。

更多边缘云产品资讯欢迎关注公众号【阿里云 Edge Plus】

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340