Mengelola akses ke project, folder, dan organisasi

Halaman ini menjelaskan cara memberikan, mengubah, dan mencabut akses ke project folder, dan organisasi. Untuk mempelajari cara mengelola akses ke resource lainnya lihat panduan berikut:

Pada Identity and Access Management (IAM), akses diberikan melalui kebijakan izin, juga disebut sebagai kebijakan IAM. Kebijakan izinkan dilampirkan ke resource Google Cloud. Setiap kebijakan izinkan berisi kumpulan binding peran yang mengaitkan satu atau beberapa akun utama, seperti pengguna atau akun layanan, dengan peran IAM. Binding peran ini memberikan peran yang ditentukan kepada akun utama, baik pada resource yang dilampirkan oleh kebijakan yang diizinkan dan pada semua turunan resource tersebut. Untuk informasi selengkapnya tentang kebijakan izin, lihat Memahami kebijakan izin.

Anda dapat mengelola akses ke project, folder, dan organisasi dengan konsol Google Cloud, Google Cloud CLI, REST API atau library klien Resource Manager.

Sebelum memulai

  • Enable the Resource Manager API.

    Enable the API

  • Siapkan autentikasi.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    Anda dapat menggunakan sampel gcloud CLI di halaman ini dari salah satu lingkungan pengembangan berikut:

    • Cloud Shell: Untuk menggunakan terminal online dengan gcloud CLI yang sudah disiapkan, aktifkan Cloud Shell.

      Di bagian bawah halaman ini, sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Perlu waktu beberapa detik hingga sesi dimulai.

    • Shell lokal: Untuk menggunakan gcloud CLI di lingkungan pengembangan lokal, instal dan initialize gcloud CLI.

    C#

    Untuk menggunakan contoh .NET di halaman ini dari lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Menginstal Google Cloud CLI.
    2. Untuk initialize gcloud CLI, jalankan perintah berikut:

      gcloud init
    3. Buat kredensial autentikasi lokal untuk Akun Google Anda:

      gcloud auth application-default login

    Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud.

    Java

    Untuk menggunakan contoh Java di halaman ini dari lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Menginstal Google Cloud CLI.
    2. Untuk initialize gcloud CLI, jalankan perintah berikut:

      gcloud init
    3. Buat kredensial autentikasi lokal untuk Akun Google Anda:

      gcloud auth application-default login

    Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud.

    Python

    Untuk menggunakan contoh Python di halaman ini dari lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Menginstal Google Cloud CLI.
    2. Untuk initialize gcloud CLI, jalankan perintah berikut:

      gcloud init
    3. Buat kredensial autentikasi lokal untuk Akun Google Anda:

      gcloud auth application-default login

    Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud.

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

      Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init

Peran yang diperlukan

Saat membuat project, folder, atau organisasi, Anda secara otomatis diberi peran yang memungkinkan Anda mengelola akses untuk resource tersebut. Untuk mengetahui informasi selengkapnya, lihat Kebijakan default.

Jika Anda tidak membuat project, folder, atau organisasi, pastikan Anda memiliki peran yang diperlukan untuk mengelola akses ke resource tersebut.

Untuk mendapat izin yang Anda perlukan untuk mengelola akses ke project, folder, atau organisasi, minta administrator untuk memberikan peran IAM berikut pada resource yang aksesnya ingin Anda kelola (project folder, atau organisasi):

  • Untuk mengelola akses ke project: Admin IAM Project (roles/resourcemanager.projectIamAdmin)
  • Untuk mengelola akses ke folder: Folder Admin (roles/resourcemanager.folderAdmin)
  • Untuk mengelola akses ke project, folder, dan organisasi: Admin Organisasi (roles/resourcemanager.organizationAdmin)
  • Untuk mengelola ke hampir semua resource Google Cloud: Security Admin (roles/iam.securityAdmin)

Peran bawaan ini berisi izin yang diperlukan untuk mengelola akses ke project, folder, atau organisasi. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengelola akses ke project, folder, atau organisasi:

  • Untuk mengelola akses ke project:
    • resourcemanager.projects.getIamPolicy
    • resourcemanager.projects.setIamPolicy
  • Untuk mengelola akses ke folder:
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
  • Untuk mengelola akses ke organisasi:
    • resourcemanager.organizations.getIamPolicy
    • resourcemanager.organizations.setIamPolicy

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran standar lainnya.

Lihat akses saat ini

Anda dapat melihat siapa yang memiliki akses ke project, folder, atau organisasi Anda menggunakan konsol Google Cloud, gcloud CLI, REST API atau library klien Resource Manager.

Konsol

  1. Di konsol Google Cloud, buka halaman IAM.

    Buka IAM

  2. Pilih project, folder, atau organisasi.

    Konsol Google Cloud mencantumkan semua akun utama yang telah diberi peran pada project, folder, atau organisasi Anda. Daftar ini mencakup akun utama yang telah mewarisi peran pada resource dari resource induk. Untuk informasi selengkapnya tentang pewarisan kebijakan, lihat Pewarisan kebijakan dan hierarki resource.

  3. Opsional: Untuk melihat pemberian peran untuk akun layanan yang dikelola Google, pilih kotak centang Sertakan pemberian peran yang disediakan Google.

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Untuk melihat siapa yang memiliki akses ke project, folder, atau organisasi Anda, dapatkan kebijakan izin untuk resource. Untuk mempelajari cara menafsirkan kebijakan izin, lihat Memahami kebijakan izin.

    Untuk mendapatkan kebijakan izin untuk resource, jalankan perintahget-iam-policy untuk resource:

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Berikan nilai berikut:

    • RESOURCE_TYPE: Jenis resource yang aksesnya ingin Anda lihat. Gunakan salah satu nilai: projects, resource-manager folders, atau organizations.

    • RESOURCE_ID: Project Google Cloud, folder atau ID organisasi Anda. Project ID berupa alfanumerik, seperti my-project. Folder dan ID organisasi berupa numerik, seperti 123456789012.

    • FORMAT: Format yang diinginkan untuk kebijakan. Gunakan json atau yaml.

    • PATH: Jalur ke file output baru untuk kebijakan.

    Misalnya, perintah berikut mendapat kebijakan ke project my-project dan menyimpannya ke direktori beranda Anda dalam format JSON:

    gcloud projects get-iam-policy my-project --format=json > ~/policy.json

