Google Cloud IAM:GCP资源间身份认证流程及分步时序图
GCP资源间通信的IAM策略评估与验证机制
一、通用评估逻辑
执行时机
GCP资源间的权限验证采用按需触发机制:仅当请求从源资源发起并到达目标资源的控制/数据平面时才会执行,不会在服务启动、资源创建等阶段预验证所有关联权限。
验证方式
基于「主体-动作-资源」三元组匹配IAM策略,核心流程:
- 提取请求中的身份主体(通常为服务账号、用户账号或谷歌群组)
- 解析请求要执行的具体动作(如
pubsub.topics.publish、storage.objects.get) - 匹配目标资源上绑定的IAM策略,检查主体是否被授予对应动作的权限(直接绑定或通过角色/组织层级继承)
二、CloudRun发布Pub/Sub主题的权限验证示例
假设CloudRun服务绑定服务账号cloudrun-sa@my-project.iam.gserviceaccount.com,目标为Pub/Sub主题projects/my-project/topics/my-topic:
- 请求发起:CloudRun容器内的应用调用Pub/Sub客户端库,客户端自动从GCP元数据服务器获取服务账号凭据,签名后发起
pubsub.topics.publish请求。 - 请求接收与解析:Pub/Sub控制平面接收请求,解析出身份主体(
cloudrun-sa@my-project.iam.gserviceaccount.com)和要执行的动作。 - 加载IAM策略:Pub/Sub从内部策略存储中拉取目标主题
my-topic的完整IAM绑定规则。 - 权限匹配检查:
- 优先检查直接绑定:确认策略中是否存在该服务账号对应的角色(如
roles/pubsub.publisher),且角色包含pubsub.topics.publish权限。 - 检查继承关系:若无直接绑定,验证该服务账号是否属于已绑定的群组、组织单元,或是否通过项目/组织级IAM策略继承到对应权限。
- 优先检查直接绑定:确认策略中是否存在该服务账号对应的角色(如
- 结果返回:
- 匹配成功:允许消息发布,返回成功响应给CloudRun。
- 匹配失败:返回
403 PermissionDenied错误,终止请求。
三、IAM策略评估分步时序图
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ CloudRun服务 │ │ Pub/Sub控制平面 │ │ IAM策略存储 │ └──────────────────┘ └──────────────────┘ └──────────────────┘ │ │ │ │ 1. 发起带凭据的发布请求 │──────────────────────────>│ │ │ │ │ │ 2. 解析主体与目标动作 │ │ │──────────────────────────>│ │ │ │ │ │ 3. 拉取目标主题IAM策略 │<──────────────────────────│ │ │ │ │ │ 4. 执行三元组权限匹配 │ │ │ │ │ │ 5. 返回验证结果 │──────────────────────────>│ │ │ │ │ 6. 接收请求响应(成功/失败) │<──────────────────────────│ │ │ │
内容的提问来源于stack exchange,提问作者Naveen
相关产品推荐
相关产品推荐

