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

  • Aktifkan Resource Manager API.

    Mengaktifkan API

  • Menyiapkan autentikasi.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    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.

    C#

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

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      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 dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      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 dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      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.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

    Untuk informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud.

Peran yang diperlukan

Saat membuat project, folder, atau organisasi, Anda akan otomatis diberi peran yang memungkinkan Anda mengelola akses untuk resource tersebut. Untuk 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 mendapatkan 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: Project IAM Admin (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 akses 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, luaskan 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 bagi agen layanan, 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 izin, lihat Memahami kebijakan izin.

Contoh berikut menunjukkan cara mendapatkan kebijakan izin untuk 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 izin, lihat Memahami kebijakan izin.

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

import com.google.cloud.resourcemanager.v3.ProjectsClient;
import com.google.iam.admin.v1.ProjectName;
import com.google.iam.v1.GetIamPolicyRequest;
import com.google.iam.v1.Policy;
import java.io.IOException;

public class GetProjectPolicy {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your project ID.
    String projectId = "your-project-id";

    getProjectPolicy(projectId);
  }

  // Gets a project's policy.
  public static Policy getProjectPolicy(String projectId) throws IOException {
    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (ProjectsClient projectsClient = ProjectsClient.create()) {
      GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
              .setResource(ProjectName.of(projectId).toString())
              .build();
      return projectsClient.getIamPolicy(request);
    }
  }
}

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 izin, lihat Memahami kebijakan izin.

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

from google.cloud import resourcemanager_v3
from google.iam.v1 import iam_policy_pb2, policy_pb2


def get_project_policy(project_id: str) -> policy_pb2.Policy:
    """
    Get policy for project.

    project_id: ID or number of the Google Cloud project you want to use.
    """

    client = resourcemanager_v3.ProjectsClient()
    request = iam_policy_pb2.GetIamPolicyRequest()
    request.resource = f"projects/{project_id}"

    policy = client.get_iam_policy(request)
    print(f"Policy retrieved: {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 dari 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:my-user@example.com"
      ]
    }
  ]
}

Memberikan 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.

Secara umum, perubahan kebijakan akan berlaku dalam waktu 2 menit. Namun, dalam beberapa kasus, diperlukan 7 menit atau lebih untuk mengubah seluruh penerapan pada sistem.

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 agen layanan, pilih kotak centang Sertakan pemberian peran yang disediakan Google untuk melihat alamat emailnya.

    • Untuk memberikan peran kepada akun utama yang tidak memiliki peran pada resource, klik Berikan Akses, lalu masukkan ID untuk akun utama—misalnya, my-user@example.com.

  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 Simpan. 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 kepada akun utama yang belum memiliki peran lain, klik Tambahkan akun utama, lalu masukkan ID untuk akun utama—misalnya, my-user@example.com.

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

  6. Opsional: Tambahkan kondisi ke peran.

  7. Klik Simpan. 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 dimiliki PRINCIPAL, lihat ID utama.

      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 yang dapat dimiliki PRINCIPAL, lihat ID utama.

      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 akun layanan example-service-account@example-project. untuk project example-project:

    gcloud projects remove-iam-policy-binding example-project 
    --member=serviceAccount:example-service-account@example-project.
    --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.

      Untuk mengubah peran agen layanan, pilih kotak centang Sertakan pemberian peran yang disediakan Google untuk melihat alamat emailnya.

    • Untuk memberikan peran kepada akun utama yang tidak memiliki peran di resource, klik Berikan Akses, lalu masukkan ID untuk akun utama—misalnya, my-user@example.com.

  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 Simpan.

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.

Secara umum, perubahan kebijakan akan berlaku dalam waktu 2 menit. Namun, dalam beberapa kasus, diperlukan 7 menit atau lebih untuk mengubah seluruh penerapan pada sistem.

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 izin untuk 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 izin untuk project. Untuk mempelajari cara mendapatkan kebijakan izin folder atau organisasi, tinjau dokumentasi library klien Resource Manager untuk bahasa pemrograman Anda.

import com.google.cloud.resourcemanager.v3.ProjectsClient;
import com.google.iam.admin.v1.ProjectName;
import com.google.iam.v1.GetIamPolicyRequest;
import com.google.iam.v1.Policy;
import java.io.IOException;

public class GetProjectPolicy {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your project ID.
    String projectId = "your-project-id";

    getProjectPolicy(projectId);
  }

  // Gets a project's policy.
  public static Policy getProjectPolicy(String projectId) throws IOException {
    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (ProjectsClient projectsClient = ProjectsClient.create()) {
      GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
              .setResource(ProjectName.of(projectId).toString())
              .build();
      return projectsClient.getIamPolicy(request);
    }
  }
}

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 izin untuk project. Untuk mempelajari cara mendapatkan kebijakan izin folder atau organisasi, tinjau dokumentasi library klien Resource Manager untuk bahasa pemrograman Anda.