C#

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

Untuk melihat siapa yang memiliki akses ke project, folder, atau organisasi Anda, dapatkan kebijakan izin untuk resource. Untuk mempelajari cara menafsirkan kebijakan izinkan, lihat Memahami kebijakan izinkan.

Contoh berikut menunjukkan cara mendapatkan kebijakan izinkan untuk sebuah project. Untuk mempelajari cara mendapatkan kebijakan izin untuk folder atau organisasi, tinjau dokumentasi library klien Resource Manager untuk bahasa pemrograman Anda.


using Google.Apis.Auth.OAuth2;
using Google.Apis.CloudResourceManager.v1;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy GetPolicy(string projectId)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
        var service = new CloudResourceManagerService(
            new CloudResourceManagerService.Initializer
            {
                HttpClientInitializer = credential
            });

        var policy = service.Projects.GetIamPolicy(new GetIamPolicyRequest(),
            projectId).Execute();
        return policy;
    }
}

Java

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

Untuk melihat siapa yang memiliki akses ke project, folder, atau organisasi Anda, dapatkan kebijakan izin untuk resource. Untuk mempelajari cara menafsirkan kebijakan izinkan, lihat Memahami kebijakan izinkan.

Contoh berikut menunjukkan cara mendapatkan kebijakan izinkan untuk sebuah project. Untuk mempelajari cara mendapatkan kebijakan izin untuk folder atau organisasi, tinjau dokumentasi library klien Resource Manager untuk bahasa pemrograman Anda.

import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.cloudresourcemanager.v3.CloudResourceManager;
import com.google.api.services.cloudresourcemanager.v3.model.GetIamPolicyRequest;
import com.google.api.services.cloudresourcemanager.v3.model.Policy;
import com.google.api.services.iam.v1.IamScopes;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Collections;

public class GetPolicy {

  // Gets a project's policy.
  public static Policy getPolicy(String projectId) {
    // projectId = "my-project-id"

    Policy policy = null;

    CloudResourceManager service = null;
    try {
      service = createCloudResourceManagerService();
    } catch (IOException | GeneralSecurityException e) {
      System.out.println("Unable to initialize service: \n" + e.toString());
      return policy;
    }

    try {
      GetIamPolicyRequest request = new GetIamPolicyRequest();
      policy = service.projects().getIamPolicy(projectId, request).execute();
      System.out.println("Policy retrieved: " + policy.toString());
      return policy;
    } catch (IOException e) {
      System.out.println("Unable to get policy: \n" + e.toString());
      return policy;
    }
  }

  public static CloudResourceManager createCloudResourceManagerService()
      throws IOException, GeneralSecurityException {
    // Use the Application Default Credentials strategy for authentication. For more info, see:
    // https://cloud.google.com/docs/authentication/production#finding_credentials_automatically
    GoogleCredentials credential =
        GoogleCredentials.getApplicationDefault()
            .createScoped(Collections.singleton(IamScopes.CLOUD_PLATFORM));

    CloudResourceManager service =
        new CloudResourceManager.Builder(
                GoogleNetHttpTransport.newTrustedTransport(),
                GsonFactory.getDefaultInstance(),
                new HttpCredentialsAdapter(credential))
            .setApplicationName("service-accounts")
            .build();
    return service;
  }
}

Python

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

Untuk melihat siapa yang memiliki akses ke project, folder, atau organisasi Anda, dapatkan kebijakan izin untuk resource. Untuk mempelajari cara menafsirkan kebijakan izinkan, lihat Memahami kebijakan izinkan.

Contoh berikut menunjukkan cara mendapatkan kebijakan izinkan untuk sebuah project. Untuk mempelajari cara mendapatkan kebijakan izin untuk folder atau organisasi, tinjau dokumentasi library klien Resource Manager untuk bahasa pemrograman Anda.

def get_policy(project_id: str, version: int = 1) -> dict:
    """Gets IAM policy for a project."""

    credentials = service_account.Credentials.from_service_account_file(
        filename=os.environ["GOOGLE_APPLICATION_CREDENTIALS"],
        scopes=["https://www.googleapis.com/auth/cloud-platform"],
    )
    service = googleapiclient.discovery.build(
        "cloudresourcemanager", "v1", credentials=credentials
    )
    policy = (
        service.projects()
        .getIamPolicy(
            resource=project_id,
            body={"options": {"requestedPolicyVersion": version}},
        )
        .execute()
    )
    print(policy)
    return policy

REST

Untuk melihat siapa yang memiliki akses ke project, folder, atau organisasi Anda, dapatkan kebijakan izin untuk resource. Untuk mempelajari cara menafsirkan kebijakan izin, lihat Memahami kebijakan izin.

Metode Resource Manager API getIamPolicy mendapatkan kebijakan izin project, folder, atau organisasi.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • API_VERSION: Versi API yang akan digunakan. Untuk project dan organisasi, gunakan v1. Untuk folder, gunakan v2.
  • RESOURCE_TYPE: Jenis resource yang ingin Anda kelola kebijakannya. Gunakan nilai projects, folders, atau organizations.
  • RESOURCE_ID: Project Google Cloud organisasi, atau ID folder Anda. ID project berupa string alfanumerik, seperti my-project. Folder dan ID organisasi berupa numerik, seperti 123456789012.
  • POLICY_VERSION: Versi kebijakan yang akan ditampilkan. Permintaan harus menentukan versi kebijakan terbaru, yaitu kebijakan versi 3. Lihat Menentukan versi kebijakan saat mendapatkan kebijakan untuk detailnya.

Metode HTTP dan URL:

POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy

Meminta isi JSON:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Responsnya berisi kebijakan izin resource. Contoh:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:owner@example.com"
      ]
    }
  ]
}

