CDN 加速概述

最近更新时间:2019-08-12 10:21:29

使用 CDN 加速 COS ,可将存储桶中的内容进行大范围的下载、分发,特别是对于相同内容反复下载的使用场景。通过回源鉴权功能,可以实现使用 CDN 加速私有读存储桶中的内容。通过 CDN 鉴权功能,使内容只能被合法用户下载,避免开放下载可能造成的数据安全与流量成本等问题。

内容分发网络 CDN

CDN 的定义

内容分发网络(Content Delivery Network),是在现有 Internet 中增加的一层新的网络架构,由遍布全球的高性能加速节点构成。这些高性能的服务节点都会按照一定的缓存策略存储您的业务内容,当您的用户向您的某一业务内容发起请求时,请求会被调度至最接近用户的服务节点,直接由服务节点快速响应,有效降低用户访问延迟,提升可用性。

CDN 会进行缓存和回源行为,即用户在访问某个 URL 的时候,如果被解析到的边缘节点没有命中需要响应的缓存内容,或者缓存已经到期,就会返回到源站去获取需响应的内容。

适用场景

  • 对响应延时和下载速度有较高要求的场景。
  • 需跨地区、国家、大洲传输数 GB 至数 TB 的数据的场景。
  • 需高密集地反复下载相同的内容的场景。

安全类型

  • 回源鉴权:当用户请求的数据在边缘节点没有命中缓存时,CDN 需要回源获取数据内容。使用 COS 作为源站并开启回源鉴权后,CDN 边缘节点将使用特殊的服务身份访问 COS 源站,以实现获取并缓存私有访问存储桶中的数据。
    • CDN 服务授权:CDN 边缘节点可通过添加 CDN 服务授权,来使用特殊的服务身份访问 COS源站,添加 CDN 服务授权后才可开启回源鉴权。
  • CDN 鉴权配置:当用户通过访问边缘节点获取缓存数据的时候,边缘节点会根据鉴权配置规则,校验访问 URL 中的身份验证字段,以此防范非授权的访问,实现防盗链,提高边缘节点缓存数据的安全性和可靠性。

对象存储的访问节点

访问节点定义

访问节点是创建存储桶时,依据存储桶的地域和名称,划分给存储桶的访问域名,可通过该域名访问存储桶中的数据。

开启静态网站功能后,您将额外获得一个静态网站的访问节点,用于呈现与默认节点表现不同的、特殊配置的响应内容。

访问节点

  • XML 节点:在创建一个存储桶之后,COS 会直接分配一个 XML 访问节点给存储桶,访问节点形式为<bucketname>-<APPID>.cos.<region>.myqcloud.com,适用于 RESTful API 访问。用户可以利用 XML 访问节点,根据 API 文档 的执行规范,对存储桶进行配置,或进行对象的上传、下载操作。
  • 静态网站节点:在控制台的存储桶基本配置界面可以开启托管静态网站的功能,开启之后将提供一个访问节点,访问节点形式为<bucketname>-<APPID>.cos-website.<region>.myqcloud.com。静态网站支持特殊的索引页(IndexPage)、错误页(ErrorPage)和跳转等,仅支持针对对象的下载类操作,用户可以通过静态网站节点获取内容。

访问权限

  • 公有读:将存储桶设为公有读,任何人都可以通过存储桶的访问域名对其进行访问。如果用户将公有读存储桶作为源站回源,可直接开启 CDN 加速,无须使用 CDN 鉴权和回源鉴权。
  • 私有读:将存储桶设为私有读,用户可以通过编写访问策略管理访问者,包括管理 CDN 服务授权等。如果用户将私有读存储桶作为源站回源,开启回源鉴权但未开启 CDN 鉴权,将导致非权限范围内的人群,可通过 CDN 直接访问存储桶,所以对于私有读存储桶,强烈建议同时开启 CDN 鉴权和回源鉴权保障数据的安全。

使用 CDN 加速 COS 访问

用户可以通过管理以下两种域名来对 COS 进行加速访问:

  • 默认加速域名:COS 为用户提供默认的 CDN 加速域名,形如<bucketname>-<APPID>.file.mycloud.com,用户可选择开启或关闭。
  • 自定义域名:用户可以自己准备已备案的自定义域名,并指向源站为 COS 存储桶,可实现使用自定义域名加速访问存储桶中的对象。

说明:

默认加速域名和自定义域名可统称为 CDN 加速域名。

公有读存储桶

将存储桶设置为允许公共访问,配置 CDN 回源到 COS 访问节点时,无需开启回源鉴权,CDN 边缘节点即可获取并缓存存储桶中的对象数据。

您仍然可以通过在 CDN 控制台开启 鉴权配置 有限度的保护存储桶中的数据,因为无论是否开启 CDN 中的该功能,知晓存储桶访问域名的用户仍可以访问到存储桶中的所有对象。对于不同 CDN 鉴权配置,域名对公有读存储桶的访问能力见下表:

CDN 鉴权配置 CDN 加速域名访问 COS 域名访问 常见场景
关闭(默认) 可访问 可访问 全站许可公共访问,通过 CDN 或源站均可访问
开启 需使用 URL 鉴权 可访问 对 CDN 访问开启防盗链,但不保护源站访问,不推荐

私有读存储桶

存储桶默认为私有读时,配置 CDN 回源到 COS 访问节点,CDN 边缘节点将无法获取和缓存任何数据。因此,需要将 CDN 服务身份加入到存储桶访问策略(Bucket Policy)中,并许可该身份可以执行以下操作:

  • GET Object - 获取对象
  • HEAD Object - 获取对象元数据
  • OPTIONS Object - 发起对象预请求

CDN 控制台COS 控制台 均提供了一键授权的功能,单击【添加 CDN 服务授权】即可完成。完成该操作后,需要开启「回源鉴权」选项,此时 CDN 边缘将会使用其服务身份访问 COS 中的数据。

注意:

  1. 如果存储桶被设置为私有读,则必须添加授权并开启回源鉴权,否则 COS 将拒绝访问。
  2. CDN 边缘会根据每个根账户生成一个服务账号,因此账户授权只对加速域名所属的根账户有效,跨账户绑定加速域名将会被拒绝访问。

添加 CDN 服务授权并开启回源鉴权后,CDN 边缘节点将可以直接获取并缓存数据,因此强烈建议在您有保护私有数据的需求时,开启 鉴权配置 保护存储桶中的数据。对于不同 CDN 鉴权配置,域名对私有读存储桶的访问能力见下表:

CDN 鉴权配置 CDN 加速域名访问 COS 域名访问 常见场景
关闭(默认) 可访问 需使用 COS 鉴权 可直接访问 CDN 域名,保护源站数据
开启 需使用 URL 鉴权 需使用 COS 鉴权 全链路保护访问,支持 CDN 鉴权防盗链