作者:辰舒
在通过 CDN 对外提供服务时,为了保障资源的安全性,咱们倡议对申请进行拜访权限管制,防止被歹意用户申请,晋升业务在 CDN 上的安全性。
筹备工作
1. 曾经增加实现的 CDN 域名
2. 阿里云 CDN 控制台。
根底介绍
在应用 CDN 前,个别鉴权和响应均在源站实现。如下图,当终端用户对资源发动申请时,申请达到源站先校验是否合乎权限管制规定,如果鉴权通过,源站再响应终端用户所申请的内容。
当业务应用 CDN 后,可能面临两个问题:
- 如果 CDN 在命中缓存时间接返回内容给终端用户,无需回源站,那此时源站的鉴权规定不会被触发。
- 如果鉴权 token 参数通过申请的 query 携带(例如:http://test.aliyun.com/test.m…),因为鉴权参数值频繁变动,此时,CDN 视为独立申请回源站进行鉴权,每次都无奈共享缓存,导致无奈享受失常缓存减速的成果。
那这两个问题如何解决呢?咱们须要鉴权和响应拆分为两个环节去解决,其中的鉴权动作拆分到 CDN 节点执行,响应由源站和 CDN 节点共同完成。
如下图,当终端用户对资源发动申请时,申请达到 CDN 节点,由 CDN 节点校验是否合乎权限管制规定。如果鉴权通过,CDN 节点再执行内容响应动作:
- 节点本地已有缓存时,CDN 节点将间接响应给用户,无需源站解决;
- 节点本地无缓存时,CDN 节点将逐级回源拉取,直至回到源站获取。
理解鉴权性能的实现地位后,咱们再一起学习 CDN 曾经凋谢的鉴权性能,概览信息参考下表,常见性能将在下文介绍,您能够依据需要选择性浏览。在配置时,也能够通过根底防护组合进阶防护的形式,共同完成增强防护等级的目标。
针对罕用的根底防护和进阶防护,下文将为您具体介绍其工作逻辑及配置办法。如果您须要应用非凡防护中的性能,能够在控制台申请开明,参考产品文档进行配置。
根底防护
配置入口:登录 CDN 控制台,在左侧导航栏,单击域名治理,单击指标域名对应的治理,单击访问控制,在 Referer 防盗链 /IP 黑白名单 /UA 黑白名单 区域,单击批改配置。
Referer 防盗链(举荐)
基于 HTTP 协定反对的 Referer 机制,通过申请 header 中携带的 Referer 头部跟踪起源,对起源进行辨认和判断。
以下图为例,该申请收回时,浏览器主动携带了申请头 referer:https://cdn.console.aliyun.com/,代表该申请起源为阿里云 CDN 控制台域名,被申请域名能够通过 referer 防盗链管制放行或者回绝该 referer 的申请。
-
配置时,反对黑名单机制或白名单机制:
- 黑名单:仅黑名单内域名禁止拜访该资源
- 白名单:仅容许白名单内域名拜访该资源
- 配置须要放行 / 限度的域名即可,反对通配符 * 匹配多个子域名。
- 容许通过地址栏间接拜访资源 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/m…
开启鉴权后拜访 URL:http://DomainName/Filename?au…(A 类鉴权为例)
当用户携带的工夫戳或鉴权凭证谬误时,拜访达到 CDN 节点后将被回绝,返回状态码 403。
URL 鉴权反对三种鉴权的签算算法:
- A 形式
http://DomainName/Filename?au… - B 形式 http://DomainName/timestamp/m…
- C 形式
格局 1:http://DomainName/FileName{&KEY1=<md5hash>&KEY2=<timestamp>}
格局 2:http://DomainName/{<md5hash>/<timestamp>}/FileName
三种形式在安全等级上统一,但 URL 的结构模式有所区别,如果不须要混同 URL,抉择形式 A 即可,如果有混同 URL 的需要,能够抉择形式 B 或者 C,算法详情请参考产品文档阐明。
留神:
- 如果您是线上域名,须要确保业务曾经携带正确鉴权参数后,再点击确定开启性能,避免开启后因鉴权失败导致业务无法访问。
- 如果您已敞开 URL 鉴权,请删除业务中携带的鉴权参数,或,配置疏忽参数缓存,防止业务因鉴权参数无奈命中缓存(开启鉴权时主动疏忽鉴权参数缓存)。
近程鉴权
如果您感觉 URL 鉴权的算法模式繁多,无奈满足业务的定制化鉴权诉求,您也能够通过近程鉴权,通过自行保护的鉴权服务器用于自主治理。
① 用户发动的资源拜访申请达到 CDN 节点,申请中携带了鉴权参数。② CDN 节点收到用户申请,将用户申请间接转发(或者通过指定的规定解决后转发)给鉴权服务器。③ 鉴权服务器依据用户申请中携带的鉴权参数给出鉴权后果,并返回给 CDN 节点。④ CDN 节点依据鉴权服务器返回的鉴权后果执行对应的动作,并返回对应的数据给用户。
鉴权后果举例如下:
举例 1:鉴权胜利,CDN 节点与用户开始失常的缓存数据拜访交互。
举例 2:鉴权失败,CDN 节点返回 404 状态码给用户。(失败状态码可自定义)
举例 3:鉴权失败,CDN 节点对用户拜访进行限速。
举例 4:鉴权超时,CDN 节点执行鉴权超时的默认动作,即放行或者回绝用户申请。
在配置近程鉴权时,您须要指定以下信息
- 鉴权服务器的地址,CDN 转发鉴权申请时所应用的申请办法,以及是否需要针对特定文件类型鉴权。
- 申请鉴权服务器时,拜访 URL 中的申请参数是否须要全副保留转发。
- 鉴权服务器返回的状态码,具体如何判断鉴权胜利或失败。
- 如果鉴权服务器返回鉴权失败,CDN 须要返回什么状态码给客户端。
- 鉴权服务器多久未响应时断定为超时,超时后应判断本次鉴权通过还是回绝。
带宽下限阈值
如果您放心存在突发流量导致的损失,能够为域名设置封顶带宽。带宽封顶,即通过设置带宽下限,来管制带宽用量。当指定减速域名在统计周期(1 分钟)内产生的均匀带宽超出预设下限,CDN 将进行为该域名提供减速服务,且该域名会被解析到有效地址 offline.*.com,无奈被持续拜访。
留神:触发封顶后业务将无奈持续被拜访,非限速策略。
配置入口:登录 CDN 控制台,在左侧导航栏,单击域名治理,单击指标域名对应的治理,单击流量限度,单击批改配置。
- 域名带宽小于下限:域名失常应用 CDN 减速服务。
- 突发流量,域名带宽达到或超过带宽下限:域名将会主动下线,并通过 CNAME 域名被解析到有效地址 offline.*.com,无奈被持续拜访。
- 突发流量恢复正常,域名带宽从新小于带宽下限:CDN 默认不会主动复原减速服务,您须要在 CDN 控制台手动启用该域名来复原 CDN 减速服务。如果您须要复原业务,能够在 CDN 控制台的域名治理页面,选中该域名,单击启用,从新启用该域名。
小提示:开启带宽封顶性能后,您的域名会受到带宽封顶的限度而下线。为了不影响您的域名业务,建议您正当评估,审慎设置您的带宽峰值。因为带宽的监控数据存在肯定的提早,因而域名将在带宽达到峰值后 10 分钟左右被下线。
完结
至此,访问控制及带宽阈值的介绍及应用局部曾经完结,在下个章节中,咱们会持续学习 CDN 监控与计量相干内容,次要蕴含内容有:
- 如何查看边缘拜访 / 回源的状态码散布、带宽、流量等信息。
- 如何分区域 / 运营商查看业务带宽散布。
- 如何配置 CDN 的业务监控告警规定。
更多边缘云产品资讯欢送关注公众号【阿里云 Edge Plus】