Memberi atau mencabut satu peran

Anda dapat menggunakan Konsol Google Cloud dan gcloud CLI untuk memberikan atau mencabut peran tunggal dengan cepat untuk satu akun utama, tanpa mengedit kebijakan izin resource secara langsung. Jenis akun utama yang umum meliputi akun Google, akun layanan, grup Google, dan domain. Untuk daftar semua jenis akun utama, lihat Konsep yang terkait dengan identitas.

Jika Anda memerlukan bantuan untuk mengidentifikasi peran bawaan yang paling sesuai, lihat Memilih peran bawaan.

Memberikan satu peran

Untuk memberikan satu peran ke akun utama, lakukan hal berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman IAM.

    Buka IAM

  2. Pilih project, folder, atau organisasi.

  3. Pilih akun utama yang akan diberi peran:

    • Untuk memberikan peran ke akun utama yang sudah memiliki peran lain pada resource, temukan baris yang berisi akun utama, klik Edit akun utama di baris tersebut, dan klik Tambahkan peran lain.

      Untuk memberikan peran ke akun layanan yang dikelola Google, pilih kotak centang Sertakan pemberian peran yang tersedia di Google untuk melihat alamat emailnya.

    • Untuk memberikan peran ke akun utama yang tidak memiliki peran pada resource, klik Berikan Akses, lalu masukkan alamat email akun utama atau ID lainnya.

  4. Pilih peran yang akan diberikan dari menu drop-down. Untuk praktik keamanan terbaik, pilih peran yang hanya menyertakan izin yang diperlukan oleh akun utama Anda.

  5. Opsional: Tambahkan kondisi ke peran.

  6. Klik Save. Akun utama diberi peran pada resource.

Untuk memberikan peran ke akun utama untuk lebih dari satu project, folder, atau organisasi, lakukan hal berikut:

  1. Pada Konsol Google Cloud, buka halaman Kelola resource

    Buka Kelola resource

  2. Pilih semua resource yang ingin Anda berikan izinnya.

  3. Jika panel info tidak terlihat, klik Tampilkan panel info. Kemudian, klik Izin.

  4. Pilih akun utama yang akan diberi peran:

    • Untuk memberikan peran ke akun utama yang memiliki peran lainnya, temukan baris yang berisi akun utama, klik Edit akun utama pada baris tersebut, lalu klik Tambahkan peran lain.

    • Untuk memberikan peran ke akun utama yang tidak memiliki peran lain, klik Tambahkan akun utama, lalu masukkan alamat email atau ID lainnya.

  5. Pilih peran yang akan diberikan dari menu drop-down.

  6. Opsional: Tambahkan kondisi ke peran.

  7. Klik Save. Akun utama diberi peran yang dipilih setiap resource yang dipilih.

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Perintah add-iam-policy-binding memungkinkan Anda memberikan peran ke akun utama dengan cepat.

    Sebelum menggunakan salah satu data perintah di bawah lakukan penggantian berikut:

    • RESOURCE_TYPE: Jenis resource yang aksesnya ingin Anda kelola. Gunakan projects, resource-manager folders, atau organizations.

    • RESOURCE_ID: ID project, folder, atau organisasi Google Cloud Anda. Project ID berupa alfanumerik, seperti my-project. Folder dan ID organisasi berupa numerik, seperti 123456789012.

    • PRINCIPAL: ID untuk akun utama, atau anggota, yang biasanya memiliki bentuk berikut: PRINCIPAL_TYPE:ID. Contoh, user:my-user@example.com. Untuk daftar lengkap nilai yang dapat PRINCIPAL dimiliki, lihat referensi Binding Kebijakan.

      Untuk jenis akun utama user, nama domain dalam ID harus berupa domain Google Workspace atau Cloud Identity. Untuk mempelajari cara menyiapkan domain Cloud Identity, lihat ringkasan Cloud Identity.

    • ROLE_NAME: Nama peran yang ingin Anda cabut. Gunakan salah satu format berikut:

      • Peran bawaan: roles/SERVICE.IDENTIFIER
      • Peran khusus level project: projects/PROJECT_ID/roles/IDENTIFIER
      • Peran khusus level organisasi: organizations/ORG_ID/roles/IDENTIFIER

      Untuk mengetahui daftar peran bawaan, lihat Memahami peran.

    • CONDITION: Kondisi yang akan ditambahkan ke binding peran. Jika Anda tidak ingin menambahkan kondisi, gunakan nilai None. Untuk informasi selengkapnya tentang kondisi, lihat ringkasan kondisi.

    Jalankan perintah berikut:

    Linux, macOS, atau Cloud Shell

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID \
        --member=PRINCIPAL --role=ROLE_NAME \
        --condition=CONDITION
    

    Windows (PowerShell)

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID `
        --member=PRINCIPAL --role=ROLE_NAME `
        --condition=CONDITION
    

    Windows (cmd.exe)

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID ^
        --member=PRINCIPAL --role=ROLE_NAME ^
        --condition=CONDITION
    

    Respons berisi kebijakan IAM yang telah diupdate.

Mencabut satu peran

Untuk mencabut peran tunggal dari akun utama, lakukan hal berikut:

