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

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

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

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

כדי לקבל את ההרשאות הנדרשות ליצירה ולניהול של תפקידים בהתאמה אישית, עליכם לבקש ממנהל המערכת להקצות לכם את תפקידי ה-IAM הבאים:

  • כדי לנהל את התפקידים בפרויקט: Role Administrator (roles/iam.roleAdmin) בפרויקט שעבורו רוצים לנהל את התפקידים.
  • כדי לנהל את התפקידים בארגון: Organization Role Administrator (roles/iam.organizationRoleAdmin) בארגון שעבורו רוצים לנהל את התפקידים.

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

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

הצגת הרשאות זמינות לפרויקטים, לתיקיות ולארגונים

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

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

יכול להיות שחלק מההרשאות לא יהיו גלויות לכם, או שלא תוכלו להשתמש בהן בתפקיד מותאם אישית, גם אם הן נתמכות בתפקידים מותאמים אישית. לדוגמה, יכול להיות שהרשאה לא זמינה לשימוש בתפקידים מותאמים אישית אם לא הפעלתם את ה-API עבור השירות.

למידע נוסף על ההרשאות שאפשר להוסיף לתפקידים בהתאמה אישית, ראו הרשאות נתמכות.

gcloud

  1. במסוף Google Cloud, מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud מתחיל סשן של Cloud Shell ומופיעה הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. אפשר להשתמש בפקודה gcloud iam list-testable-permissions כדי לקבל רשימה של הרשאות זמינות לתפקידים בהתאמה אישית בפרויקט או בארגון מסוימים. התשובה מפרטת את ההרשאות שבהן ניתן להשתמש בתפקידים מותאמים אישית בפרויקט או בארגון הזה.

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

    gcloud iam list-testable-permissions FULL_RESOURCE_NAME \
        --filter="customRolesSupportLevel!=NOT_SUPPORTED"

    מחליפים את FULL_RESOURCE_NAME באחד מהערכים הבאים:

    • פרויקט: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID (לדוגמה, //cloudresourcemanager.googleapis.com/projects/my-project)

    • ארגון: //cloudresourcemanager.googleapis.com/organizations/NUMERIC_ID (לדוגמה, //cloudresourcemanager.googleapis.com/organizations/123456789012)

    התוצאות מציינות עבור כל הרשאה אם היא נתמכת בתפקידים מותאמים אישית. הרשאות שאין להן שדה customRolesSupportLevel נתמכות באופן מלא.

    הפקודה list-testable-permissions עשויה להחזיר מאות תוצאות. הדוגמה החלקית הזו מציגה את הפורמט של כל תוצאה:

    ---
    name: appengine.applications.create
    stage: GA
    ---
    customRolesSupportLevel: TESTING
    name: appengine.applications.disable
    stage: GA
    ---
    name: appengine.applications.get
    stage: GA
    ---
    name: appengine.applications.update
    stage: GA
    ---
    name: appengine.instances.delete
    stage: GA
    ---
    name: appengine.instances.get
    stage: GA
    ---
    

REST

השיטה permissions.queryTestablePermissions מפרטת את ההרשאות הזמינות בארגון או בפרויקט.

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

  • FULL_RESOURCE_NAME: URI שמכיל את שם השירות ואת הנתיב למשאב. ראו, לדוגמה שמות משאבים מלאים.
  • PAGE_SIZE: אופציונלי. מספר ההרשאות שיש לכלול בתשובה. ערך ברירת המחדל הוא 100 והערך המקסימלי הוא 1,000. אם מספר ההרשאות גדול מהגודל של הדף, התשובה מכילה אסימון עימוד שאפשר להשתמש בו כדי לאחזר את דף התוצאות הבא.
  • NEXT_PAGE_TOKEN: אופציונלי. אסימון העימוד שהוחזר בתשובה קודמת משיטה זו. אם צוינה בקשה, רשימת ההרשאות הניתנות לבדיקה תתחיל במקום שבו הסתיימה התשובה הקודמת.

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

POST https://iam.googleapis.com/v1/permissions:queryTestablePermissions

תוכן בקשת JSON:

{
  "fullResourceName": "FULL_RESOURCE_NAME"
  "pageSize": PAGE_SIZE,
  "pageToken": "NEXT_PAGE_TOKEN"
}

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

התשובה מכילה את רשימת ההרשאות.

{
  "permissions": [
    {
      "name": "iam.serviceAccountKeys.create",
      "stage": "GA"
    },
    {
      "name": "iam.serviceAccountKeys.delete",
      "stage": "GA"
    },
    {
      "name": "iam.serviceAccountKeys.get",
      "stage": "GA"
    }
  ],
  "nextPageToken": "CgoHBajEfjUDQyABEPaIv5vIiMDTVhgDIhtpYW0uc2VydmljZUFjY291bnRLZXlzLmxpc3Q"
}

C++

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

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

namespace iam = ::google::cloud::iam_admin_v1;
[](std::string const& resource) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::QueryTestablePermissionsRequest request;
  request.set_full_resource_name(resource);
  int count = 0;
  for (auto& permission : client.QueryTestablePermissions(request)) {
    if (!permission) throw std::move(permission).status();
    std::cout << "Permission successfully retrieved: " << permission->name()
              << "\n";
    ++count;
  }
  if (count == 0) {
    std::cout << "No testable permissions found in resource: " << resource
              << "\n";
  }
}

C#

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

כדי לבצע אימות ב-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<Permission> QueryTestablePermissions(
        string fullResourceName)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var request = new QueryTestablePermissionsRequest
        {
            FullResourceName = fullResourceName
        };
        var response = service.Permissions.QueryTestablePermissions(request)
            .Execute();
        foreach (var p in response.Permissions)
        {
            Console.WriteLine(p.Name);
        }
        return response.Permissions;
    }
}

Go

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

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

import (
	"context"
	"fmt"
	"io"

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

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

	request := &iam.QueryTestablePermissionsRequest{
		FullResourceName: fullResourceName,
	}
	response, err := service.Permissions.QueryTestablePermissions(request).Do()
	if err != nil {
		return nil, fmt.Errorf("Permissions.QueryTestablePermissions: %w", err)
	}
	for _, p := range response.Permissions {
		fmt.Fprintf(w, "Found permissions: %v", p.Name)
	}
	return response.Permissions, nil
}

Java

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

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


import com.google.cloud.iam.admin.v1.IAMClient;
import com.google.cloud.iam.admin.v1.IAMClient.QueryTestablePermissionsPagedResponse;
import com.google.iam.admin.v1.QueryTestablePermissionsRequest;
import java.io.IOException;

/** View available permissions in a project. */
public class QueryTestablePermissions {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variable before running the sample.
    // Full resource names can take one of the following forms:
    // cloudresourcemanager.googleapis.com/projects/PROJECT_ID
    // cloudresourcemanager.googleapis.com/organizations/NUMERIC_ID
    String fullResourceName = "your-full-resource-name";

    queryTestablePermissions(fullResourceName);
  }

  public static void queryTestablePermissions(String fullResourceName) throws IOException {
    QueryTestablePermissionsRequest queryTestablePermissionsRequest =
        QueryTestablePermissionsRequest.newBuilder().setFullResourceName(fullResourceName).build();

    try (IAMClient iamClient = IAMClient.create()) {
      QueryTestablePermissionsPagedResponse queryTestablePermissionsPagedResponse =
          iamClient.queryTestablePermissions(queryTestablePermissionsRequest);
      queryTestablePermissionsPagedResponse
          .iterateAll()
          .forEach(permission -> System.out.println(permission.getName()));
    }
  }
}

Python

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

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

def query_testable_permissions(resource: str) -> None:
    """Lists valid permissions for a resource."""

    # pylint: disable=no-member
    permissions = (
        service.permissions()
        .queryTestablePermissions(body={"fullResourceName": resource})
        .execute()["permissions"]
    )
    for p in permissions:
        print(p["name"])

הצגת המטא-נתונים של התפקיד

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

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

מסוף

  1. נכנסים לדף תפקידים במסוף Google Cloud.

    כניסה לדף 'תפקידים'

  2. בוחרים את הארגון או הפרויקט שלכם מהרשימה הנפתחת בחלק העליון של הדף.

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

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

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

