Terraform创建Firebase Web应用时服务账号GCS存储桶403权限错误排查
问题原因
你当前配置的roles/firebase.managementServiceAgent、roles/firebase.sdkAdminServiceAgent、roles/firebase.sdkProvisioningServiceAgent三个角色均为Firebase专属的服务代理角色,仅覆盖Firebase应用创建、配置拉取等Firebase核心资源的管理权限,不包含Cloud Storage(GCS)资源的操作权限,因此Terraform在尝试读取/创建GCS存储桶时会触发storage.buckets.get权限不足的403报错。
解决方案
- 权限配置补充:你可以根据需求选择以下两种权限配置方案之一:
- 便捷配置:直接为服务账号授予当前项目的
roles/storage.admin(存储管理员)角色,该角色已包含你当前Terraform代码中创建存储桶、上传配置文件所需的所有GCS操作权限,授予命令参考:gcloud projects add-iam-policy-binding optic-web-otp \ --member="serviceAccount:替换为你的服务账号完整标识" \ --role="roles/storage.admin" - 最小权限配置:如果需要控制权限范围,可自定义IAM角色,仅添加当前所需的最小权限列表:
storage.buckets.getstorage.buckets.createstorage.objects.createstorage.objects.get
- 便捷配置:直接为服务账号授予当前项目的
- 额外注意事项:GCS存储桶名称为全局唯一资源,如果你定义的桶名
firebase-optic-storage已被其他GCP项目占用,也会触发无权限访问的同类报错,建议将桶名调整为带项目ID的唯一值,例如firebase-optic-storage-${var.gcp_project_id},避免全局命名冲突。
权限配置完成后重新执行terraform plan即可验证修复效果。
内容的提问来源于stack exchange,提问作者Manuel Spigolon
相关产品推荐
相关产品推荐

