GCloud为ESP端点服务执行add-iam-policy-binding报错如何解决
Cloud Endpoints IAM绑定报错解决方案
前置排查
首先核对报错返回的资源名与你实际的端点服务名:你执行命令指定的服务名为my-api.endpoints.my-project.cloud.goog,但报错中找不到的资源为my-api.my-project.cloud.goog,缺少了.endpoints段,优先确认是否是命令输入拼写错误,修正后重试。
如果确认拼写无误,参考以下步骤解决权限问题:
一、你需要具备的权限
要执行gcloud endpoints services add-iam-policy-binding操作,你的账号myusername@mycompany.com需要持有以下权限/角色任意一种:
- 预定义角色:
roles/servicemanagement.admin(服务管理管理员),该角色包含了修改Endpoints服务IAM策略的全部必要权限 - 自定义权限:至少包含
servicemanagement.services.getIamPolicy、servicemanagement.services.setIamPolicy两个端点服务相关权限
二、授权方及所需权限
以下角色持有者可以为你授予对应权限:
- 项目
Owner(所有者)角色成员 - 项目
roles/iam.securityAdmin(安全管理员)角色成员 - 已持有
roles/servicemanagement.admin角色的项目成员
授权方本身需要同时具备修改IAM策略的权限,以及对应Endpoints服务的管理权限。
三、权限配置核查方法
- 核查你的账号在项目下的现有角色/权限:
# 替换为你的项目ID gcloud projects get-iam-policy <你的项目ID> --filter="member:user:myusername@mycompany.com"
- 核查指定Endpoints服务的现有IAM策略:
gcloud endpoints services get-iam-policy my-api.endpoints.my-project.cloud.goog
- 模拟权限校验,精准定位缺失权限:
gcloud iam simulate-access-control my-api.endpoints.my-project.cloud.goog \ --caller-identity user:myusername@mycompany.com \ --permissions servicemanagement.services.getIamPolicy servicemanagement.services.setIamPolicy
四、替代解决方案
如果暂时无法为你的个人账号开通对应权限,可以选择以下方案完成角色绑定:
- 请具备对应权限的项目管理员直接运行绑定命令完成配置
- 使用已经持有足够权限的服务账号身份执行操作,先激活服务账号密钥后再运行绑定命令即可
内容的提问来源于stack exchange,提问作者Amin Merati
相关产品推荐
相关产品推荐

