无法将角色分配给 gcp 中的服务帐户
Unable to assign role to service account in 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 所说,您还需要将此作为读-修改-写循环来执行 described here。
我能够创建服务帐户,但在向服务帐户分配角色时遇到问题。这是我使用的方法
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 所说,您还需要将此作为读-修改-写循环来执行 described here。