gcloud

  1. במסוף Google Cloud, מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud מתחיל סשן של Cloud Shell ומופיעה הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. אפשר להשתמש בפקודה gcloud iam roles describe כדי לראות את המטא-נתונים של תפקידים מוגדרים מראש ותפקידים בהתאמה אישית.

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

    gcloud iam roles describe ROLE_ID

    ROLE_ID הוא המזהה של התפקיד. התפקידים המוגדרים מראש כוללים את הקידומת role במזהים שלהם, לדוגמה, roles/iam.roleViewer.

    הדוגמה הבאה ממחישה את הפלט של הפקודה describe כשהיא מופעלת על תפקיד מוגדר מראש roles/iam.roleViewer:

    gcloud iam roles describe roles/iam.roleViewer

    description: Read access to all custom roles in the project.
    etag: AA==
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    - resourcemanager.projects.get
    - resourcemanager.projects.getIamPolicy
    name: roles/iam.roleViewer
    stage: GA
    title: Role Viewer
    

    כדי להציג את המטא-נתונים של תפקיד מותאם אישית, מבצעים אחת מהפקודות הבאות:

    • כדי להציג את המטא-נתונים של תפקיד מותאם אישית שנוצר ברמת הארגון, צריך להריץ את הפקודה הבאה:

      gcloud iam roles describe --organization=ORGANIZATION_ID ROLE_ID
    • כדי להציג את המטא-נתונים של תפקיד בהתאמה אישית שנוצר ברמת הפרויקט, צריך להריץ את הפקודה הבאה:

      gcloud iam roles describe --project=PROJECT_ID ROLE_ID

    כל ערך placeholder מתואר בהמשך:

    • ORGANIZATION_ID הוא המזהה המספרי של הארגון, כמו 123456789012.

    • PROJECT_ID הוא שם הפרויקט, למשל my-project.

    • ROLE_ID הוא מזהה התפקיד, לא כולל תחיליות כמו projects/, organizations/ או roles/. לדוגמה, myCompanyAdmin.

    למידע נוסף, עיינו בדפי העזרה של gcloud iam roles describe.

REST

השיטה roles.get מקבלת את ההגדרה של תפקיד.

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

  • ROLE_NAME: שם התפקיד המלא, כולל הקידומות organizations/, projects/ או roles/. לדוגמה, organizations/123456789012/roles/myCompanyAdmin.

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

GET https://iam.googleapis.com/v1/ROLE_NAME

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

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

{
  "name": "projects/my-project/roles/customRole",
  "title": "My Custom Role",
  "description": "My custom role description.",
  "includedPermissions": [
    "storage.buckets.get",
    "storage.buckets.list"
  ],
  "etag": "BwWiPg2fmDE="
}

C++

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

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

namespace iam = ::google::cloud::iam_admin_v1;
[](std::string const& name) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::GetRoleRequest request;
  request.set_name(name);
  auto response = client.GetRole(request);
  if (!response) throw std::move(response).status();
  std::cout << "Role successfully retrieved: " << response->DebugString()
            << "\n";
}

C#

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

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


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

public partial class CustomRoles
{
    public static Role GetRole(string name)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var role = service.Roles.Get(name).Execute();
        Console.WriteLine(role.Name);
        Console.WriteLine(String.Join(", ", role.IncludedPermissions));
        return role;
    }
}

Go

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

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

import (
	"context"
	"fmt"
	"io"

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

// getRole gets role metadata.
func getRole(w io.Writer, name string) (*iam.Role, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %w", err)
	}

	role, err := service.Roles.Get(name).Do()
	if err != nil {
		return nil, fmt.Errorf("Roles.Get: %w", err)
	}
	fmt.Fprintf(w, "Got role: %v\n", role.Name)
	for _, permission := range role.IncludedPermissions {
		fmt.Fprintf(w, "Got permission: %v\n", permission)
	}
	return role, nil
}

Java

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

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


import com.google.cloud.iam.admin.v1.IAMClient;
import com.google.iam.admin.v1.GetRoleRequest;
import com.google.iam.admin.v1.Role;
import java.io.IOException;

/** Get role metadata. Specifically, printing out role permissions. */
public class GetRole {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variable before running the sample.
    String roleId = "a unique identifier (e.g. testViewer)";

    getRole(roleId);
  }

  public static void getRole(String roleId) throws IOException {
    GetRoleRequest getRoleRequest = GetRoleRequest.newBuilder().setName(roleId).build();

    // Initialize client for sending requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (IAMClient iamClient = IAMClient.create()) {
      Role role = iamClient.getRole(getRoleRequest);
      role.getIncludedPermissionsList().forEach(permission -> System.out.println(permission));
    }
  }
}

Python

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

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

def get_role(name: str) -> None:
    """Gets a role."""

    # pylint: disable=no-member
    role = service.roles().get(name=name).execute()
    print(role["name"])
    for permission in role["includedPermissions"]:
        print(permission)

יצירת תפקיד בהתאמה אישית

אפשר ליצור תפקיד בהתאמה אישית ברמת הפרויקט או הארגון.

תפקיד בהתאמה אישית ברמת הארגון יכול לכלול כל אחת מההרשאות של IAM שנתמכות בתפקידים מותאמים אישית. לתפקיד בהתאמה אישית ברמת הפרויקט יכולה להיות כל הרשאה נתמכת למעט הרשאות שאפשר להשתמש בהן רק ברמת הארגון או התיקייה, כמו resourcemanager.organizations.get. אם תנסו להוסיף את ההרשאות האלה לתפקיד בהתאמה אישית ברמת הפרויקט, תופיע הודעת שגיאה:

מסוף

מוצגת הודעת האזהרה הבאה: "לא רלוונטי לתפקידים מותאמים אישית ברמת הפרויקט". הבחירה של ההרשאה תבוטל באופן אוטומטי מרשימת ההרשאות הכלולות, ותוכלו להמשיך ביצירת התפקיד.

gcloud

מוצגת הודעת השגיאה הבאה: INVALID_ARGUMENT: Permission PERMISSION is not valid. התפקיד המותאם אישית לא ייווצר עד שתסירו את ההרשאה מהגדרת התפקיד ותנסו לבצע את הפעולה שוב.

API ל-REST

מתקבלת הודעת השגיאה הבאה: Permission PERMISSION is not valid, לצד קוד השגיאה HTTP 400 וסטטוס של INVALID_ARGUMENT. התפקיד המותאם אישית לא ייווצר עד שתסירו את ההרשאה מהגדרת התפקיד ותנסו לבצע את הפעולה שוב.

כל תפקיד בהתאמה אישית יכול להכיל עד 3,000 הרשאות. בנוסף, הערך המקסימלי הכולל של השם, התיאור ושמות ההרשאות של תפקיד בהתאמה אישית הוא 64KB. אם אתם צריכים ליצור תפקיד בהתאמה אישית גדול יותר, אתם יכולים לפצל את ההרשאות בין מספר תפקידים בהתאמה אישית. כדאי לבחור כותרות של תפקידים שמציגים את הקשרים בין התפקידים המותאמים אישית, כמו Custom Admin (1 of 2) ו-Custom Admin (2 of 2).

לכל תפקיד בהתאמה אישית יכול להיות שלב השקה. רוב שלבי ההשקה הם מידע שיעזור לכם לבדוק אם כל תפקיד מוכן לשימוש באופן נרחב. בנוסף, שלב ההשקה של DISABLED מאפשר להשבית תפקיד בהתאמה אישית. מידע נוסף על שלבי ההשקה זמין במאמר בדיקה ופריסה.

מסוף

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

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

  1. נכנסים לדף תפקידים במסוף Google Cloud.

    כניסה לדף 'תפקידים'

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

  3. לוחצים על יצירת תפקיד.

  4. הזינו שם, כותרת, תיאור ושלב השקת התפקיד לתפקיד. אי אפשר לשנות את שם התפקיד אחרי יצירת התפקיד.

  5. לוחצים על הוספת הרשאות.

  6. בוחרים את ההרשאות שרוצים לכלול בתפקיד, ולוחצים על הוספת הרשאות. משתמשים ברשימות הנפתחות All Services ו-All Types כדי לסנן ולבחור הרשאות לפי שירותים וסוגים.

