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

如何让App Engine访问GCP VPC防护区内的资源?

解决方案:App Engine + VPC Service Control 访问Cloud Storage/Firestore问题

问题1:构建App Engine实例时无法访问Cloud Storage(权限拒绝)

  • 确保Cloud Build服务账号被纳入VPC Service Control边界的允许成员:
    1. 打开Access Context Manager,找到目标VPC Service Control边界
    2. 在允许的成员中添加Cloud Build服务账号:[你的项目编号]@cloudbuild.gserviceaccount.com
    3. 为该账号配置Cloud Storage必要权限(如roles/storage.objectAdmin或roles/storage.objectViewer,匹配构建需求)
  • 检查VPC Service Control边界的服务列表,确认已包含Cloud Storage和Cloud Build,否则构建流程无法在防护边界内正常访问资源

问题2:用户无法查看App Engine实例中托管在Cloud Storage的图片

分两种场景处理:

场景A:App Engine后端代理访问存储桶(推荐)

  • 将App Engine默认服务账号([你的项目编号]@appspot.gserviceaccount.com)添加到VPC Service Control边界的允许成员
  • 给该服务账号授予存储桶的roles/storage.objectViewer权限
  • 在App Engine代码中通过后端接口读取Cloud Storage图片并返回给前端,避免用户直接访问存储桶

场景B:用户直接访问存储桶(仅必要时使用)

  • 由App Engine后端生成Cloud Storage Signed URL,返回给用户作为临时访问链接,确保请求在VPC Service Control边界允许范围内
  • 禁止将存储桶设置为公开可读,避免绕过VPC防护机制

问题3:Angular Fire直接调用Firestore出错

客户端直接调用Firestore会被VPC Service Control拦截(客户端请求来自防护边界外),需通过后端代理处理:

  • 重构Angular应用逻辑,将Firestore直接调用改为请求App Engine后端API,由后端代理完成Firestore访问
  • 确保App Engine服务账号已加入VPC Service Control允许成员,并配置Firestore必要权限(如roles/datastore.user)
  • 若使用App Engine标准环境,需启用Serverless VPC Access,并在app.yaml中添加连接器配置:
    vpc_access_connector:
      name: "projects/[项目ID]/locations/[区域]/connectors/[连接器名称]"
    
  • 验证Firestore服务已被纳入VPC Service Control边界,确保后端访问路径处于防护范围内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:03:20