如何配置Google Cloud公共存储桶仅允许持特定访问密钥的主体访问
GCS 针对特定API Key做存储桶访问控制的原生支持结论
Google Cloud Storage 原生不支持你要的「仅允许持有特定公共访问类API Key的主体访问存储桶」配置,没有完全不用额外配套、直接在控制台配规则就能实现该需求的原生能力,具体原因和可行的无服务替代方案如下:
- 你提到的用于访问公共GCS资源的API Key,本质是给无身份公开请求做来源标记的凭证,本身不承担访问授权的判定作用:这类API Key只能用来标记请求归属的GCP项目、统计接口配额、限制可调用的API范围,没法直接作为IAM权限的授权主体被添加到存储桶的权限列表里,自然也做不到“只认指定几个API Key、其他请求全拦”的效果。
- 如果你的核心要求是调用方不用走GCP账号OAuth登录流程、拿静态凭证就能访问收紧后的存储桶,同时不想自己搭中转服务,可以直接用GCS原生的两个能力实现同等效果:
- HMAC密钥鉴权:给每个需要访问的主体分配独立的服务账号HMAC密钥,在存储桶IAM层只给这些密钥对应的服务账号开最小必要的存储访问权限,调用方按照S3兼容协议用手里的HMAC密钥给请求签名就能正常访问,全流程都是GCS原生能力,不需要额外部署任何服务。
- 签名URL授权:如果你的访问场景是固定的对象上传/下载,可以用有权限的服务账号提前生成带有效期、绑定指定操作权限的签名URL,拿到URL的主体在有效期内可以直接访问对应资源,同样不需要额外配套服务。
- 权限调整提醒:收紧规则前一定要先删掉存储桶IAM里
allUsers、allAuthenticatedUsers两个公开主体绑定的所有角色,避免残留的公开权限导致访问规则不生效。
内容的提问来源于stack exchange,提问作者user293895
相关产品推荐
相关产品推荐