יצירת תפקיד בהתאמה אישית על סמך תפקיד מוגדר מראש קיים:

  1. נכנסים לדף תפקידים במסוף Google Cloud.

    כניסה לדף 'תפקידים'

  2. בוחרים את הארגון או הפרויקט שבהם רוצים ליצור תפקיד.
  3. בוחרים את התפקידים שעליהם רוצים לבסס את התפקיד החדש בהתאמה אישית.
  4. לוחצים על יצירת תפקיד מבחירה.
  5. הזינו שם, כותרת, תיאור ושלב השקת התפקיד לתפקיד. אי אפשר לשנות את שם התפקיד אחרי יצירת התפקיד.
  6. מבטלים את הסימון של ההרשאות שרוצים להחריג מהתפקיד.
  7. לוחצים על הוספת הרשאות כדי לכלול הרשאות.
  8. לוחצים על Create.

gcloud

  1. במסוף Google Cloud, מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud מתחיל סשן של Cloud Shell ומופיעה הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. משתמשים בפקודה gcloud iam roles create כדי ליצור תפקידים חדשים בהתאמה אישית. יש שתי דרכים להשתמש בפקודה הזו:

    • על ידי שליחת קובץ YAML שמכיל את הגדרת התפקיד

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

    כשיוצרים תפקיד בהתאמה אישית, צריך לציין אם הוא חל ברמת הארגון או ברמת הפרויקט באמצעות הדגלים --organization=ORGANIZATION_ID או --project=PROJECT_ID. כל דוגמה שבהמשך יוצרת תפקיד בהתאמה אישית ברמת הפרויקט.

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

    כדי ליצור תפקיד בהתאמה אישית באמצעות קובץ YAML:

    יוצרים קובץ YAML שמכיל את ההגדרה של התפקיד המותאם אישית. הקובץ צריך להיות מובנה בפורמט הבא:

    title: ROLE_TITLE
    description: ROLE_DESCRIPTION
    stage: LAUNCH_STAGE
    includedPermissions:
    - PERMISSION_1
    - PERMISSION_2
    

    כל ערך placeholder מתואר בהמשך:

    • ROLE_TITLE הוא כותרת ידידותית לתפקיד, כמו "My Company Admin".

    • ROLE_DESCRIPTION הוא תיאור קצר של התפקיד, כמו "My custom role description".

    • LAUNCH_STAGE מציין את השלב של תפקיד במחזור החיים של ההשקה, כמו ALPHA, BETA או GA.

    • PERMISSION_1 ו-PERMISSION_2 הן הרשאות שצריך לכלול בתפקיד המותאם אישית, כמו iam.roles.get. לא ניתן להשתמש בתווים כלליים לחיפוש (*) בשמות של ההרשאות.

    שומרים את קובץ ה-YAML ומריצים אחת מהפקודות הבאות:

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

      gcloud iam roles create ROLE_ID--organization=ORGANIZATION_ID \
          --file=YAML_FILE_PATH
    • כדי ליצור תפקיד בהתאמה אישית ברמת הפרויקט, מריצים את הפקודה הבאה:

      gcloud iam roles create ROLE_ID --project=PROJECT_ID \
          --file=YAML_FILE_PATH

    כל ערך placeholder מתואר בהמשך:

    • ROLE_ID הוא השם של התפקיד, למשל myCompanyAdmin.

    • ORGANIZATION_ID הוא המזהה המספרי של הארגון, כמו 123456789012.

    • PROJECT_ID הוא שם הפרויקט, למשל my-project.

    • YAML_FILE_PATH הוא הנתיב אל המיקום של קובץ ה-YAML שמכיל את הגדרת התפקיד בהתאמה אישית.

    דוגמאות

    קובץ ה-YAML לדוגמה הבא מדגים איך ליצור הגדרת תפקיד:

    title: "My Company Admin"
    description: "My custom role description."
    stage: "ALPHA"
    includedPermissions:
    - iam.roles.get
    - iam.roles.list

    הדוגמה הבאה ממחישה איך ליצור תפקיד ברמת הארגון באמצעות קובץ YAML:

    gcloud iam roles create myCompanyAdmin --organization=123456789012 \
        --file=my-role-definition.yaml

    אם התפקיד נוצר בהצלחה, הפלט של הפקודה דומה לזה:

    Created role [myCompanyAdmin].
    description: My custom role description.
    etag: BwVkBX0sQD0=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    name: organizations/123456789012/roles/myCompanyAdmin
    stage: ALPHA
    title: My Company Admin

    הדוגמה הבאה ממחישה איך ליצור תפקיד ברמת הפרויקט באמצעות קובץ YAML:

    gcloud iam roles create myCompanyAdmin --project=my-project \
        --file=my-role-definition.yaml

    אם התפקיד נוצר בהצלחה, הפלט של הפקודה דומה לזה:

    Created role [myCompanyAdmin].
    description: My custom role description.
    etag: BwVkBX0sQD0=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    name: projects/my-project/roles/myCompanyAdmin
    stage: ALPHA
    title: My Company Admin
    

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

    מריצים אחת מהפקודות הבאות:

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

      gcloud iam roles create ROLE_ID--organization=ORGANIZATION_ID \
          --title=ROLE_TITLE --description=ROLE_DESCRIPTION \
          --permissions="PERMISSIONS_LIST" --stage=LAUNCH_STAGE
    • כדי ליצור תפקיד בהתאמה אישית ברמת הפרויקט, מריצים את הפקודה הבאה:

      gcloud iam roles create ROLE_ID --project=PROJECT_ID \
          --title=ROLE_TITLE --description=ROLE_DESCRIPTION \
          --permissions="PERMISSIONS_LIST" --stage=LAUNCH_STAGE

    כל ערך placeholder מתואר בהמשך:

    • ROLE_ID הוא השם של התפקיד, למשל myCompanyAdmin.

    • ORGANIZATION_ID הוא המזהה המספרי של הארגון, כמו 123456789012.

    • PROJECT_ID הוא שם הפרויקט, למשל my-project.

    • ROLE_TITLE הוא כותרת ידידותית לתפקיד, כמו "My Company Admin".

    • ROLE_DESCRIPTION הוא תיאור קצר של התפקיד, כמו "My custom role description.".

    • האפליקציה PERMISSIONS_LIST מכילה רשימה של הרשאות מופרדות בפסיקים שרוצים לכלול בתפקיד בהתאמה אישית. לדוגמה: iam.roles.get,iam.roles.list. לא ניתן להשתמש בתווים כלליים לחיפוש (*) בשמות של הרשאות.

    • LAUNCH_STAGE מציין את השלב של תפקיד במחזור החיים של ההשקה, כמו ALPHA, BETA או GA.

    דוגמאות

    הדוגמה הבאה ממחישה איך ליצור תפקיד ברמת הארגון באמצעות דגלים:

    gcloud iam roles create myCompanyAdmin --organization=123456789012 \
        --title="My Company Admin" --description="My custom role description." \
        --permissions="iam.roles.get,iam.roles.list" --stage=ALPHA

    אם התפקיד נוצר בהצלחה, הפלט של הפקודה דומה לזה:

    Created role [myCompanyAdmin].
    description: My custom role description.
    etag: BwVkBX0sQD0=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    name: organizations/123456789012/roles/myCompanyAdmin
    stage: ALPHA
    title: My Company Admin

    הדוגמה הבאה ממחישה איך ליצור תפקיד ברמת הפרויקט באמצעות דגלים:

    gcloud iam roles create myCompanyAdmin --project=my-project \
        --title="My Company Admin" --description="My custom role description." \
        --permissions="iam.roles.get,iam.roles.list" --stage=ALPHA

    אם התפקיד נוצר בהצלחה, הפלט של הפקודה דומה לזה:

    Created role [myCompanyAdmin].
    description: My custom role description.
    etag: BwVkBX0sQD0=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    name: projects/my-project/roles/myCompanyAdmin
    stage: ALPHA
    title: My Company Admin
    

REST

