You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP内部HTTPS负载均衡器IAM访问控制配置失效问题

GCP内部HTTPS负载均衡器访问权限控制问题解决

问题根源

你之前配置的roles/compute.loadBalancerAdmin是用于管理负载均衡器资源本身的权限(比如修改后端服务配置、删除负载均衡器),并非控制虚拟机能否访问后端服务的权限,所以服务账号B的实例仍能正常访问。

正确配置方法

1. 使用对应权限角色

控制虚拟机访问后端服务的正确角色是roles/compute.backendServiceUser,只有拥有该角色的主体,才能向后端服务发起请求。

2. 编写正确的IAM策略文件

要实现「仅允许服务账号A访问,拒绝服务账号B访问」,需编写如下策略文件,同时注意清理默认的宽松权限绑定(比如allUsers、allAuthenticatedUsers,否则会覆盖你的限制规则):

{
  "bindings": [
    // 允许服务账号A访问后端服务
    {
      "role": "roles/compute.backendServiceUser",
      "members": ["serviceAccount:A@developer.gserviceaccount.com"]
    },
    // 拒绝服务账号B访问后端服务
    {
      "role": "roles/compute.backendServiceUser",
      "members": ["serviceAccount:B@developer.gserviceaccount.com"],
      "condition": {
        "title": "block-service-account-b",
        "expression": "false"
      }
    }
  ],
  "etag": "替换为当前后端服务的IAM策略ETAG"
}

提示:ETAG可通过gcloud compute backend-services get-iam-policy https-backend命令获取,避免覆盖策略时出现冲突。

3. 应用IAM策略

执行以下命令使配置生效:

gcloud compute backend-services set-iam-policy https-backend policy.json

4. 验证配置

  • 确认防火墙规则允许虚拟机访问内部负载均衡器的IP段
  • 使用服务账号B的虚拟机发起请求,检查是否被拒绝

关键逻辑说明

GCP IAM中允许权限默认优先级更高,但给服务账号B添加带expression: false的绑定,相当于直接拒绝其访问权限。另外必须确保现有策略中没有allUsers或allAuthenticatedUsers这类宽范围权限绑定,否则所有实例都能访问,你的限制规则会失效。

内容的提问来源于stack exchange,提问作者prospect

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 17:07:48