Konsol

  1. Di Konsol Google Cloud, buka halaman IAM.

    Buka IAM

  2. Pilih project, folder, atau organisasi.

  3. Cari baris yang berisi akun utama yang aksesnya ingin Anda cabut. Kemudian klik Edit akun utama di baris tersebut.

  4. Klik tombol Hapus untuk peran yang ingin Anda cabut, lalu klik Simpan.

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Untuk mencabut peran dari pengguna dengan cepat, jalankan perintah remove-iam-policy-binding:

    gcloud RESOURCE_TYPE remove-iam-policy-binding RESOURCE_ID \
        --member=PRINCIPAL --role=ROLE_NAME

    Berikan nilai berikut:

    • RESOURCE_TYPE: Jenis resource yang ingin Anda kelola aksesnya. Gunakan projects, resource-manager folders, atau organizations.

    • RESOURCE_ID: Project Google Cloud, folder atau ID organisasi Anda. Project ID berupa alfanumerik, seperti my-project. Folder dan ID organisasi berupa numerik, seperti 123456789012.

    • PRINCIPAL: ID untuk akun utama, atau anggota, biasanya memiliki bentuk berikut: PRINCIPAL_TYPE:ID. Misalnya, user:my-user@example.com. Untuk daftar lengkap nilai PRINCIPAL yang dapat dimiliki, lihat referensi Binding Kebijakan.

      Untuk jenis akun utama user, nama domain dalam ID harus berupa domain Google Workspace atau domain Cloud Identity. Untuk mempelajari cara menyiapkan domain Cloud Identity, lihat ringkasan Cloud Identity.

    • ROLE_NAME: Nama peran yang ingin Anda cabut. Gunakan salah satu format berikut:

      • Peran bawaan: roles/SERVICE.IDENTIFIER
      • Peran khusus level project: projects/PROJECT_ID/roles/IDENTIFIER
      • Peran khusus level organisasi: organizations/ORG_ID/roles/IDENTIFIER

      Untuk mengetahui daftar peran bawaan, lihat Memahami peran.

    Misalnya, untuk mencabut peran Project Creator dari pengguna my-user@example.com untuk project my-project:

    gcloud projects remove-iam-policy-binding my-project \
        --member=user:my-user@example.com --role=roles/resourcemanager.projectCreator

Untuk membantu memastikan bahwa Anda tidak mencabut peran yang diperlukan, Anda dapat mengaktifkan rekomendasi risiko perubahan. Rekomendasi risiko perubahan akan memunculkan peringatan saat Anda mencoba untuk mencabut peran level project yang diidentifikasi oleh Google Cloud sebagai hal penting.

Memberikan atau mencabut beberapa peran menggunakan konsol Google Cloud

Anda dapat menggunakan konsol Google Cloud untuk memberikan dan mencabut beberapa peran untuk satu akun utama:

  1. Di konsol Google Cloud, buka halaman IAM.

    Buka IAM

  2. Pilih project, folder, atau organisasi.

  3. Pilih akun utama yang perannya ingin Anda ubah:

    • Guna mengubah peran untuk akun utama yang sudah memiliki peran di resource, temukan baris yang berisi akun utama, klik Edit akun utama pada baris tersebut, dan klik Tambahkan peran lainnya.

      Guna mengubah peran untuk akun layanan yang dikelola Google, pilih kotak centang Sertakan pemberian peran yang disediakan Google untuk melihat alamat emailnya.

    • Untuk memberikan peran ke akun utama yang tidak memiliki peran ke resource, klik Berikan Akses, lalu masukkan alamat email akun utama atau ID lainnya.

  4. Ubah peran akun utama:

    • Untuk memberikan peran kepada akun utama yang tidak memiliki peran yang ada pada resource, klik Pilih peran, lalu pilih peran yang akan diberikan dari menu drop-down.
    • Untuk memberikan peran tambahan kepada akun utama, klik Tambahkan peran lain, lalu pilih peran yang akan diberikan dari menu drop-down.
    • Untuk mengganti salah satu peran utama dengan peran lain, klik peran yang ada, lalu pilih peran lain yang akan diberikan dari menu drop-down.
    • Untuk mencabut salah satu peran akun utama, klik tombol Hapus untuk setiap peran yang ingin dicabut.

    Anda juga dapat menambahkan kondisi ke peran, mengubah kondisi peran, atau menghapus kondisi peran.

  5. Klik Save.

Memberikan atau mencabut beberapa peran secara terprogram

Untuk membuat perubahan akses berskala besar yang melibatkan pemberian dan pencabutan beberapa peran untuk beberapa akun utama, gunakan pola baca-ubah-tulis untuk mengupdate kebijakan izin resource:

  1. Baca kebijakan izin saat ini dengan memanggil getIamPolicy().
  2. Edit kebijakan izin, baik dengan menggunakan editor teks atau secara terprogram, untuk menambahkan atau menghapus akun utama atau binding peran.
  3. Tulis kebijakan izin yang diperbarui dengan memanggil setIamPolicy().

Anda dapat menggunakan library klien gcloud CLI, REST API, atau Resource Manager untuk mengupdate kebijakan izin.

Mendapatkan kebijakan izin saat ini

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Untuk mendapatkan kebijakan izin untuk resource, jalankan perintahget-iam-policy untuk resource:

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Berikan nilai berikut:

    • RESOURCE_TYPE: Jenis resource yang ingin Anda dapatkan kebijakan izin. Gunakan salah satu nilai berikut: projects, resource-manager folders, atau organizations.

    • RESOURCE_ID: Project Google Cloud, folder atau ID organisasi Anda. Project ID berupa alfanumerik, seperti my-project. Folder dan ID organisasi berupa numerik, seperti 123456789012.

    • FORMAT: Format yang diinginkan untuk kebijakan izin. Gunakan json atau yaml.

    • PATH: Jalur ke file output baru untuk kebijakan izin.

    Misalnya, perintah berikut mendapat kebijakan izin ke project my-project dan menyimpannya ke direktori beranda Anda dalam format JSON.

    gcloud projects get-iam-policy my-project --format json > ~/policy.json

C#

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

Contoh berikut menunjukkan cara mendapatkan kebijakan izinkan untuk sebuah project. Untuk mempelajari cara mendapatkan kebijakan izin folder atau organisasi, tinjau dokumentasi library klien Resource Manager untuk bahasa pemrograman Anda.


using Google.Apis.Auth.OAuth2;
using Google.Apis.CloudResourceManager.v1;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy GetPolicy(string projectId)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
        var service = new CloudResourceManagerService(
            new CloudResourceManagerService.Initializer
            {
                HttpClientInitializer = credential
            });

        var policy = service.Projects.GetIamPolicy(new GetIamPolicyRequest(),
            projectId).Execute();
        return policy;
    }
}

Java

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