השיטה roles.create מאפשרת ליצור תפקיד בהתאמה אישית בפרויקט או בארגון.

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

  • RESOURCE_TYPE: סוג המשאב שאת התפקידים המותאמים אישית שלו רוצים לנהל. יש להשתמש בערך projects או organizations.
  • RESOURCE_ID: מזהה הפרויקט או מזהה הארגון שאתם רוצים לנהל. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project. מזהי הארגון הם מספרים, כמו 123456789012.
  • ROLE_ID: שם התפקיד, כמו myCompanyAdmin.
  • ROLE_TITLE: השם הקריא לאנשים של התפקיד. לדוגמה, My Company Admin.
  • ROLE_DESCRIPTION: תיאור של התפקיד. לדוגמה, "The company admin role allows company admins to access important resources".
  • PERMISSION_1 ו-PERMISSION_2: ההרשאות שרוצים לכלול בתפקיד. לדוגמה, storage.objects.update. לא ניתן להשתמש בתווים כלליים לחיפוש (*) בשמות של הרשאות.

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

  • LAUNCH_STAGE: שלב ההשקה הנוכחי של התפקיד. השדה הזה יכול להכיל אחד מהערכים האלה: EAP, ALPHA, BETA, GA, DEPRECATED או DISABLED.

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

POST https://iam.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/roles

תוכן בקשת JSON:

{
  "roleId": "ROLE_ID",
  "role": {
    "title": "ROLE_TITLE",
    "description": "ROLE_DESCRIPTION",
    "includedPermissions": [
      "PERMISSION_1",
      "PERMISSION_2"
    ],
    "stage": "LAUNCH_STAGE"
  }
}

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

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

{
  "name": "projects/myProject/roles/myCompanyAdmin",
  "title": "My Company Admin",
  "description": "My custom role description.",
  "includedPermissions": [
    "iam.roles.get",
    "iam.roles.list"
  ],
  "etag": "BwWox/JbaZw="
}

C++

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

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

namespace iam = ::google::cloud::iam_admin_v1;
[](std::string const& parent, std::string const& role_id,
   std::vector<std::string> const& included_permissions) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::CreateRoleRequest request;
  request.set_parent("projects/" + parent);
  request.set_role_id(role_id);
  google::iam::admin::v1::Role role;
  role.set_stage(google::iam::admin::v1::Role::GA);
  for (auto const& permission : included_permissions) {
    *role.add_included_permissions() = permission;
  }
  *request.mutable_role() = role;
  auto response = client.CreateRole(request);
  if (!response) throw std::move(response).status();
  std::cout << "Role successfully created: " << response->DebugString()
            << "\n";
}

C#

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

כדי לבצע אימות ב-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 Role CreateRole(string name, string projectId, string title,
        string description, IList<string> permissions, string stage)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var role = new Role
        {
            Title = title,
            Description = description,
            IncludedPermissions = permissions,
            Stage = stage
        };
        var request = new CreateRoleRequest
        {
            Role = role,
            RoleId = name
        };
        role = service.Projects.Roles.Create(request,
            "projects/" + projectId).Execute();
        Console.WriteLine("Created role: " + role.Name);
        return role;
    }
}

Go

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

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

import (
	"context"
	"fmt"
	"io"

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

// createRole creates a custom role.
func createRole(w io.Writer, projectID, name, title, description, stage string, permissions []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.CreateRoleRequest{
		Role: &iam.Role{
			Title:               title,
			Description:         description,
			IncludedPermissions: permissions,
			Stage:               stage,
		},
		RoleId: name,
	}
	role, err := service.Projects.Roles.Create("projects/"+projectID, request).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.Roles.Create: %w", err)
	}
	fmt.Fprintf(w, "Created role: %v", role.Name)
	return role, nil
}

Java

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

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


import com.google.cloud.iam.admin.v1.IAMClient;
import com.google.iam.admin.v1.CreateRoleRequest;
import com.google.iam.admin.v1.Role;
import com.google.iam.admin.v1.Role.RoleLaunchStage;
import java.io.IOException;
import java.util.Arrays;

/** Create role. */
public class CreateRole {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    String projectId = "your-project-id";
    String roleId = "a unique identifier (e.g. testViewer)";
    String title = "a title for your role (e.g. IAM Role Viewer)";
    String description = "a description of the role";
    Iterable<String> includedPermissions =
        Arrays.asList("roles/iam.roleViewer", "roles/logging.viewer");

    createRole(projectId, title, description, includedPermissions, roleId);
  }

  public static void createRole(
      String projectId,
      String title,
      String description,
      Iterable<String> includedPermissions,
      String roleId)
      throws IOException {
    Role.Builder roleBuilder =
        Role.newBuilder()
            .setTitle(title)
            .setDescription(description)
            .addAllIncludedPermissions(includedPermissions)
            // See launch stage enums at
            // https://cloud.google.com/iam/docs/reference/rpc/google.iam.admin.v1#rolelaunchstage
            .setStage(RoleLaunchStage.BETA);
    CreateRoleRequest createRoleRequest =
        CreateRoleRequest.newBuilder()
            .setParent("projects/" + projectId)
            .setRoleId(roleId)
            .setRole(roleBuilder)
            .build();

    // Initialize client for sending requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (IAMClient iamClient = IAMClient.create()) {
      Role result = iamClient.createRole(createRoleRequest);
      System.out.println("Created role: " + result.getName());
    }
  }
}

Python

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

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

def create_role(
    name: str, project: str, title: str, description: str, permissions: str, stage: str
) -> dict:
    """Creates a role."""

    # pylint: disable=no-member
    role = (
        service.projects()
        .roles()
        .create(
            parent="projects/" + project,
            body={
                "roleId": name,
                "role": {
                    "title": title,
                    "description": description,
                    "includedPermissions": permissions,
                    "stage": stage,
                },
            },
        )
        .execute()
    )

    print("Created role: " + role["name"])
    return role

עריכת תפקיד קיים בהתאמה אישית

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

דפוס הקריאה-שינוי-כתיבה עלול לגרום להתנגשות, אם שני תהליכים בלתי תלויים או יותר ינסו את הרצף בו-זמנית. לדוגמה, אם שני בעלים של פרויקט מנסים לבצע שינויים מתנגשים בתפקיד באותו זמן, חלק מהשינויים עלולים להיכשל. IAM פותר את הבעיה הזו באמצעות מאפיין etag בתפקידים מותאמים אישית. המאפיין הזה משמש כדי לבדוק אם התפקיד המותאם אישית השתנה מאז הבקשה האחרונה. כששולחים בקשה ל-IAM עם ערך etag, ה-IAM משווה את ערך ה-etag בבקשה לערך ה-etag הקיים שמשויך לתפקיד המותאם אישית. השינוי נכתב רק אם ערכי ה-etag תואמים.

כשאתם מעדכנים את התפקיד, קודם צריך לקבל את התפקיד באמצעות roles.get(), לעדכן את התפקיד ולאחר מכן לכתוב את התפקיד המעודכן באמצעות roles.patch(). משתמשים בערך ה-etag במהלך הגדרת התפקיד, רק אם התפקיד התואם ב-roles.get() מכיל ערך etag.

מסוף

  1. נכנסים לדף תפקידים במסוף Google Cloud.

    כניסה לדף 'תפקידים'

  2. בעזרת התפריט הנפתח בחלק העליון של הדף בוחרים את הפרויקט או הארגון שמכיל את התפקיד שרוצים לערוך.

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

  4. לוחצים על עריכת התפקיד.

  5. כדי לעדכן את המטא-נתונים של התפקיד, יש לערוך את שם התפקיד, התיאור או שלב השקת התפקיד.

  6. כדי לעדכן את ההרשאות של התפקיד:

    1. לוחצים על הוספת הרשאות כדי להוסיף הרשאות חדשות לתפקיד.
    2. מבטלים את הסימון של ההרשאות כדי להסיר את ההרשאות מהתפקיד.
  7. לוחצים על עדכון כדי לשמור את התפקיד הערוך.