from google.cloud import resourcemanager_v3
from google.iam.v1 import iam_policy_pb2, policy_pb2


def get_project_policy(project_id: str) -> policy_pb2.Policy:
    """
    Get policy for project.

    project_id: ID or number of the Google Cloud project you want to use.
    """

    client = resourcemanager_v3.ProjectsClient()
    request = iam_policy_pb2.GetIamPolicyRequest()
    request.resource = f"projects/{project_id}"

    policy = client.get_iam_policy(request)
    print(f"Policy retrieved: {policy}")

    return policy

REST

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

Sebelum menggunakan salah satu dari 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:my-user@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 membantu mencegah Anda 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 ID utama.

    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 kondisi 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 kondisi 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. Perubahan ini tidak akan diterapkan hingga Anda menetapkan kebijakan izinkan yang diperbarui.

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

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

Untuk memberikan peran yang sama kepada Raha, tambahkan ID akun utama Raha 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.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.util.ArrayList;
import java.util.List;

public class AddMember {
  public static void main(String[] args) {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/existing-role";
    // TODO: Replace with your member.
    String member = "user:member-to-add@example.com";

    addMember(policy, role, member);
  }

  // Adds a member to a pre-existing role.
  public static Policy addMember(Policy policy, String role, String member) {
    List<Binding> newBindingsList = new ArrayList<>();

    for (Binding b : policy.getBindingsList()) {
      if (b.getRole().equals(role)) {
        newBindingsList.add(b.toBuilder().addMembers(member).build());
      } else {
        newBindingsList.add(b);
      }
    }

    // Update the policy to add the member.
    Policy updatedPolicy = policy.toBuilder()
            .clearBindings()
            .addAllBindings(newBindingsList)
            .build();

    System.out.println("Added member: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

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.

from google.iam.v1 import policy_pb2
from snippets.get_policy import get_project_policy
from snippets.set_policy import set_project_policy


def modify_policy_add_member(
    project_id: str, role: str, member: str
) -> policy_pb2.Policy:
    """
    Add a member to certain role in project policy.

    project_id: ID or number of the Google Cloud project you want to use.
    role: role to which member need to be added.
    member: The principals requesting access.

    Possible format for member:
        * user:{emailid}
        * serviceAccount:{emailid}
        * group:{emailid}
        * deleted:user:{emailid}?uid={uniqueid}
        * deleted:serviceAccount:{emailid}?uid={uniqueid}
        * deleted:group:{emailid}?uid={uniqueid}
        * domain:{domain}
    """
    policy = get_project_policy(project_id)

    for bind in policy.bindings:
        if bind.role == role:
            bind.members.append(member)
            break

    return set_project_policy(project_id, policy)

REST

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

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

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

Untuk memberikan peran yang sama kepada Raha, tambahkan ID akun utama Raha 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 izinkan yang diperbarui.

Misalnya, untuk memberikan peran Admin Compute Storage (roles/compute.storageAdmin) ke Raha, tambahkan binding peran berikut 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.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.util.Collections;
import java.util.List;

public class AddBinding {
  public static void main(String[] args) {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy: GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/role-to-add";
    // TODO: Replace with your members.
    List<String> members = Collections.singletonList("user:member-to-add@example.com");

    addBinding(policy, role, members);
  }

  // Adds a member to a role.
  public static Policy addBinding(Policy policy, String role, List<String> members) {
    Binding binding = Binding.newBuilder()
            .setRole(role)
            .addAllMembers(members)
            .build();

    // Update bindings for the policy.
    Policy updatedPolicy = policy.toBuilder().addBindings(binding).build();

    System.out.println("Added binding: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

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 izinkan yang diperbarui.

Misalnya, untuk memberikan peran Admin Compute Storage (roles/compute.storageAdmin) ke Raha, tambahkan binding peran berikut 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 izinkan yang diperbarui.

Untuk mencabut peran dari akun utama, hapus akun utama atau binding 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.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class RemoveMember {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/existing-role";
    // TODO: Replace with your member.
    String member = "user:member-to-add@example.com";

    removeMember(policy, role, member);
  }

  // Removes member from a role; removes binding if binding contains no members.
  public static Policy removeMember(Policy policy, String role, String member) {
    // Creating new builder with all values copied from origin policy
    Policy.Builder policyBuilder = policy.toBuilder();

    // Getting binding with suitable role.
    Binding binding = null;
    for (Binding b : policy.getBindingsList()) {
      if (b.getRole().equals(role)) {
        binding = b;
        break;
      }
    }

    if (binding != null && binding.getMembersList().contains(member)) {
      List<String> newMemberList = new ArrayList<>(binding.getMembersList());
      // Removing member from a role
      newMemberList.remove(member);

      System.out.println("Member " + member + " removed from " + role);

      // Adding all remaining members to create new binding
      Binding newBinding = binding.toBuilder()
              .clearMembers()
              .addAllMembers(newMemberList)
              .build();

      List<Binding> newBindingList = new ArrayList<>(policyBuilder.getBindingsList());

      // Removing old binding to replace with new one
      newBindingList.remove(binding);

      // If binding has no more members, binding will not be added
      if (!newBinding.getMembersList().isEmpty()) {
        newBindingList.add(newBinding);
      }

      // Update the policy to remove the member.
      policyBuilder.clearBindings()
              .addAllBindings(newBindingList);
    }

    Policy updatedPolicy = policyBuilder.build();

    System.out.println("Exising members: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

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.

from google.iam.v1 import policy_pb2
from snippets.get_policy import get_project_policy
from snippets.set_policy import set_project_policy


def modify_policy_remove_member(
    project_id: str, role: str, member: str
) -> policy_pb2.Policy:
    """
    Remove a member from certain role in project policy.

    project_id: ID or number of the Google Cloud project you want to use.
    role: role to which member need to be added.
    member: The principals requesting access.

    Possible format for member:
        * user:{emailid}
        * serviceAccount:{emailid}
        * group:{emailid}
        * deleted:user:{emailid}?uid={uniqueid}
        * deleted:serviceAccount:{emailid}?uid={uniqueid}
        * deleted:group:{emailid}?uid={uniqueid}
        * domain:{domain}
    """
    policy = get_project_policy(project_id)

    for bind in policy.bindings:
        if bind.role == role:
            if member in bind.members:
                bind.members.remove(member)
            break

    return set_project_policy(project_id, policy, False)

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 izinkan yang diperbarui.

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

Menetapkan kebijakan izin

Setelah Anda mengubah kebijakan izinkan untuk memberikan dan mencabut peran, panggil setIamPolicy() untuk memperbarui kebijakan.

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 izin untuk project. Untuk mempelajari cara menetapkan kebijakan izin folder atau organisasi, tinjau dokumentasi library klien Resource Manager untuk bahasa pemrograman Anda.

import com.google.cloud.resourcemanager.v3.ProjectsClient;
import com.google.iam.admin.v1.ProjectName;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class SetProjectPolicy {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your project ID.
    String projectId = "your-project-id";
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();

    setProjectPolicy(policy, projectId);
  }

  // Sets a project's policy.
  public static Policy setProjectPolicy(Policy policy, String projectId)
          throws IOException {

    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (ProjectsClient projectsClient = ProjectsClient.create()) {
      List<String> paths = Arrays.asList("bindings", "etag");
      SetIamPolicyRequest request = SetIamPolicyRequest.newBuilder()
              .setResource(ProjectName.of(projectId).toString())
              .setPolicy(policy)
              // A FieldMask specifying which fields of the policy to modify. Only
              // the fields in the mask will be modified. If no mask is provided, the
              // following default mask is used:
              // `paths: "bindings, etag"`
              .setUpdateMask(FieldMask.newBuilder().addAllPaths(paths).build())
              .build();

      return projectsClient.setIamPolicy(request);
    }
  }
}

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 izin untuk project. Untuk mempelajari cara menetapkan kebijakan izin folder atau organisasi, tinjau dokumentasi library klien Resource Manager untuk bahasa pemrograman Anda.

from google.cloud import resourcemanager_v3
from google.iam.v1 import iam_policy_pb2, policy_pb2


def set_project_policy(
    project_id: str, policy: policy_pb2.Policy, merge: bool = True
) -> policy_pb2.Policy:
    """
    Set policy for project. Pay attention that previous state will be completely rewritten.
    If you want to update only part of the policy follow the approach read->modify->write.
    For more details about policies check out https://cloud.google.com/iam/docs/policies

    project_id: ID or number of the Google Cloud project you want to use.
    policy: Policy which has to be set.
    merge: The strategy to be used forming the request. CopyFrom is clearing both mutable and immutable fields,
    when MergeFrom is replacing only immutable fields and extending mutable.
    https://googleapis.dev/python/protobuf/latest/google/protobuf/message.html#google.protobuf.message.Message.CopyFrom
    """
    client = resourcemanager_v3.ProjectsClient()

    request = iam_policy_pb2.GetIamPolicyRequest()
    request.resource = f"projects/{project_id}"
    current_policy = client.get_iam_policy(request)

    # Etag should as fresh as possible to lower chance of collisions
    policy.ClearField("etag")
    if merge:
        current_policy.MergeFrom(policy)
    else:
        current_policy.CopyFrom(policy)

    request = iam_policy_pb2.SetIamPolicyRequest()
    request.resource = f"projects/{project_id}"

    # request.etag field also will be merged which means you are secured from collision,
    # but it means that request may fail and you need to leverage exponential retries approach
    # to be sure policy has been updated.
    request.policy.CopyFrom(current_policy)

    policy = client.set_iam_policy(request)
    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 dari 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

Coba 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