Невозможно назначить роль учетной записи службы в gcp - PullRequest
0 голосов
/ 03 марта 2020

Я могу создать учетную запись службы, но у меня возникают проблемы при назначении роли учетной записи службы. Вот подход, который я использую

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

Этот код не выдает никакой ошибки, но также не устанавливает роль для учетной записи предоставляемой службы.

1 Ответ

0 голосов
/ 03 марта 2020

Поскольку вы звоните projects.serviceAccounts.setIamPolicy , а поскольку вы специально передаете serviceAccount, вы только предоставляете роль редактора учетной записи службы для себя .

Если вы хотите, чтобы служебная учетная запись была редактором проекта , вы должны вызвать projects.setIamPolicy , а ресурс, который вы хотите указать, должен быть самим проектом.

Как говорит Джон Хэнли, вам также нужно будет сделать это как цикл чтения-изменения-записи, как описано здесь .

...