gcloud

  1. במסוף Google Cloud, מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud מתחיל סשן של Cloud Shell ומופיעה הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי לעדכן תפקידים בהתאמה אישית, משתמשים בפקודה gcloud iam roles update. יש שתי דרכים להשתמש בפקודה הזו:

    • על ידי שליחת קובץ YAML שמכיל את הגדרת התפקיד המעודכנת

    • על ידי שימוש בדגלים כדי לציין את הגדרת התפקיד המעודכנת

    כשמעדכנים תפקיד בהתאמה אישית, צריך לציין אם הוא חל ברמת הארגון או ברמת הפרויקט באמצעות הדגל --organization=ORGANIZATION_ID או --project=PROJECT_ID. כל דוגמה שבהמשך יוצרת תפקיד בהתאמה אישית ברמת הפרויקט.

    כדי לעדכן תפקיד בהתאמה אישית באמצעות קובץ YAML:

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

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

      gcloud iam roles describe ROLE_ID --organization=ORGANIZATION_ID
    • כדי לקבל את הגדרת התפקיד של תפקיד מותאם אישית ברמת הפרויקט, מריצים את הפקודה הבאה:

      gcloud iam roles describe ROLE_ID --project=PROJECT_ID

    כל ערך placeholder מתואר בהמשך:

    • ROLE_ID הוא השם של התפקיד שרוצים לעדכן, למשל myCompanyAdmin.

    • ORGANIZATION_ID הוא המזהה המספרי של הארגון, כמו 123456789012.

    • PROJECT_ID הוא שם הפרויקט, למשל my-project.

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

    הפקודה describe מחזירה את הפלט הבא:

    description: ROLE_DESCRIPTION
    etag: ETAG
    includedPermissions:
    - PERMISSION_1
    - PERMISSION_2
    name: ROLE_NAME
    stage: LAUNCH_STAGE
    title: ROLE_TITLE

    כל ערך placeholder מתואר בהמשך:

    • ROLE_DESCRIPTION הוא תיאור קצר של התפקיד, כמו "My custom role description".

    • ETAG הוא המזהה הייחודי של הגרסה הנוכחית של התפקיד, כמו BwVkBkbfr70=.

    • PERMISSION_1 ו-PERMISSION_2 הן הרשאות שצריך לכלול בתפקיד המותאם אישית, כמו iam.roles.get. לא ניתן להשתמש בתווים כלליים לחיפוש (*) בשמות של הרשאות.

    • ROLE_NAME הוא השם המלא של התפקיד, כולל הקידומות organizations/, projects/ או roles/. לדוגמה, organizations/123456789012/roles/myCompanyAdmin.

    • LAUNCH_STAGE מציין את השלב של תפקיד במחזור החיים של ההשקה, כמו ALPHA, BETA או GA.

    • ROLE_TITLE היא כותרת ידידותית לתפקיד, כמו "My Company Admin".

    כדי לעדכן את התפקיד, אפשר לכלול את הגדרת הפלט שהופקה בקובץ YAML, או לעדכן את קובץ ה-YAML המקורי עם ערך הפלט etag.

    לדוגמה, קובץ YAML שמכיל את הפלט מהפקודה describe של תפקיד ברמת הפרויקט, ומוסיף שתי הרשאות של Cloud Storage:

    description: My custom role description.
    etag: BwVkBkbfr70=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    - storage.buckets.get
    - storage.buckets.list
    name: projects/my-project/roles/myCompanyAdmin
    stage: ALPHA
    title: My Company Admin

    שומרים את קובץ ה-YAML ומריצים אחת מהפקודות הבאות:

    • כדי לעדכן תפקיד ברמת הארגון, מריצים את הפקודה הבאה:

      gcloud iam roles update ROLE_ID--organization=ORGANIZATION_ID \
          --file=YAML_FILE_PATH
    • כדי לעדכן תפקיד ברמת הפרויקט, מריצים את הפקודה הבאה:

      gcloud iam roles update ROLE_ID --project=PROJECT_ID \
          --file=YAML_FILE_PATH

    כל ערך placeholder מתואר בהמשך:

    • ROLE_ID הוא השם של התפקיד שרוצים לעדכן, למשל myCompanyAdmin.

    • ORGANIZATION_ID הוא המזהה המספרי של הארגון, כמו 123456789012.

    • PROJECT_ID הוא שם הפרויקט, למשל my-project-id.

    • YAML_FILE_PATH הוא הנתיב אל המיקום של קובץ ה-YAML שמכיל את הגדרת התפקיד המותאם אישית המעודכנת.

    דוגמאות

    הדוגמה הבאה ממחישה איך לעדכן תפקיד ברמת הארגון באמצעות קובץ YAML:

    gcloud iam roles update ROLE_ID --organization=ORGANIZATION_ID \
        --file=YAML_FILE_PATH
    • כדי לעדכן תפקיד ברמת הפרויקט, מריצים את הפקודה הבאה:

      gcloud iam roles update ROLE_ID --project=PROJECT_ID \
          --file=YAML_FILE_PATH

    כל ערך placeholder מתואר בהמשך:

    • ROLE_ID הוא השם של התפקיד שרוצים לעדכן, למשל myCompanyAdmin.

    • ORGANIZATION_ID הוא המזהה המספרי של הארגון, כמו 123456789012.

    • PROJECT_ID הוא שם הפרויקט, למשל my-project.

    • YAML_FILE_PATH הוא הנתיב אל המיקום של קובץ ה-YAML שמכיל את הגדרת התפקיד המותאם אישית המעודכנת.

    דוגמאות

    הדוגמה הבאה ממחישה איך לעדכן תפקיד ברמת הארגון באמצעות קובץ YAML:

    gcloud iam roles update myCompanyAdmin --organization=123456789012 \
        --file=my-role-definition.yaml

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

    description: My custom role description.
    etag: BwVkBwDN0lg=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    - storage.buckets.get
    - storage.buckets.list
    name: organizations/123456789012/roles/myCompanyAdmin
    stage: ALPHA
    title: My Company Admin

    הדוגמה הבאה ממחישה איך לעדכן תפקיד ברמת הפרויקט באמצעות קובץ YAML:

    gcloud iam roles update myCompanyAdmin --project=my-project \
        --file=my-role-definition.yaml

    אם התפקיד עודכן בהצלחה, הפלט של הפקודה דומה לפלט הבא:

    description: My custom role description.
    etag: BwVkBwDN0lg=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    - storage.buckets.get
    - storage.buckets.list
    name: projects/my-project/roles/myCompanyAdmin
    stage: ALPHA
    title: My Company Admin

    כדי לעדכן תפקיד בהתאמה אישית באמצעות דגלים:

    ניתן לעדכן כל חלק מהגדרת תפקיד באמצעות דגל תואם. לנושא gcloud iam roles update מפורטת רשימה של כל הדגלים האפשריים.

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

    • --add-permissions=PERMISSIONS: הוספה של הרשאה אחת או יותר מופרדות בפסיקים לתפקיד. לא ניתן להשתמש בתווים כלליים לחיפוש (*) בשמות ההרשאות.

    • --remove-permissions=PERMISSIONS: הסרה של הרשאה אחת או יותר מופרדות בפסיקים מהתפקיד. לא ניתן להשתמש בתווים כלליים לחיפוש (*) בשמות ההרשאות.

    לחלופין, אפשר פשוט לציין את ההרשאות החדשות באמצעות הדגל --permissions=PERMISSIONS, ולספק רשימה של הרשאות מופרדות בפסיקים שיחליפו את רשימת ההרשאות הקיימות.

    כדי לעדכן חלקים אחרים בהגדרת התפקיד, מריצים אחת מהפקודות הבאות:

    • כדי לעדכן תפקיד ברמת הארגון, מריצים את הפקודה הבאה:

      gcloud iam roles update ROLE_ID--organization=ORGANIZATION_ID \
          --title=ROLE_TITLE --description=ROLE_DESCRIPTION \
          --stage=LAUNCH_STAGE
    • כדי לעדכן תפקיד ברמת הפרויקט, מריצים את הפקודה הבאה:

      gcloud iam roles update ROLE_ID --project=PROJECT_ID \
          --title=ROLE_TITLE --description=ROLE_DESCRIPTION \
          --stage=LAUNCH_STAGE

    כל ערך placeholder מתואר בהמשך:

    • ROLE_ID הוא השם של התפקיד, למשל myCompanyAdmin.

    • ORGANIZATION_ID הוא המזהה המספרי של הארגון, כמו 123456789012.

    • PROJECT_ID הוא שם הפרויקט, למשל my-project.

    • ROLE_TITLE היא כותרת ידידותית לתפקיד, כמו "My Company Admin".

    • ROLE_DESCRIPTION הוא תיאור קצר של התפקיד, כמו "My custom role description.".

    • LAUNCH_STAGE מציין את השלב של תפקיד במחזור החיים של ההשקה, כמו ALPHA, BETA או GA.

    דוגמאות

    הדוגמה הבאה ממחישה איך להוסיף הרשאות לתפקיד ברמת הארגון באמצעות דגלים:

    gcloud iam roles update myCompanyAdmin --organization=123456789012 \
        --add-permissions="storage.buckets.get,storage.buckets.list"

    אם התפקיד עודכן בהצלחה, הפלט של הפקודה דומה לפלט הבא:

    description: My custom role description.
    etag: BwVkBwDN0lg=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    - storage.buckets.get
    - storage.buckets.list
    name: organization/123456789012/roles/myCompanyAdmin
    stage: ALPHA
    title: My Company Admin

    הדוגמה הבאה ממחישה איך להוסיף הרשאות לתפקיד ברמת הפרויקט באמצעות דגלים:

    gcloud iam roles update myCompanyAdmin --project=my-project \
        --add-permissions="storage.buckets.get,storage.buckets.list"

    אם התפקיד עודכן בהצלחה, הפלט של הפקודה דומה לפלט הבא:

    description: My custom role description.
    etag: BwVkBwDN0lg=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    - storage.buckets.get
    - storage.buckets.list
    name: projects/my-project/roles/myCompanyAdmin
    stage: ALPHA
    title: My Company Admin

