You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制GCS存储桶访问权限,同时保持Cloud CDN对所有人开放

如何将GCS存储桶设为私有,仅允许Cloud CDN访问并禁止直接路径访问

完全可以实现,具体操作步骤如下:

1. 确保GCS存储桶默认私有,关闭所有公共访问

  • 登录GCP控制台,进入Cloud Storage找到目标桶。
  • 切换到「权限」标签,删除所有包含allUsers或allAuthenticatedUsers的权限条目,彻底移除公共访问权限。
  • 启用Bucket Policy Only:在权限页面的「设置」选项中,勾选「启用Bucket Policy Only」,确保仅通过IAM权限控制桶的访问(ACL规则不再生效,避免遗留权限漏洞)。

2. 授权Cloud CDN关联的负载均衡服务账号访问桶

Cloud CDN必须配合HTTP(S)负载均衡使用,需要给负载均衡的服务账号授予GCS对象访问权限:

  • 进入「网络服务」→「负载均衡」,找到关联Cloud CDN的负载均衡实例,查看其对应的后端服务。
  • 复制后端服务使用的服务账号邮箱(若未自定义,默认格式为service-PROJECT_NUMBER@cloud-lb-sa.iam.gserviceaccount.com,其中PROJECT_NUMBER是你的GCP项目编号)。
  • 回到GCS桶的「权限」页面,点击「添加」,粘贴该服务账号邮箱,为其分配roles/storage.objectViewer角色(仅需读取权限,满足CDN源站需求)。

3. (可选)通过IAM条件进一步限制访问范围

为了避免服务账号被其他场景滥用,可添加IAM条件,确保该账号仅能访问目标桶的对象:
在添加权限时,点击「添加条件」,输入以下规则(替换YOUR_BUCKET_NAME和YOUR_LB_SERVICE_ACCOUNT为实际值):

resource.name.startsWith("projects/_/buckets/YOUR_BUCKET_NAME/objects/")
AND request.serviceAccountEmail == "YOUR_LB_SERVICE_ACCOUNT"

验证效果

完成配置后:

  • 直接访问storage.googleapis.com/your-bucket/your-file会返回403 Forbidden,说明直接路径访问已被禁止。
  • 通过Cloud CDN配置的域名访问对应资源,能正常加载内容,说明CDN访问权限生效。

内容的提问来源于stack exchange,提问作者rafaelHTML

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:40:19