Contoh berikut menunjukkan cara mendapatkan kebijakan izinkan untuk sebuah project. Untuk mempelajari cara mendapatkan kebijakan izin folder atau organisasi, tinjau dokumentasi library klien Resource Manager untuk bahasa pemrograman Anda.

import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.cloudresourcemanager.v3.CloudResourceManager;
import com.google.api.services.cloudresourcemanager.v3.model.GetIamPolicyRequest;
import com.google.api.services.cloudresourcemanager.v3.model.Policy;
import com.google.api.services.iam.v1.IamScopes;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Collections;

public class GetPolicy {

  // Gets a project's policy.
  public static Policy getPolicy(String projectId) {
    // projectId = "my-project-id"

    Policy policy = null;

    CloudResourceManager service = null;
    try {
      service = createCloudResourceManagerService();
    } catch (IOException | GeneralSecurityException e) {
      System.out.println("Unable to initialize service: \n" + e.toString());
      return policy;
    }

    try {
      GetIamPolicyRequest request = new GetIamPolicyRequest();
      policy = service.projects().getIamPolicy(projectId, request).execute();
      System.out.println("Policy retrieved: " + policy.toString());
      return policy;
    } catch (IOException e) {
      System.out.println("Unable to get policy: \n" + e.toString());
      return policy;
    }
  }

  public static CloudResourceManager createCloudResourceManagerService()
      throws IOException, GeneralSecurityException {
    // Use the Application Default Credentials strategy for authentication. For more info, see:
    // https://cloud.google.com/docs/authentication/production#finding_credentials_automatically
    GoogleCredentials credential =
        GoogleCredentials.getApplicationDefault()
            .createScoped(Collections.singleton(IamScopes.CLOUD_PLATFORM));

    CloudResourceManager service =
        new CloudResourceManager.Builder(
                GoogleNetHttpTransport.newTrustedTransport(),
                GsonFactory.getDefaultInstance(),
                new HttpCredentialsAdapter(credential))
            .setApplicationName("service-accounts")
            .build();
    return service;
  }
}

Python

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

Contoh berikut menunjukkan cara mendapatkan kebijakan izinkan untuk sebuah project. Untuk mempelajari cara mendapatkan kebijakan izin folder atau organisasi, tinjau dokumentasi library klien Resource Manager untuk bahasa pemrograman Anda.

def get_policy(project_id: str, version: int = 1) -> dict:
    """Gets IAM policy for a project."""

    credentials = service_account.Credentials.from_service_account_file(
        filename=os.environ["GOOGLE_APPLICATION_CREDENTIALS"],
        scopes=["https://www.googleapis.com/auth/cloud-platform"],
    )
    service = googleapiclient.discovery.build(
        "cloudresourcemanager", "v1", credentials=credentials
    )
    policy = (
        service.projects()
        .getIamPolicy(
            resource=project_id,
            body={"options": {"requestedPolicyVersion": version}},
        )
        .execute()
    )
    print(policy)
    return policy

REST

Metode Resource Manager API getIamPolicy mendapatkan kebijakan izin project, folder, atau organisasi.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • API_VERSION: Versi API yang akan digunakan. Untuk project dan organisasi, gunakan v1. Untuk folder, gunakan v2.
  • RESOURCE_TYPE: Jenis resource yang ingin Anda kelola kebijakannya. Gunakan nilai projects, folders, atau organizations.
  • RESOURCE_ID: Project Google Cloud organisasi, atau ID folder Anda. ID project berupa string alfanumerik, seperti my-project. Folder dan ID organisasi berupa numerik, seperti 123456789012.
  • POLICY_VERSION: Versi kebijakan yang akan ditampilkan. Permintaan harus menentukan versi kebijakan terbaru, yaitu kebijakan versi 3. Lihat Menentukan versi kebijakan saat mendapatkan kebijakan untuk detailnya.

Metode HTTP dan URL:

POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy

Meminta isi JSON:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Responsnya berisi kebijakan izin resource. Contoh:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:owner@example.com"
      ]
    }
  ]
}

Simpan respons dalam file dengan jenis yang sesuai (json atau yaml).

Mengubah kebijakan izin

Secara terprogram atau menggunakan editor teks, ubah salinan lokal kebijakan izin resource Anda untuk mencerminkan peran yang ingin diberikan atau dicabut.

Untuk memastikan Anda tidak menimpa perubahan lain, jangan mengedit atau menghapus kolom etag kebijakan izin. Kolom etag mengidentifikasi status saat ini dari kebijakan izin. Saat Anda menetapkan kebijakan izin yang diperbarui, IAM akan membandingkan nilai etag dalam permintaan dengan etag yang sudah ada, dan hanya menulis kebijakan izin jika nilainya cocok.

Untuk mengedit peran yang diberikan oleh kebijakan izin, Anda perlu mengedit binding peran dalam kebijakan izin. Binding peran memiliki format berikut:

{
  "role": "ROLE_NAME",
  "members": [
    "PRINCIPAL_1",
    "PRINCIPAL_2",
    ...
    "PRINCIPAL_N"
  ],
  "conditions:" {
    CONDITIONS
  }
}

Placeholder memiliki nilai berikut:

  • ROLE_NAME: Nama peran yang ingin Anda berikan. Gunakan salah satu format berikut:

    • Peran bawaan: roles/SERVICE.IDENTIFIER
    • Peran khusus level project: projects/PROJECT_ID/roles/IDENTIFIER
    • Peran khusus tingkat organisasi: organizations/ORG_ID/roles/IDENTIFIER

    Untuk daftar peran bawaan, lihat Memahami peran.

  • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: ID untuk akun utama yang ingin Anda berikan peran.

    ID utama biasanya memiliki bentuk berikut: PRINCIPAL-TYPE:ID. Contoh, user:my-user@example.com. Untuk daftar lengkap nilai yang dapat dimiliki PRINCIPAL, lihat Referensi Pengikatan Kebijakan.

    Untuk jenis akun utama user, nama domain dalam ID harus berupa domain Google Workspace atau domain Cloud Identity. Untuk mempelajari cara menyiapkan domain Cloud Identity, lihat ringkasan Cloud Identity.

  • CONDITIONS: Opsional. Semua conditions yang menentukan kapan akses akan diberikan.