REST

השיטה roles.patch מעדכנת תפקיד בהתאמה אישית בפרויקט או בארגון.

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

נדרש:

  • RESOURCE_TYPE: סוג המשאב שאת התפקידים המותאמים אישית שלו רוצים לנהל. יש להשתמש בערך projects או organizations.
  • RESOURCE_ID: מזהה הפרויקט או מזהה הארגון שאתם רוצים לנהל. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project. מזהי הארגון הם מספרים, כמו 123456789012.
  • ROLE_NAME: שם התפקיד המלא, כולל הקידומות organizations/, projects/ או roles/. לדוגמה, organizations/123456789012/roles/myCompanyAdmin.

מומלץ:

  • ETAG: מזהה לגרסה של התפקיד. יש לכלול את השדה הזה כדי למנוע החלפה של שינויים אחרים בתפקידים.

אופציונלי (מגדירים אחד או יותר מהערכים הבאים):

  • ROLE_TITLE: השם הקריא לאנשים של התפקיד. לדוגמה, My Company Admin.
  • ROLE_DESCRIPTION: תיאור של התפקיד. לדוגמה, "The company admin role allows company admins to access important resources".
  • PERMISSION_1 ו-PERMISSION_2: ההרשאות שרוצים לכלול בתפקיד. לדוגמה, storage.objects.update. לא ניתן להשתמש בתווים כלליים לחיפוש (*) בשמות של הרשאות.
  • LAUNCH_STAGE: שלב ההשקה הנוכחי של התפקיד. השדה הזה יכול להכיל אחד מהערכים האלה: EAP, ALPHA, BETA, GA, DEPRECATED או DISABLED.

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

PATCH https://iam.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/roles

תוכן בקשת JSON:

{
  "roleId": "ROLE_NAME",
  "title": "ROLE_TITLE",
  "description": "ROLE_DESCRIPTION",
  "includedPermissions": [
    "PERMISSION_1",
    "PERMISSION_2"
  ],
  "stage": "LAUNCH-STAGE",
  "etag": "ETAG"
}

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

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

{
  "name": "projects/test-project-1000092/roles/myCompanyAdmin",
  "title": "My Updated Company Admin",
  "includedPermissions": [
    "storage.buckets.get",
    "storage.buckets.list"
  ],
  "stage": "BETA",
  "etag": "BwWoyDpAxBc="
}

C++

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

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

namespace iam = ::google::cloud::iam_admin_v1;
[](std::string const& name, std::string const& title) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::UpdateRoleRequest request;
  request.set_name(name);
  google::iam::admin::v1::Role role;
  role.set_title(title);
  google::protobuf::FieldMask update_mask;
  *update_mask.add_paths() = "title";
  *request.mutable_role() = role;
  *request.mutable_update_mask() = update_mask;
  auto response = client.UpdateRole(request);
  if (!response) throw std::move(response).status();
  std::cout << "Role successfully updated: " << response->DebugString()
            << "\n";
}

C#

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

כדי לבצע אימות ב-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 Role EditRole(string name, string projectId, string newTitle,
        string newDescription, IList<string> newPermissions, string newStage)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });
        // First, get a Role using List() or Get().
        string resource = $"projects/{projectId}/roles/{name}";
        var role = service.Projects.Roles.Get(resource).Execute();
        // Then you can update its fields.
        role.Title = newTitle;
        role.Description = newDescription;
        role.IncludedPermissions = newPermissions;
        role.Stage = newStage;
        role = service.Projects.Roles.Patch(role, resource).Execute();
        Console.WriteLine("Updated role: " + role.Name);
        return role;
    }
}

Go

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

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

import (
	"context"
	"fmt"
	"io"

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

// editRole modifies a custom role.
func editRole(w io.Writer, projectID, name, newTitle, newDescription, newStage string, newPermissions []string) (*iam.Role, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %w", err)
	}

	resource := "projects/" + projectID + "/roles/" + name
	role, err := service.Projects.Roles.Get(resource).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.Roles.Get: %w", err)
	}
	role.Title = newTitle
	role.Description = newDescription
	role.IncludedPermissions = newPermissions
	role.Stage = newStage
	role, err = service.Projects.Roles.Patch(resource, role).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.Roles.Patch: %w", err)
	}
	fmt.Fprintf(w, "Updated role: %v", role.Name)
	return role, nil
}

Java

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

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


import com.google.cloud.iam.admin.v1.IAMClient;
import com.google.iam.admin.v1.Role;
import com.google.iam.admin.v1.Role.RoleLaunchStage;
import com.google.iam.admin.v1.UpdateRoleRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;

/** Edit role metadata. Specifically, update description and launch stage. */
public class EditRole {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // Role ID must point to an existing role.
    String projectId = "your-project-id";
    String roleId = "a unique identifier (e.g. testViewer)";
    String description = "a new description of the role";

    editRole(projectId, roleId, description);
  }

  public static void editRole(String projectId, String roleId, String description)
      throws IOException {
    String roleName = "projects/" + projectId + "/roles/" + roleId;
    Role.Builder roleBuilder =
        Role.newBuilder()
            .setName(roleName)
            .setDescription(description)
            // See launch stage enums at
            // https://cloud.google.com/iam/docs/reference/rpc/google.iam.admin.v1#rolelaunchstage
            .setStage(RoleLaunchStage.GA);
    FieldMask fieldMask = FieldMask.newBuilder().addPaths("description").addPaths("stage").build();
    UpdateRoleRequest updateRoleRequest =
        UpdateRoleRequest.newBuilder()
            .setName(roleName)
            .setRole(roleBuilder)
            .setUpdateMask(fieldMask)
            .build();

    // Initialize client for sending requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (IAMClient iamClient = IAMClient.create()) {
      Role result = iamClient.updateRole(updateRoleRequest);
      System.out.println("Edited role:\n" + result);
    }
  }
}

Python

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

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

def edit_role(
    name: str, project: str, title: str, description: str, permissions: str, stage: str
) -> dict:
    """Creates a role."""

    # pylint: disable=no-member
    role = (
        service.projects()
        .roles()
        .patch(
            name="projects/" + project + "/roles/" + name,
            body={
                "title": title,
                "description": description,
                "includedPermissions": permissions,
                "stage": stage,
            },
        )
        .execute()
    )

    print("Updated role: " + role["name"])
    return role

השבתה של תפקיד בהתאמה אישית

כדי להשבית תפקיד בהתאמה אישית, משנים את שלב ההשקה ל-DISABLED. כשהתפקיד מושבת, כל קישורי התפקידים הקשורים אליו מושבתים. כלומר, להקצאת התפקיד למשתמש אין השפעה.

מסוף

  1. נכנסים לדף תפקידים במסוף Google Cloud.

    כניסה לדף 'תפקידים'

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

  3. בוחרים את הארגון או הפרויקט שלכם.

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

