使用内容分发网络(Content Delivery Network,CDN)加速对象存储(Cloud Object Storage,COS),可将存储桶中的内容进行大范围的下载、分发,特别是对于相同内容反复下载的使用场景。通过回源鉴权功能,可以实现使用 CDN 加速私有读存储桶中的内容。通过 CDN 鉴权功能,使内容只能被合法用户下载,避免开放下载可能造成的数据安全与流量成本等问题。
说明
内容分发网络
CDN 的定义
CDN 是在现有 Internet 中增加的一层新的网络架构,由遍布全球的高性能加速节点构成。这些高性能的服务节点都会按照一定的缓存策略存储您的业务内容,当您的用户向您的某一业务内容发起请求时,请求会被调度至最接近用户的服务节点,直接由服务节点快速响应,有效降低用户访问延迟,提升可用性。
CDN 会进行缓存和回源行为,即用户在访问某个 URL 的时候,如果被解析到的边缘节点没有命中需要响应的缓存内容,或者缓存已经到期,就会返回到源站去获取需响应的内容。
适用场景
对响应延时和下载速度有较高要求的场景。
需跨地区、国家、大洲传输数 GB 至数 TB 的数据的场景。
需高密集地反复下载相同的内容的场景。
安全类型
回源鉴权:当用户请求的数据在边缘节点没有命中缓存时,CDN 需要回源获取数据内容。使用 COS 作为源站并开启回源鉴权后,CDN 边缘节点将使用特殊的服务身份访问 COS 源站,以实现获取并缓存私有访问存储桶中的数据。
CDN 服务授权:CDN 边缘节点可通过添加 CDN 服务授权,来使用特殊的服务身份访问 COS源站,添加 CDN 服务授权后才可开启回源鉴权。
CDN 鉴权配置:当用户通过访问边缘节点获取缓存数据的时候,边缘节点会根据鉴权配置规则,校验访问 URL 中的身份验证字段,以此防范非授权的访问,实现防盗链,提高边缘节点缓存数据的安全性和可靠性。
对象存储的访问节点
访问节点定义
访问节点是用户创建存储桶时,依据存储桶的地域和名称,系统自动划分给存储桶的访问域名,可通过该域名访问存储桶中的数据。
开启静态网站功能后,您将额外获得一个静态网站的访问节点,用于呈现与默认访问节点表现不同的、特殊配置的响应内容。
访问节点
访问节点:用户在创建一个存储桶后,COS 会自动为存储桶分配一个XML 访问节点,该访问节点形式为
<BucketName-APPID>.cos.<Region>.myqcloud.com
,适用于 RESTful API 访问。用户可以通过访问域名,并查看 API 文档 的执行规范,对存储桶进行配置,或进行对象的上传、下载操作。静态网站节点:在控制台的存储桶基本配置界面可以开启托管静态网站的功能,开启后将提供一个访问节点,访问节点形式为
<BucketName-APPID>.cos-website.<Region>.myqcloud.com
。静态网站支持特殊的索引页(IndexPage)、错误页(ErrorPage)和跳转等,仅支持针对对象的下载类操作,用户可以通过静态网站域名获取内容。访问权限
公有读:将存储桶设为公有读,任何人都可以通过存储桶的访问域名对其进行访问。如果用户将公有读存储桶作为源站回源,可直接开启 CDN 加速,无须使用 CDN 鉴权和回源鉴权。
私有读:将存储桶设为私有读,用户可以通过编写访问策略管理访问者,包括管理 CDN 服务授权等。如果用户将私有读存储桶作为源站回源,开启回源鉴权但未开启 CDN 鉴权,将导致非权限范围内的人群,可通过 CDN 直接访问存储桶,所以对于私有读存储桶,强烈建议同时开启 CDN 鉴权和回源鉴权保障数据的安全。
使用 CDN 加速 COS 访问
用户可以通过自定义 CDN 加速域名来对 COS 进行加速访问。首先用户自行准备已备案的自定义域名,并指向源站为 COS 存储桶,即可实现使用自定义 CDN 加速域名加速访问存储桶中的对象。
说明
腾讯云 CDN 加速域名默认不提供 IP 地址。如需了解域名的解析情况,可以使用 dig 命令进行查询。
公有读存储桶
将存储桶设置为允许公共访问,配置 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 中的数据。详情可参见以下文档:
注意
如果存储桶被设置为私有读,则必须添加授权并开启回源鉴权,否则 COS 将拒绝访问。
CDN 边缘会根据每个主账户生成一个服务账号,因此账户授权只对加速域名所属的主账户有效,跨账户绑定加速域名将会被拒绝访问。
对于私有读存储桶,同时开启回源鉴权和 CDN 服务授权会导致通过 CDN 访问源站时无需携带签名,CDN 缓存资源将进行公网分发,导致数据的安全性受到影响,建议开启 CDN 鉴权配置保护存储桶中的数据。具体配置步骤请参见 配置说明 文档中的鉴权配置部分。
对于不同 CDN 鉴权配置,域名对私有读存储桶的访问能力见下表:
CDN 鉴权配置 | CDN 加速域名访问 | COS 域名访问 | 常见场景 |
关闭(默认) | 可访问 | 需使用 COS 鉴权 | 可直接访问 CDN 域名,保护源站数据 |
开启 | 需使用 URL 鉴权 | 需使用 COS 鉴权 | 全链路保护访问,支持 CDN 鉴权防盗链 |