GCP跨项目权限配置:K8s+Cloud Run访问跨项目BigQuery
各账号权限配置方案
1. Kubernetes服务账号(KSA,project-1内)
无需额外配置权限,仅需确保工作负载身份绑定关系正确:已在IAM中将roles/iam.workloadIdentityUser角色授予对应的IAM服务账号,成员设置为serviceAccount:project-1.svc.id.goog[<KSA所在命名空间>/<KSA名称>]。当前流程已能触发Cloud Run,说明该绑定已生效。
2. 与KSA绑定的IAM服务账号(project-1内)
需在project-1的IAM中为该账号添加:
roles/run.invoker:授予调用project-1内Cloud Run Gen2函数的权限,确保Pod内应用可成功触发函数。
3. Cloud Run函数服务账号(project-1内)
需在project-2的IAM中为该账号添加:
roles/bigquery.dataViewer:该预定义角色包含查询BigQuery表数据的必要权限,可解决当前的403访问拒绝问题;- 若需更精细化权限,可单独授予
bigquery.tables.getData(读取表数据)和bigquery.tables.list(查看表元数据)权限,但推荐使用预定义角色以简化配置。
额外注意事项
- 若project-2的BigQuery数据集启用了权限隔离(未继承项目IAM权限),需直接在数据集或目标表的权限设置中添加该Cloud Run服务账号;
- IAM权限变更通常需要1-5分钟生效,配置后需等待一段时间再测试;
- 确认Cloud Run函数使用的服务账号为你配置的目标账号(可在Cloud Run控制台的"修订版本详情"中查看)。
内容的提问来源于stack exchange,提问作者Evil Toad
相关产品推荐
相关产品推荐