gcloud

  1. במסוף Google Cloud, מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud מתחיל סשן של Cloud Shell ומופיעה הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. משתמשים בפקודה gcloud iam roles update כדי להשבית תפקיד בהתאמה אישית על ידי הגדרת שלב ההשקה ל-DISABLED.

    כפי שמתואר בכרטיסייה gcloud בקטע עריכת תפקיד בהתאמה אישית קיים, תוכלו לעדכן תפקיד בהתאמה אישית קיים בשתי הדרכים הבאות:

    • על ידי שליחת קובץ YAML שמכיל את הגדרת התפקיד המעודכנת

    • על ידי שימוש בדגלים כדי לציין את הגדרת התפקיד המעודכנת

    הדרך הקלה ביותר להשבית תפקיד מותאם אישית קיים היא באמצעות הדגל --stage, ולהגדיר אותו ל-DISABLED. מריצים אחת מהפקודות הבאות:

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

      gcloud iam roles update ROLE_ID--organization=ORGANIZATION_ID \
          --stage=DISABLED
    • כדי להשבית תפקיד ברמת הפרויקט, מריצים את הפקודה הבאה:

      gcloud iam roles update ROLE_ID --project=PROJECT_ID \
          --stage=DISABLED

    כל ערך placeholder מתואר בהמשך:

    • ROLE_ID הוא השם של התפקיד, למשל myCompanyAdmin.

    • ORGANIZATION_ID הוא המזהה המספרי של הארגון, כמו 123456789012.

    • PROJECT_ID הוא שם הפרויקט, למשל my-project.

    דוגמאות

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

    gcloud iam roles update myCompanyAdmin --organization=123456789012 \
        --stage=DISABLED

    אם התפקיד עודכן בהצלחה, הפלט של הפקודה דומה לפלט הבא:

    description: My custom role description.
    etag: BwVkB5NLIQw=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    name: organization/123456789012/roles/myCompanyAdmin
    stage: DISABLED
    title: My Company Admin

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

    gcloud iam roles update myCompanyAdmin --project=my-project \
        --stage=DISABLED

    אם התפקיד עודכן בהצלחה, הפלט של הפקודה דומה לפלט הבא:

    description: My custom role description.
    etag: BwVkB5NLIQw=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    name: projects/my-project/roles/myCompanyAdmin
    stage: DISABLED
    title: My Company Admin
    

REST

השיטה roles.patch מאפשרת לשנות את שלב ההשקה של תפקיד מותאם אישית ל-DISABLED. פעולה זו משביתה את התפקיד.

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

  • RESOURCE_TYPE: סוג המשאב שאת התפקידים המותאמים אישית שלו רוצים לנהל. יש להשתמש בערך projects או organizations.
  • RESOURCE_ID: מזהה הפרויקט או מזהה הארגון שאתם רוצים לנהל. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project. מזהי הארגון הם מספרים, כמו 123456789012.
  • ROLE_NAME: שם התפקיד המלא, כולל הקידומות organizations/, projects/ או roles/. לדוגמה, organizations/123456789012/roles/myCompanyAdmin.
  • ETAG: מזהה לגרסה של התפקיד. יש לכלול את השדה הזה כדי למנוע החלפה של שינויים אחרים בתפקידים.

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

PATCH https://iam.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/roles

תוכן בקשת JSON:

{
  "roleId": "ROLE_NAME",
  "stage": DISABLED,
  "etag": "ETAG"
}

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

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

{
  "name": "projects/test-project-1000092/roles/myCompanyAdmin",
  "stage": "DISABLED",
  "etag": "BwWoyDpAxBc="
}

C++

מעדכנים את השדה stage בתפקיד ל-DISABLED.

C#

מעדכנים את השדה stage בתפקיד ל-DISABLED.

Go

מעדכנים את השדה stage בתפקיד ל-DISABLED.

Java

מעדכנים את השדה stage בתפקיד ל-DISABLED.

Python

מעדכנים את השדה stage בתפקיד ל-DISABLED.

הצגת רשימת תפקידים

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

מסוף

נכנסים לדף תפקידים במסוף Google Cloud.

כניסה לדף 'תפקידים'

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

gcloud

  1. במסוף Google Cloud, מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud מתחיל סשן של Cloud Shell ומופיעה הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. משתמשים בפקודה gcloud iam roles list כדי להציג תפקידים בהתאמה אישית ותפקידים מוגדרים מראש בפרויקט או בארגון:

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

      gcloud iam roles list --organization=ORGANIZATION_ID
    • כדי להציג תפקידים בהתאמה אישית ברמת הפרויקט, מריצים את הפקודה הבאה:

      gcloud iam roles list --project=PROJECT_ID

    כל ערך placeholder מתואר בהמשך:

    • ORGANIZATION_ID הוא המזהה המספרי של הארגון, כמו 123456789012.

    • PROJECT_ID הוא שם הפרויקט, למשל my-project.

    כדי לציין תפקידים שנמחקו, אפשר גם לציין את הדגל --show-deleted.

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

    gcloud iam roles list

REST

השיטה roles.list מפרטת את כל התפקידים המותאמים אישית בפרויקט או בארגון.

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

  • RESOURCE_TYPE: סוג המשאב שאת התפקידים המותאמים אישית שלו רוצים לנהל. יש להשתמש בערך projects או organizations.
  • RESOURCE_ID: מזהה הפרויקט או מזהה הארגון שאתם רוצים לנהל. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project. מזהי הארגון הם מספרים, כמו 123456789012.
  • ROLE_VIEW: אופציונלי. הפרטים שצריך לכלול בתפקידים המוחזרים. כדי לכלול את ההרשאות של התפקידים, צריך להגדיר את השדה הזה לערך FULL. כדי להחריג את ההרשאות של התפקידים, צריך להגדיר את השדה הזה לערך BASIC. ערך ברירת המחדל הוא BASIC.
  • PAGE_SIZE: אופציונלי. מספר התפקידים שצריך לכלול בתשובה. ערך ברירת המחדל הוא 300, והערך המקסימלי הוא 1,000. אם מספר התפקידים גדול מגודל הדף, התשובה מכילה אסימון עימוד שאפשר להשתמש בו כדי לאחזר את דף התוצאות הבא.
  • NEXT_PAGE_TOKEN: אופציונלי. אסימון העימוד הוחזר בתשובה קודם מהשיטה הזו. אם בחרת לעשות זאת, רשימת התפקידים תתחיל מהנקודה שבה הסתיימה הבקשה הקודמת.

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

GET https://iam.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/roles?view=ROLE_VIEW&pageSize=PAGE_SIZE&pageToken=NEXT_PAGE_TOKEN

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

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

{
  "roles": [
    {
      "name": "projects/my-project/roles/customRole1",
      "title": "First Custom Role",
      "description": "Created on: 2020-06-01",
      "etag": "BwWiPg2fmDE="
    },
    {
      "name": "projects/my-project/roles/customRole2",
      "title": "Second Custom Role",
      "description": "Created on: 2020-06-07",
      "etag": "BwWiuX53Wi0="
    }
  ]
}

C++

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

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

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

C#

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

כדי לבצע אימות ב-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> ListRoles(string projectId)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var response = service.Projects.Roles.List("projects/" + projectId)
            .Execute();
        foreach (var role in response.Roles)
        {
            Console.WriteLine(role.Name);
        }
        return response.Roles;
    }
}

Go

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

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

import (
	"context"
	"fmt"
	"io"

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

// listRoles lists a project's roles.
func listRoles(w io.Writer, projectID string) ([]*iam.Role, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %w", err)
	}

	response, err := service.Projects.Roles.List("projects/" + projectID).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.Roles.List: %w", err)
	}
	for _, role := range response.Roles {
		fmt.Fprintf(w, "Listing role: %v\n", role.Name)
	}
	return response.Roles, nil
}

Java

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

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


import com.google.cloud.iam.admin.v1.IAMClient;
import com.google.cloud.iam.admin.v1.IAMClient.ListRolesPagedResponse;
import com.google.iam.admin.v1.ListRolesRequest;
import java.io.IOException;

/** List roles in a project. */
public class ListRoles {

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

    listRoles(projectId);
  }

  public static void listRoles(String projectId) throws IOException {
    ListRolesRequest listRolesRequest =
        ListRolesRequest.newBuilder().setParent("projects/" + projectId).build();

    // Initialize client for sending requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (IAMClient iamClient = IAMClient.create()) {
      ListRolesPagedResponse listRolesResponse = iamClient.listRoles(listRolesRequest);
      listRolesResponse.iterateAll().forEach(role -> System.out.println(role));
    }
  }
}

Python

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

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

def list_roles(project_id: str) -> None:
    """Lists roles."""

    # pylint: disable=no-member
    roles = service.roles().list(parent="projects/" + project_id).execute()["roles"]
    for role in roles:
        print(role["name"])

מחיקת תפקיד בהתאמה אישית

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