Memberikan peran

Untuk memberikan peran ke akun utama Anda, ubah binding peran dalam kebijakan izin. Untuk mempelajari peran yang dapat Anda berikan, lihat Memahami peran, atau melihat peran yang dapat diberikan ke resource tersebut. Jika Anda memerlukan bantuan untuk mengidentifikasi peran bawaan yang paling sesuai, lihat Memilih peran bawaan.

Secara opsional, Anda dapat menggunakan conditions untuk memberikan peran hanya jika memenuhi persyaratan tertentu.

Untuk memberikan peran yang sudah disertakan dalam kebijakan izin, tambahkan akun utama ke binding peran yang ada:

gcloud

Edit kebijakan izin yang ditampilkan dengan menambahkan akun utama ke binding peran yang sudah ada. Perhatikan bahwa perubahan ini tidak akan diterapkan hingga Anda menetapkan kebijakan izin yang diperbarui.

Misalnya, anggap kebijakan izin berisi binding peran berikut, yang memberikan peran Peninjau Keamanan (roles/iam.securityReviewer) ke kai@example.com:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "user:kai@example.com"
  ]
}

Untuk menambahkan peran yang sama ke raha@example.com, tabahkan raha@example.com ke binding peran yang ada:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

C#

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.


using System.Linq;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy AddMember(Policy policy, string role, string member)
    {
        var binding = policy.Bindings.First(x => x.Role == role);
        binding.Members.Add(member);
        return policy;
    }
}

Go

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

import (
	"fmt"
	"io"

	"google.golang.org/api/iam/v1"
)

// addMember adds a member to a role binding.
func addMember(w io.Writer, policy *iam.Policy, role, member string) {
	for _, binding := range policy.Bindings {
		if binding.Role != role {
			continue
		}
		for _, m := range binding.Members {
			if m != member {
				continue
			}
			fmt.Fprintf(w, "Role %q found. Member already exists.\n", role)
			return
		}
		binding.Members = append(binding.Members, member)
		fmt.Fprintf(w, "Role %q found. Member added.\n", role)
		return
	}
	fmt.Fprintf(w, "Role %q not found. Member not added.\n", role)
}

Java

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

import com.google.api.services.cloudresourcemanager.v3.model.Binding;
import com.google.api.services.cloudresourcemanager.v3.model.Policy;
import java.util.List;

public class AddMember {

  // Adds a member to a preexisting role.
  public static void addMember(Policy policy) {
    // policy = service.Projects.GetIAmPolicy(new GetIamPolicyRequest(), your-project-id).Execute();

    String role = "roles/existing-role";
    String member = "user:member-to-add@example.com";

    List<Binding> bindings = policy.getBindings();

    for (Binding b : bindings) {
      if (b.getRole().equals(role)) {
        b.getMembers().add(member);
        System.out.println("Member " + member + " added to role " + role);
        return;
      }
    }

    System.out.println("Role not found in policy; member not added");
  }
}

Python

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

def modify_policy_add_member(policy: dict, role: str, member: str) -> dict:
    """Adds a new member to a role binding."""

    binding = next(b for b in policy["bindings"] if b["role"] == role)
    binding["members"].append(member)
    print(binding)
    return policy

REST

Edit kebijakan izin yang ditampilkan dengan menambahkan akun utama ke binding peran yang sudah ada. Perhatikan bahwa perubahan ini tidak akan diterapkan hingga Anda menetapkan kebijakan izin yang diperbarui.

Misalnya, anggap kebijakan izin berisi binding peran berikut, yang memberikan peran Peninjau Keamanan (roles/iam.securityReviewer) ke kai@example.com:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "user:kai@example.com"
  ]
}

Untuk menambahkan peran yang sama ke raha@example.com, tabahkan raha@example.com ke binding peran yang ada:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Untuk memberikan peran yang belum disertakan dalam kebijakan izinkan, tambahkan binding peran baru:

gcloud

Edit kebijakan izinkan dengan menambahkan binding peran baru yang memberikan peran tersebut ke akun utama. Perubahan ini tidak akan diterapkan hingga Anda menetapkan kebijakan izin yang diperbarui.

Misalnya, untuk memberikan peran Admin Compute Storage (roles/compute.storageAdmin) ke raha@example.com, tambahkan binding peran ke array bindings untuk kebijakan izin:

{
  "role": "roles/compute.storageAdmin",
  "members": [
    "user:raha@example.com"
  ]
}

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk IAM, lihat library klien IAM. Untuk informasi selengkapnya, lihat dokumentasi referensi API C# IAM.

Untuk melakukan autentikasi ke IAM, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.


using System.Collections.Generic;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy AddBinding(Policy policy, string role, string member)
    {
        var binding = new Binding
        {
            Role = role,
            Members = new List<string> { member }
        };
        policy.Bindings.Add(binding);
        return policy;
    }
}

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk IAM, lihat library klien IAM. Untuk informasi selengkapnya, lihat dokumentasi referensi API Java IAM.

Untuk melakukan autentikasi ke IAM, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

import com.google.api.services.cloudresourcemanager.v3.model.Binding;
import com.google.api.services.cloudresourcemanager.v3.model.Policy;
import java.util.ArrayList;
import java.util.List;

public class AddBinding {

  // Adds a member to a role with no previous members.
  public static void addBinding(Policy policy) {
    // policy = service.Projects.GetIAmPolicy(new GetIamPolicyRequest(), your-project-id).Execute();

    String role = "roles/role-to-add";
    List<String> members = new ArrayList<>();
    members.add("user:member-to-add@example.com");

    Binding binding = new Binding();
    binding.setRole(role);
    binding.setMembers(members);

    policy.getBindings().add(binding);
    System.out.println("Added binding: " + binding.toString());
  }
}

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk IAM, lihat library klien IAM. Untuk informasi selengkapnya, lihat dokumentasi referensi API Python IAM.

