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

  • 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

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    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. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

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

    C++

    Untuk menggunakan contoh C++ 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. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

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

    Go

    Untuk menggunakan contoh Go 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. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    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. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    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. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    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

Untuk mendapatkan izin yang diperlukan untuk mencantumkan peran yang dapat diberikan, minta 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 ke project, folder, dan organisasi.

Peran ini berisi izin getIamPolicy untuk semua jenis resource. Untuk mencantumkan peran yang dapat diberikan, Anda memerlukan izin getIamPolicy untuk resource yang ingin Anda cantumkan peran yang dapat diberikan—misalnya, untuk mencantumkan peran yang dapat diberikan untuk 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 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