מסוף

  1. נכנסים לדף תפקידים במסוף Google Cloud.

    כניסה לדף 'תפקידים'

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

gcloud

  1. במסוף Google Cloud, מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud מתחיל סשן של Cloud Shell ומופיעה הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי למחוק תפקיד בהתאמה אישית, משתמשים בפקודה gcloud iam roles delete:

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

      gcloud iam roles delete ROLE_ID --organization=ORGANIZATION_ID
    • כדי למחוק תפקיד בהתאמה אישית ברמת הפרויקט, מריצים את הפקודה הבאה:

      gcloud iam roles delete ROLE_ID --project=PROJECT_ID

    כל ערך placeholder מתואר בהמשך:

    • ROLE_ID הוא השם של התפקיד, למשל myCompanyAdmin.

    • ORGANIZATION_ID הוא המזהה המספרי של הארגון, כמו 123456789012.

    • PROJECT_ID הוא שם הפרויקט, למשל my-project.

    התפקיד לא ייכלל ב-gcloud iam roles list, אלא אם נכלל הדגל --show-deleted. התפקידים שנמחקו מסומנים בבלוק של deleted: true בתשובה של list, כמו:

    ---
    deleted: true
    description: My custom role description.
    etag: BwVkB5NLIQw=
    name: projects/my-project/roles/myCompanyAdmin
    title: My Company Admin
    ---
    

REST

השיטה roles.delete מוחקת תפקיד בהתאמה אישית בפרויקט או בארגון.

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

  • ROLE_NAME: שם התפקיד המלא, כולל הקידומות organizations/, projects/ או roles/. לדוגמה, organizations/123456789012/roles/myCompanyAdmin.

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

DELETE https://iam.googleapis.com/v1/ROLE_NAME

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

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

{
  "name": "projects/my-project/roles/myCompanyAdmin",
  "title": "My Company Admin",
  "description": "My custom role description.",
  "includedPermissions": [
    "iam.roles.get",
    "iam.roles.list"
  ],
  "etag": "BwWiPg2fmDE=",
  "deleted": true
}

C++

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

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

namespace iam = ::google::cloud::iam_admin_v1;
[](std::string const& name) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::DeleteRoleRequest request;
  request.set_name(name);
  auto response = client.DeleteRole(request);
  if (!response) throw std::move(response).status();
  std::cout << "Role successfully deleted: " << response->DebugString()
            << "\n";
}

C#

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

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


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

public partial class CustomRoles
{
    public static void DeleteRole(string name, string projectId)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        service.Projects.Roles.Delete(
            $"projects/{projectId}/roles/{name}").Execute();
        Console.WriteLine("Deleted role: " + name);
    }
}

Go

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

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

import (
	"context"
	"fmt"
	"io"

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

// deleteRole deletes a custom role.
func deleteRole(w io.Writer, projectID, name string) error {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return fmt.Errorf("iam.NewService: %w", err)
	}

	_, err = service.Projects.Roles.Delete("projects/" + projectID + "/roles/" + name).Do()
	if err != nil {
		return fmt.Errorf("Projects.Roles.Delete: %w", err)
	}
	fmt.Fprintf(w, "Deleted role: %v", name)
	return nil
}

Java

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

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


import com.google.cloud.iam.admin.v1.IAMClient;
import com.google.iam.admin.v1.DeleteRoleRequest;
import java.io.IOException;

/** Delete role. */
public class DeleteRole {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // Role ID must point to an existing role.
    String projectId = "your-project-id";
    String roleId = "a unique identifier (e.g. testViewer)";

    deleteRole(projectId, roleId);
  }

  public static void deleteRole(String projectId, String roleId) throws IOException {
    String roleName = "projects/" + projectId + "/roles/" + roleId;
    DeleteRoleRequest deleteRoleRequest = DeleteRoleRequest.newBuilder().setName(roleName).build();

    // Initialize client for sending requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (IAMClient iamClient = IAMClient.create()) {
      iamClient.deleteRole(deleteRoleRequest);
      System.out.println("Role deleted.");
    }
  }
}

Python

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

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

def delete_role(name: str, project: str) -> dict:
    """Deletes a role."""

    # pylint: disable=no-member
    role = (
        service.projects()
        .roles()
        .delete(name="projects/" + project + "/roles/" + name)
        .execute()
    )

    print("Deleted role: " + name)
    return role

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

אחרי 7 עד 14 ימים, התפקיד יתוזמן למחיקה סופית. בשלב הזה, התפקיד כבר לא נחשב כחלק מהמכסה של 300 תפקידים בהתאמה אישית לכל ארגון או 300 תפקידים בהתאמה אישית לכל פרויקט.

תהליך המחיקה הסופית נמשך 30 יום. במהלך 30 הימים, התפקיד וכל החיבורים המשויכים אליו יוסרו באופן סופי, ולא תוכלו ליצור תפקיד חדש עם אותו מזהה תפקיד.

אחרי שהתפקיד נמחק סופית, עד 44 יום אחרי המחיקה הראשונית תוכלו ליצור תפקיד חדש עם אותו מזהה תפקיד.

ביטול מחיקה של תפקיד בהתאמה אישית

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

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

מסוף

  1. נכנסים לדף תפקידים במסוף Google Cloud.

    כניסה לדף 'תפקידים'

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

gcloud

  1. במסוף Google Cloud, מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud מתחיל סשן של Cloud Shell ומופיעה הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. כדי לבטל מחיקה של תפקיד בהתאמה אישית, משתמשים בפקודה gcloud iam roles undelete:

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

      gcloud iam roles undelete ROLE_ID --organization=ORGANIZATION_ID
    • כדי לבטל את המחיקה של תפקיד בהתאמה אישית ברמת הפרויקט, מריצים את הפקודה הבאה:

      gcloud iam roles undelete ROLE_ID --project=PROJECT_ID

    כל ערך placeholder מתואר בהמשך:

    • ROLE_ID הוא השם של התפקיד, למשל myCompanyAdmin.

    • ORGANIZATION_ID הוא המזהה המספרי של הארגון, כמו 123456789012.

    • PROJECT_ID הוא שם הפרויקט, למשל my-project.

    דוגמאות

    הדוגמה הבאה ממחישה איך לבטל מחיקה של תפקיד בהתאמה אישית ברמת הארגון:

    gcloud iam roles undelete myCompanyAdmin --organization=123456789012

    אם מחיקת התפקיד בוטלה בהצלחה, הפלט של הפקודה דומה לפלט הבא:

    description: My custom role description.
    etag: BwVkCAx9W6w=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    name: organization/123456789012/roles/myCompanyAdmin
    stage: ALPHA
    title: My Company Admin

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

    gcloud iam roles undelete myCompanyAdmin --project=my-project

    אם מחיקת התפקיד בוטלה בהצלחה, הפלט של הפקודה דומה לפלט הבא:

    description: My custom role description.
    etag: BwVkCAx9W6w=
    includedPermissions:
    - iam.roles.get
    - iam.roles.list
    name: projects/my-project/roles/myCompanyAdmin
    stage: ALPHA
    title: My Company Admin
    

REST

בעזרת השיטה roles.undelete אפשר לבטל מחיקה של תפקיד בהתאמה אישית בפרויקט או בארגון.

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

  • ROLE_NAME: שם התפקיד המלא, כולל הקידומות organizations/, projects/ או roles/. לדוגמה, organizations/123456789012/roles/myCompanyAdmin.
  • ETAG: מזהה לגרסה של התפקיד. יש לכלול את השדה הזה כדי למנוע החלפה של שינויים אחרים בתפקידים.

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

POST https://iam.googleapis.com/v1/ROLE_NAME:undelete

תוכן בקשת JSON:

{
  "etag": "ETAG"
}

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

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

{
  "name": "projects/my-project/roles/myCompanyAdmin",
  "title": "My Company Admin",
  "description": "My custom role description.",
  "includedPermissions": [
    "iam.roles.get",
    "iam.roles.list"
  ],
  "etag": "BwWiPg2fmDE="
}

C++

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

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

namespace iam = ::google::cloud::iam_admin_v1;
[](std::string const& name) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::UndeleteRoleRequest request;
  request.set_name(name);
  auto response = client.UndeleteRole(request);
  if (!response) throw std::move(response).status();
  std::cout << "Role successfully undeleted: " << response->DebugString()
            << "\n";
}

C#

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

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