Untuk melakukan autentikasi ke IAM, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

def modify_policy_add_role(policy: dict, role: str, member: str) -> dict:
    """Adds a new role binding to a policy."""

    binding = {"role": role, "members": [member]}
    policy["bindings"].append(binding)
    print(policy)
    return policy

REST

Edit kebijakan izinkan dengan menambahkan binding peran baru yang memberikan peran tersebut ke akun utama. Perubahan ini tidak akan diterapkan hingga Anda menetapkan kebijakan izin yang diperbarui.

Misalnya, untuk memberikan peran Admin Compute Storage (roles/compute.storageAdmin) ke raha@example.com, tambahkan binding peran ke array bindings untuk kebijakan izin:

{
  "role": "roles/compute.storageAdmin",
  "members": [
    "user:raha@example.com"
  ]
}

Anda hanya dapat memberikan peran yang terkait ke layanan API yang diaktifkan. Jika layanan, seperti Compute Engine, tidak aktif, Anda tidak dapat memberikan peran yang eksklusif yang terkait ke Compute Engine. Untuk informasi selengkapnya, lihat Mengaktifkan dan menonaktifkan API.

Ada beberapa batasan unik saat memberikan izin pada project, terutama saat memberikan peran Pemilik (roles/owner). Lihat dokumentasi referensi projects.setIamPolicy() untuk informasi selengkapnya.

Mencabut peran

Untuk mencabut peran, hapus akun utama dari binding peran. Jika tidak ada akun utama lain dalam binding peran, hapus seluruh binding peran.

gcloud

Cabut peran dengan mengedit kebijakan izin JSON atau YAML yang ditampilkan oleh perintah get-iam-policy. Perubahan ini tidak akan diterapkan hingga Anda menetapkan kebijakan izin yang diperbarui.

Untuk mencabut peran dari akun utama, hapus akun utama atau binding yang diinginkan dari array bindings untuk kebijakan izin.

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk IAM, lihat library klien IAM. Untuk informasi selengkapnya, lihat dokumentasi referensi API C# IAM.

Untuk melakukan autentikasi ke IAM, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.


using System.Linq;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy RemoveMember(Policy policy, string role, string member)
    {
        try
        {
            var binding = policy.Bindings.First(x => x.Role == role);
            if (binding.Members.Count != 0 && binding.Members.Contains(member))
            {
                binding.Members.Remove(member);
            }
            if (binding.Members.Count == 0)
            {
                policy.Bindings.Remove(binding);
            }
            return policy;
        }
        catch (System.InvalidOperationException e)
        {
            System.Diagnostics.Debug.WriteLine("Role does not exist in policy: \n" + e.ToString());
            return policy;
        }
    }
}

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk IAM, lihat library klien IAM. Untuk informasi selengkapnya, lihat dokumentasi referensi API Go IAM.

Untuk melakukan autentikasi ke IAM, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

import (
	"fmt"
	"io"

	"google.golang.org/api/iam/v1"
)

// removeMember removes a member from a role binding.
func removeMember(w io.Writer, policy *iam.Policy, role, member string) {
	bindings := policy.Bindings
	bindingIndex, memberIndex := -1, -1
	for bIdx := range bindings {
		if bindings[bIdx].Role != role {
			continue
		}
		bindingIndex = bIdx
		for mIdx := range bindings[bindingIndex].Members {
			if bindings[bindingIndex].Members[mIdx] != member {
				continue
			}
			memberIndex = mIdx
			break
		}
	}
	if bindingIndex == -1 {
		fmt.Fprintf(w, "Role %q not found. Member not removed.\n", role)
		return
	}
	if memberIndex == -1 {
		fmt.Fprintf(w, "Role %q found. Member not found.\n", role)
		return
	}

	members := removeIdx(bindings[bindingIndex].Members, memberIndex)
	bindings[bindingIndex].Members = members
	if len(members) == 0 {
		bindings = removeIdx(bindings, bindingIndex)
		policy.Bindings = bindings
	}
	fmt.Fprintf(w, "Role %q found. Member removed.\n", role)
}

// removeIdx removes arr[idx] from arr.
func removeIdx[T any](arr []T, idx int) []T {
	return append(arr[:idx], arr[idx+1:]...)
}

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk IAM, lihat library klien IAM. Untuk informasi selengkapnya, lihat dokumentasi referensi API Java IAM.

Untuk melakukan autentikasi ke IAM, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

import com.google.api.services.cloudresourcemanager.v3.model.Binding;
import com.google.api.services.cloudresourcemanager.v3.model.Policy;
import java.util.List;

public class RemoveMember {

  // Removes member from a role; removes binding if binding contains 0 members.
  public static void removeMember(Policy policy) {
    // policy = service.Projects.GetIAmPolicy(new GetIamPolicyRequest(), your-project-id).Execute();

    String role = "roles/existing-role";
    String member = "user:member-to-remove@example.com";

    List<Binding> bindings = policy.getBindings();
    Binding binding = null;
    for (Binding b : bindings) {
      if (b.getRole().equals(role)) {
        binding = b;
      }
    }
    if (binding != null && binding.getMembers().contains(member)) {
      binding.getMembers().remove(member);
      System.out.println("Member " + member + " removed from " + role);
      if (binding.getMembers().isEmpty()) {
        policy.getBindings().remove(binding);
      }
      return;
    }

    System.out.println("Role not found in policy; member not removed");
    return;
  }
}

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk IAM, lihat library klien IAM. Untuk informasi selengkapnya, lihat dokumentasi referensi API Python IAM.

Untuk melakukan autentikasi ke IAM, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

def modify_policy_remove_member(policy: dict, role: str, member: str) -> dict:
    """Removes a  member from a role binding."""
    binding = next(b for b in policy["bindings"] if b["role"] == role)
    if "members" in binding and member in binding["members"]:
        binding["members"].remove(member)
    print(binding)
    return policy

REST

