Melihat peran yang dapat diberikan pada resource

Sebelum memberikan peran Identity and Access Management (IAM) kepada pengguna untuk suatu resource, Anda mungkin ingin mengetahui peran apa saja yang tersedia untuk diberikan pada resource tertentu.

Sebelum memulai

  • Enable the IAM 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 C++ 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.

    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.

    Go

    Untuk menggunakan contoh Go 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

Untuk mendapatkan izin yang diperlukan untuk mencantumkan peran yang dapat diberikan, mintalah administrator untuk memberi Anda peran IAM Security Reviewer (roles/iam.securityReviewer) pada resource yang ingin Anda cantumkan peran yang dapat diberikan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Peran bawaan ini berisi izin getIamPolicy untuk semua jenis resource. Untuk mencantumkan peran yang dapat diberikan, Anda memerlukan izin getIamPolicy untuk resource tempat Anda ingin mencantumkan peran yang dapat diberikan—misalnya, untuk mencantumkan peran yang dapat diberikan untuk sebuah project, Anda memerlukan izin resourcemanager.projects.getIamPolicy.

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

Memahami peran yang dapat diberikan

Suatu Peran dapat diberikan pada atau di atas resource jika berisi izin apa pun untuk jenis resource tersebut. Misalnya, peran storage.admin memberikan izin ke API storage.buckets.get dan storage.objects.get, sehingga dapat diberikan pada jenis resource Buket Penyimpanan dan Objek Penyimpanan.

Peran juga dapat diberikan "di atas" jenis resource yang izinnya ditentukan. Dengan kata lain, peran untuk resource level lebih rendah dapat diberikan pada resource yang lebih tinggi dalam hierarki resource Google Cloud. Misalnya, peran storage.admin juga dapat diberikan pada level project atau organisasi, selain Bucket Penyimpanan.

Izin yang diberikan oleh peran hanya memengaruhi resource pada level yang ditentukan atau di bawahnya; tidak memengaruhi resource tingkat yang lebih tinggi atau sejajar. Selain itu, jika suatu peran diberikan pada suatu resource, hanya izin yang berlaku untuk resource tersebut yang akan diberikan, terlepas dari nama, deskripsi, atau izin peran lainnya yang dimilikinya. Misalnya, menetapkan peran resourcemanager.organizationAdmin (yang memberikan izin resourcemanager.projects.list) kepada pengguna di level project hanya akan memberinya izin untuk project tertentu tersebut. Tindakan ini tidak akan mengizinkan mereka mencantumkan atau mengelola semua project di organisasi. Demikian pula, menetapkan peran compute.admin pada instance Compute Engine tertentu hanya akan memberikan izin untuk instance tersebut, bukan instance lain dalam project tersebut.

Mencantumkan peran yang dapat diberikan

Anda dapat mencantumkan peran yang dapat diberikan menggunakan konsol Google Cloud, Google Cloud CLI, IAM API, atau library klien IAM.

Konsol Google Cloud selalu mencantumkan semua peran yang dapat diberikan untuk resource yang Anda lihat. Google Cloud CLI, IAM API, dan library klien hanya mencantumkan peran yang dapat diberikan untuk API yang diaktifkan.

Konsol

Untuk melihat peran yang dapat diberikan untuk project, folder, atau organisasi, lakukan hal berikut:

  1. Di konsol Google Cloud, buka halaman IAM.

    Buka halaman IAM

  2. Klik Pilih project di bagian atas halaman.

  3. Pilih project, folder, atau organisasi tempat Anda ingin melihat peran yang dapat diberikan.

  4. Klik Grant access.

  5. Klik Pilih peran. Menu ini menampilkan semua peran, termasuk peran khusus, yang dapat Anda berikan pada resource ini.

Untuk melihat peran yang dapat diberikan untuk jenis resource lainnya, lakukan hal berikut:

  1. Di konsol Google Cloud, buka halaman yang mencantumkan resource tempat Anda ingin melihat peran yang dapat diberikan.

    Misalnya, untuk mengelola akses ke instance Compute Engine, buka halaman Instance VM.

    Buka instance VM

  2. Pilih kotak centang di samping resource yang ingin Anda lihat peran yang dapat diberikan.

  3. Pastikan panel info terlihat. Jika tidak terlihat, klik Tampilkan panel info.

  4. Klik Tambahkan akun utama.

  5. Klik Pilih peran. Menu ini menampilkan semua peran, termasuk peran khusus, yang dapat Anda berikan pada resource ini.

gcloud

Gunakan perintah gcloud iam list-grantable-roles untuk menampilkan daftar semua peran yang dapat diterapkan ke resource tertentu.

gcloud iam list-grantable-roles full-resource-name

