Saya dapat membuat akun layanan tetapi menghadapi masalah saat menetapkan peran ke akun layanan. Inilah pendekatan yang saya gunakan

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

// =================Setel kebijakan========================

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

Kode ini tidak memberikan kesalahan apa pun tetapi juga tidak menetapkan peran untuk akun layanan yang disediakan.

0
Ankit 3 Maret 2020, 15:46

1 menjawab

Jawaban Terbaik

Karena Anda memanggil projects.serviceAccounts.setIamPolicy, dan karena Anda secara khusus meneruskan serviceAccount, Anda hanya memberikan peran editor akun layanan dengan sendirinya.

Jika Anda ingin akun layanan menjadi editor di proyek, Anda harus menghubungi projects.setIamPolicy dan sumber daya yang ingin Anda tentukan haruslah proyek itu sendiri.

Seperti yang dikatakan John Hanley, Anda juga perlu melakukan ini sebagai siklus baca-modifikasi-tulis sebagai dijelaskan di sini.

0
David 3 Maret 2020, 20:26