如何通过API Key从外部IP地址获取PubSub Schema?
解决PubSub Schema请求403权限拒绝的身份验证方法
API Key只是用来标识你的GCP项目,没法完成权限验证。要读取PubSub Schema,请求身份必须具备pubsub.schemas.get权限,所以单纯用API Key会触发403错误。下面给两种可行的解决办法:
方法1:用服务账号生成OAuth2令牌(推荐,安全性高)
- 先在GCP控制台创建一个服务账号,给它添加
Pub/Sub Schema Viewer角色(该角色自带pubsub.schemas.get权限) - 下载该服务账号的JSON密钥文件到本地
- 用gcloud工具生成访问令牌:
gcloud auth activate-service-account --key-file=你的密钥文件名.json gcloud auth print-access-token - 把生成的令牌放到cURL的请求头里发起请求:
curl -H "Authorization: Bearer 刚才生成的令牌" https://pubsub.googleapis.com/v1/projects/myprojetc199/schemas/pbschema_1
方法2:开放IAM权限给API Key请求(不推荐,风险高)
如果坚持要使用API Key,需要给项目的公开身份配置对应权限:
- 打开GCP控制台的IAM页面,找到你的目标项目
- 点击「添加」,在「新成员」输入框中填入
allUsers(允许所有外部请求,安全性极低)或allAuthenticatedUsers(仅允许登录过Google账号的请求) - 角色选择
Pub/Sub > Pub/Sub Schema Viewer,保存设置 - 之后再用原来的API Key发起请求即可成功
注意事项
- 方法2会大幅降低项目安全性,仅适合测试环境临时使用
- 服务账号的密钥文件务必妥善保管,绝对不能泄露到公共环境
内容的提问来源于stack exchange,提问作者user1843591
相关产品推荐
相关产品推荐

