java - 无法在 gcp 中为服务帐户分配角色
问题描述
我能够创建服务帐户,但在为服务帐户分配角色时遇到问题。这是我正在使用的方法
CloudResourceManager cloudResourceManagerService = createCloudResourceManagerService(clientId,
clientSecret);
GetIamPolicy getrequest = cloudResourceManagerService.projects().getIamPolicy(projectId,
new GetIamPolicyRequest());
Policy response = getrequest.execute();
//Modification to policy
List<String> members = response.getBindings().get(0).getMembers();
members.add("serviceAccount:name@my-project.iam.gserviceaccount.com");
response.getBindings().get(0).setMembers(members);
// =================设置策略========================
String resource = "projects/" + projectId + "/serviceAccounts/" +
"name@my-project.iam.gserviceaccount.com";
SetIamPolicyRequest requestBody = new SetIamPolicyRequest().setPolicy(response);
SetIamPolicy setrequest = cloudResourceManagerService.projects().setIamPolicy(resource, requestBody);
Policy newResponse = setrequest.execute();
此代码没有给出任何错误,但也没有为提供的服务帐户设置角色。
解决方案
因为您正在调用projects.serviceAccounts.setIamPolicy,并且因为您专门传递了 serviceAccount,所以您只授予服务帐户编辑器角色本身。
如果您希望服务帐户成为项目的编辑者,您必须调用projects.setIamPolicy并且您要指定的资源应该是项目本身。
正如 John Hanley 所说,您还需要按照此处所述的读取-修改-写入循环来执行此操作。
推荐阅读
- bazel - bazel如何选择python版本?
- c# - 复制 Excel 工作表的最有效方法是什么?
- python - 如何在flask\jinja 环境中将数据传递给javascript?
- blogger - 通过没有 Javascript 的背景图像的 Blogger 特色图像
- windows - 默认 Windows 缩放到 150%?
- python - 为什么这个参数列表在 Python 中不会改变?
- amazon-web-services - 调用 ListTopicRules 操作时发生错误(UnrecognizedClientException):请求中包含的安全令牌无效
- jquery - Azure AD 身份验证 401 错误“受众无效” AddAzureADBearer .Net Core Web Api
- jquery - 循环遍历表时如何将多选值推送到Jquery数组
- npm - 从动态导入的 ES6 模块加载 CSS