Cabut peran dengan mengedit kebijakan izin JSON atau YAML yang ditampilkan oleh perintah get-iam-policy. Perubahan ini tidak akan diterapkan hingga Anda menetapkan kebijakan izin yang diperbarui.

Untuk mencabut peran dari akun utama, hapus akun utama atau binding yang diinginkan dari array bindings untuk kebijakan izinkan.

Menetapkan kebijakan izin

Setelah Anda mengubah kebijakan izinkan untuk memberikan dan mencabut peran yang diinginkan, panggil setIamPolicy() untuk melakukan perubahan.

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Untuk mendapatkan kebijakan izin untuk resource, jalankan perintah set-iam-policy untuk resource:

    gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH

    Berikan nilai berikut:

    • RESOURCE_TYPE: Kebijakan resource yang Anda Anda tetapkan kebijakan izinnya. Gunakan salah satu nilai berikut: projects, resource-manager folders, atau organizations.

    • RESOURCE_ID: Project Google Cloud, folder atau ID organisasi Anda. Project ID berupa alfanumerik, seperti my-project. Folder dan ID organisasi berupa numerik, seperti 123456789012.

    • PATH: Jalur ke file yang berisi kebijakan izin baru.

    Respons berisi kebijakan izin yang diperbarui.

    Misalnya, perintah berikut menetapkan kebijakan izin yang disimpan di policy.json sebagai kebijakan izin untuk project my-project:

    gcloud projects set-iam-policy my-project ~/policy.json

C#


using Google.Apis.Auth.OAuth2;
using Google.Apis.CloudResourceManager.v1;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy SetPolicy(string projectId, Policy policy)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
        var service = new CloudResourceManagerService(
            new CloudResourceManagerService.Initializer
            {
                HttpClientInitializer = credential
            });

        return service.Projects.SetIamPolicy(new SetIamPolicyRequest
        {
            Policy = policy
        }, projectId).Execute();
    }
}

Java

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

Contoh berikut menunjukkan cara menetapkan kebijakan izinkan untuk sebuah project. Untuk mempelajari cara menetapkan kebijakan izin folder atau organisasi, tinjau dokumentasi library klien Resource Manager untuk bahasa pemrograman Anda.

import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.cloudresourcemanager.v3.CloudResourceManager;
import com.google.api.services.cloudresourcemanager.v3.model.Policy;
import com.google.api.services.cloudresourcemanager.v3.model.SetIamPolicyRequest;
import com.google.api.services.iam.v1.IamScopes;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Collections;

public class SetPolicy {

  // Sets a project's policy.
  public static void setPolicy(Policy policy, String projectId) {
    // policy = service.Projects.GetIAmPolicy(new GetIamPolicyRequest(), your-project-id).Execute();
    // projectId = "my-project-id"

    CloudResourceManager service = null;
    try {
      service = createCloudResourceManagerService();
    } catch (IOException | GeneralSecurityException e) {
      System.out.println("Unable to initialize service: \n" + e.toString());
      return;
    }

    try {
      SetIamPolicyRequest request = new SetIamPolicyRequest();
      request.setPolicy(policy);
      Policy response = service.projects().setIamPolicy(projectId, request).execute();
      System.out.println("Policy set: " + response.toString());
    } catch (IOException e) {
      System.out.println("Unable to set policy: \n" + e.toString());
    }
  }

  public static CloudResourceManager createCloudResourceManagerService()
      throws IOException, GeneralSecurityException {
    // Use the Application Default Credentials strategy for authentication. For more info, see:
    // https://cloud.google.com/docs/authentication/production#finding_credentials_automatically
    GoogleCredentials credential =
        GoogleCredentials.getApplicationDefault()
            .createScoped(Collections.singleton(IamScopes.CLOUD_PLATFORM));

    CloudResourceManager service =
        new CloudResourceManager.Builder(
                GoogleNetHttpTransport.newTrustedTransport(),
                GsonFactory.getDefaultInstance(),
                new HttpCredentialsAdapter(credential))
            .setApplicationName("service-accounts")
            .build();
    return service;
  }
}

Python

Untuk mengautentikasi ke Resource Manager, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Resource Manager, lihat library klien Resource Manager.

Contoh berikut menunjukkan cara menetapkan kebijakan izinkan untuk sebuah project. Untuk mempelajari cara menetapkan kebijakan izin folder atau organisasi, tinjau dokumentasi library klien Resource Manager untuk bahasa pemrograman Anda.

def set_policy(project_id: str, policy: dict) -> dict:
    """Sets IAM policy for a project."""

    credentials = service_account.Credentials.from_service_account_file(
        filename=os.environ["GOOGLE_APPLICATION_CREDENTIALS"],
        scopes=["https://www.googleapis.com/auth/cloud-platform"],
    )
    service = googleapiclient.discovery.build(
        "cloudresourcemanager", "v1", credentials=credentials
    )

    policy = (
        service.projects()
        .setIamPolicy(resource=project_id, body={"policy": policy})
        .execute()
    )
    print(policy)
    return policy

REST

Metode Resource Manager API setIamPolicy menetapkan kebijakan dalam permintaan sebagai kebijakan izin baru untuk project, folder, atau organisasi.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • API_VERSION: Versi API yang akan digunakan. Untuk project dan organisasi, gunakan v1. Untuk folder, gunakan v2.
  • RESOURCE_TYPE: Jenis resource yang ingin Anda kelola kebijakannya. Gunakan nilai projects, folders, atau organizations.
  • RESOURCE_ID: Project Google Cloud organisasi, atau ID folder Anda. ID project berupa string alfanumerik, seperti my-project. Folder dan ID organisasi berupa numerik, seperti 123456789012.
  • POLICY: Representasi JSON dari kebijakan yang ingin Anda tetapkan. Untuk informasi selengkapnya tentang format kebijakan, lihat referensi Kebijakan.

Metode HTTP dan URL:

POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:setIamPolicy

Meminta isi JSON:

{
  "policy": POLICY
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Respons berisi kebijakan izin yang telah diperbarui.

Langkah selanjutnya

Cobalah sendiri

Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.

Mulai secara gratis