איך בודקים אילו תפקידים אפשר לתת במשאבים

לפני שאתם נותנים למשתמשים תפקידים ב-IAM (הפלטפורמה לניהול זהויות והרשאות גישה), יכול להיות שתרצו לדעת אילו תפקידים אפשר לתת בכל משאב.

לפני שמתחילים

  • Enable the IAM API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  • מגדירים אימות.

    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#‎

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של .NET שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .

    C++‎

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של C++ שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .

    Go

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Go שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .

    Java

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Java שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .

    Python

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .

    REST

    כדי להשתמש בדוגמאות של API בארכיטקטורת REST שבדף הזה בסביבת פיתוח מקומית, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות בשביל לראות את רשימת התפקידים שאפשר להעניק, אתם צריכים לבקש מהאדמין לתת לכם את התפקיד Security Reviewer ‏ (roles/iam.securityReviewer) ב-IAM למשאב שבשבילו אתם רוצים לראות את רשימת התפקידים. להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקיד הזה מכיל את ההרשאות getIamPolicy לכל סוגי המשאבים. כדי לראות את רשימת התפקידים שאפשר לתת, צריך את ההרשאה getIamPolicy למשאב שבשבילו רוצים לראות את הרשימה. לדוגמה, בשביל פרויקטים, צריך את ההרשאה resourcemanager.projects.getIamPolicy.

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

למה הכוונה בתפקידים שאפשר לתת

אפשר לתת תפקיד במשאב או ברמה שמעל למשאב אם הוא מכיל הרשאות לסוג המשאב הזה. לדוגמה, התפקיד storage.admin נותן הרשאות לממשקי ה-API ‏storage.buckets.get ו-storage.objects.get, ולכן אפשר לתת אותו במשאבים מסוג קטגוריות ב-Storage ואובייקטים ב-Storage.

אפשר גם לתת תפקידים ברמה בהיררכיה שמעל סוגי המשאבים שבשבילם ההרשאות מוגדרות. זאת אומרת, אם נותנים את התפקיד במשאב מסוים בהיררכיית המשאבים של Google Cloud , הוא יינתן גם בכל המשאבים שנמצאים מתחת לאותו משאב בהיררכיה. לדוגמה, את התפקיד storage.admin אפשר לתת גם ברמת הפרויקט או הארגון, בנוסף לקטגוריות ב-Storage.

ההרשאות שהתפקיד נותן ניתנות רק למשאבים באותה הרמה או ברמות שמתחתיה בהיררכיה, ולא למשאבים שנמצאים ברמה מעל או מקבילה בהיררכיה. בנוסף, כשנותנים תפקיד במשאב, רק ההרשאות הרלוונטיות לאותו משאב ניתנות, ללא קשר לשם התפקיד, לתיאור שלו או להרשאות אחרות שהוא מכיל. לדוגמה, כשנותנים למשתמש את התפקיד resourcemanager.organizationAdmin (כלומר, את ההרשאה resourcemanager.projects.list) ברמת הפרויקט, הוא מקבל הרשאות רק לפרויקט הספציפי הזה. מי שיש לו את התפקיד הזה לא יכול לראות רשימות או לנהל אותן בכל הפרויקטים בארגון. באותו האופן, התפקיד compute.admin במכונה ספציפית של Compute Engine נותן הרשאות רק למכונה הזו, ולא לאחרות בפרויקט.

הצגת רשימת תפקידים שאפשר להעניק

אפשר להציג את רשימת התפקידים שאפשר להקצות באמצעות מסוף Google Cloud , Google Cloud CLI, ה-API של IAM או ספריות הלקוח של IAM.

במסוף Google Cloud תמיד מופיעה רשימה של כל התפקידים שאפשר להקצות למשאב שמוצג. ב-Google Cloud CLI, ב-IAM API ובספריות הלקוח מוצגים רק תפקידים שאפשר להקצות לממשקי API מופעלים.

המסוף

כדי לראות את התפקידים שאפשר להקצות בפרויקט, בתיקייה או בארגון:

  1. נכנסים לדף IAM במסוף Google Cloud .

    לדף IAM

  2. לוחצים על בחירת פרויקט בחלק העליון של הדף.

  3. בוחרים את הפרויקט, התיקייה או הארגון שבהם רוצים לראות את התפקידים שאפשר להעניק.

  4. לוחצים על Grant access.

  5. לוחצים על בחירת תפקיד. בתפריט הזה מופיעים כל התפקידים, כולל תפקידים בהתאמה אישית, שאפשר לתת במשאב הזה.

כדי לראות אילו תפקידים אפשר לתת לסוגי משאבים אחרים:

  1. במסוף Google Cloud , נכנסים לדף שבו מוצג המשאב שרוצים לראות את התפקידים שאפשר להקצות לו.

    לדוגמה, כדי לנהל את הגישה למכונה של Compute Engine, נכנסים לדף VM instances.

    כניסה לדף VM instances

  2. מסמנים את התיבה לצד המשאב שרוצים להציג את התפקידים שאפשר להעניק לו.

  3. מוודאים שחלונית המידע מוצגת. אם היא לא מוצגת, לוחצים על Show info panel.

  4. לוחצים על Add principal.

  5. לוחצים על בחירת תפקיד. בתפריט הזה מופיעים כל התפקידים, כולל תפקידים בהתאמה אישית, שאפשר לתת במשאב הזה.

gcloud

אפשר להשתמש בפקודה gcloud iam list-grantable-roles כדי להחזיר רשימה של כל התפקידים שאפשר לתת במשאב מסוים.

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

בחלק מהמשאבים יכול להיות שמספר התפקידים יהיה גדול. כדי להגביל את מספר התוצאות, אפשר להשתמש בביטוי סינון.

הפלט אמור להיראות ככה:

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++

במאמר ספריות הלקוח של IAM מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-IAM. למידע נוסף, קראו את מאמרי העזרה של ‎IAM C++ API‎.

כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.

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#

במאמר ספריות הלקוח של IAM מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-IAM. למידע נוסף, קראו את מאמרי העזרה של ‎IAM C# API‎.

כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.


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

במאמר ספריות הלקוח של IAM מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-IAM. למידע נוסף, קראו את מאמרי העזרה של ‎IAM Go API‎.

כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.

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

במאמר ספריות הלקוח של IAM מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-IAM. למידע נוסף, קראו את מאמרי העזרה של ‎IAM Java API‎.

כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.

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

במאמר ספריות הלקוח של IAM מוסבר איך להתקין את ספריית הלקוח ולהשתמש בה ב-IAM. למידע נוסף, קראו את מאמרי העזרה של ‎IAM Python API‎.

כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.

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

ה-method‏ roles.queryGrantableRoles מחזיר רשימה של כל התפקידים שאפשר לתת במשאב.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

שיטת ה-HTTP וכתובת ה-URL:

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

תוכן בקשת JSON:

{
  "fullResourceName": "FULL_RESOURCE_NAME"
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "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."
    }
  ]
}

בדוגמאות שלמעלה, full resource name הוא URI ללא scheme שכולל שם של שירות API תואם-DNS ונתיב של משאב.

לדוגמה, כדי לקבל את כל התפקידים שאפשר לתת בפרויקט, משתמשים בישויות הבאות:

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

למשאבים ברמה נמוכה יותר בהיררכיה יש שם מפורט יותר, שמוגדר במלואו. לדוגמה, תוכלו להשתמש בפקודה הבאה כדי לקבל את כל התפקידים שאפשר לתת במכונה של Compute Engine:

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

המאמרים הבאים