【问题标题】:Unable to assign role to service account in gcp无法在 gcp 中将角色分配给服务帐户
【发布时间】:2020-03-03 12:46:32
【问题描述】:

我能够创建服务帐户,但在为服务帐户分配角色时遇到问题。这是我正在使用的方法

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();

此代码没有给出任何错误,但也没有为提供的服务帐户设置角色。

【问题讨论】:

  • 策略不能直接分配给项目资源。您必须先阅读现有政策(即使为空),更新政策,然后更新项目资源。

标签: java google-cloud-platform service-accounts google-cloud-automl


【解决方案1】:

因为您正在调用 projects.serviceAccounts.setIamPolicy,并且因为您专门传递了 serviceAccount,所以您只是授予服务帐户编辑角色对其自身

如果您希望服务帐户成为项目的编辑器,您必须调用projects.setIamPolicy,并且您要指定的资源应该是项目本身。

正如 John Hanley 所说,您还需要像 described here 那样以读取-修改-写入循环的形式执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 2021-05-18
    • 2020-12-17
    相关资源
    最近更新 更多