Bergantung pada resource yang diinginkan, sejumlah besar peran dapat ditampilkan. Untuk membatasi hasil, Anda dapat menentukan ekspresi filter.

Outputnya akan terlihat seperti ini:

description: Full control of all Compute Engine resources.
name: roles/compute.admin
title: Compute Admin
---
description: Full control of Compute Engine instance resources.
name: roles/compute.instanceAdmin
title: Compute Instance Admin

# Additional results here...

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.

namespace iam = ::google::cloud::iam_admin_v1;
[](std::string const& resource) {
  iam::IAMClient client(iam::MakeIAMConnection());
  int count = 0;
  for (auto& role : client.QueryGrantableRoles(resource)) {
    if (!role) throw std::move(role).status();
    std::cout << "Role successfully retrieved: " << role->name() << "\n";
    ++count;
  }
  if (count == 0) {
    std::cout << "No grantable roles found in resource: " << resource << "\n";
  }
}

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.


using System;
using System.Collections.Generic;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Iam.v1;
using Google.Apis.Iam.v1.Data;

public partial class CustomRoles
{
    public static IList<Role> ViewGrantableRoles(string fullResourceName)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var request = new QueryGrantableRolesRequest
        {
            FullResourceName = fullResourceName
        };
        var response = service.Roles.QueryGrantableRoles(request).Execute();
        foreach (var role in response.Roles)
        {
            Console.WriteLine("Title: " + role.Title);
            Console.WriteLine("Name: " + role.Name);
            Console.WriteLine("Description: " + role.Description);
            Console.WriteLine();
        }
        return response.Roles;
    }
}

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.

import (
	"context"
	"fmt"
	"io"

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

// viewGrantableRoles lists roles grantable on a resource.
func viewGrantableRoles(w io.Writer, fullResourceName string) ([]*iam.Role, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %w", err)
	}

	request := &iam.QueryGrantableRolesRequest{
		FullResourceName: fullResourceName,
	}
	response, err := service.Roles.QueryGrantableRoles(request).Do()
	if err != nil {
		return nil, fmt.Errorf("Roles.QueryGrantableRoles: %w", err)
	}
	for _, role := range response.Roles {
		fmt.Fprintf(w, "Found grantable role: %v\n", role.Name)
	}
	return response.Roles, err
}

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.

QueryGrantableRolesRequest request = new QueryGrantableRolesRequest();
request.setFullResourceName(fullResourceName);

QueryGrantableRolesResponse response = service.roles().queryGrantableRoles(request).execute();

for (Role role : response.getRoles()) {
  System.out.println("Title: " + role.getTitle());
  System.out.println("Name: " + role.getName());
  System.out.println("Description: " + role.getDescription());
  System.out.println();
}

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.

def view_grantable_roles(full_resource_name: str) -> None:
    roles = (
        service.roles()
        .queryGrantableRoles(body={"fullResourceName": full_resource_name})
        .execute()
    )

    for role in roles["roles"]:
        if "title" in role:
            print("Title: " + role["title"])
        print("Name: " + role["name"])
        if "description" in role:
            print("Description: " + role["description"])
        print(" ")

REST

Metode roles.queryGrantableRoles menampilkan daftar semua peran yang dapat diberikan pada resource.

Sebelum menggunakan salah satu dari data permintaan, lakukan penggantian berikut:

  • FULL_RESOURCE_NAME: URI yang terdiri dari nama layanan dan jalur ke resource. Misalnya, lihat Nama resource lengkap.

Metode HTTP dan URL:

POST https://iam.googleapis.com/v1/roles:queryGrantableRoles

Meminta isi JSON:

{
  "fullResourceName": "FULL_RESOURCE_NAME"
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "roles": [
    {
      "name": "roles/compute.admin",
      "title": "Compute Admin",
      "description": "Full control of all Compute Engine resources."
    },
    {
      "name": "roles/compute.instanceAdmin",
      "title": "Compute Instance Admin (beta)",
      "description": "Full control of Compute Engine instance resources."
    }
  ]
}

Pada contoh di atas, nama resource lengkap adalah URI tanpa skema yang terdiri dari nama layanan API yang kompatibel dengan DNS dan jalur resource.

Misalnya, untuk menampilkan semua peran yang dapat diberikan pada suatu project, gunakan:

//cloudresourcemanager.googleapis.com/projects/project-id

Resource dengan level lebih rendah memiliki nama yang sepenuhnya memenuhi syarat dan lebih mendetail. Misalnya, gunakan perintah berikut untuk menampilkan semua peran yang dapat diberikan pada instance Compute Engine:

//compute.googleapis.com/projects/project-id/zones/zone-name/instances/instance-id

Langkah selanjutnya