无需签名URL,通过Google CDN访问私有Google Bucket
要实现私有Bucket通过Cloud CDN公开访问(无需签名URL或Cookie),核心是利用Origin Access Control (OAC) 限制只有Cloud CDN的负载均衡能直接访问Bucket,用户通过CDN域名发起请求时,CDN会以自身身份拉取Bucket内容,无需用户提供签名。
具体步骤:
配置Origin Access Control (OAC)
- 打开Cloud Storage控制台,选中目标私有Bucket,切换到「权限」标签页
- 找到「Origin access control」模块,点击「创建访问控制」
- 在配置界面选择你已创建的HTTP(S)负载均衡作为允许的来源(需确保该负载均衡已关联Cloud CDN)
- 保存后,系统会自动为负载均衡的服务账号添加
storage.objects.get权限,确保CDN能正常拉取Bucket内的文件
确保Bucket完全私有
- 检查Bucket的权限列表,移除所有
allUsers或allAuthenticatedUsers的访问权限(包括公开读权限) - 仅保留OAC自动添加的负载均衡服务账号权限,以及管理员所需的必要权限
- 检查Bucket的权限列表,移除所有
验证CDN访问
- 通过负载均衡绑定的自定义域名(或默认的CDN域名)访问Bucket内的文件,此时无需签名URL即可直接访问
- 尝试直接访问Bucket的原始存储地址(如
gs://bucket-name/file或storage.googleapis.com/bucket-name/file),会返回权限错误,验证Bucket的私有性
额外优化建议:
- 配置CDN缓存规则:根据文件类型设置合理的TTL(如图片、静态资源设置1天以上,动态内容缩短TTL),提升访问速度并减少源站请求
- 设置缓存键规则:忽略无关的查询参数,避免相同内容因参数不同被重复缓存
- 启用CDN安全策略:在负载均衡中配置HTTPS强制跳转、WAF规则等,提升访问安全性
内容的提问来源于stack exchange,提问作者GerKirill
相关产品推荐
相关产品推荐

