ב- Google Cloud, סוכני שירות נוצרים אוטומטית ברמת הפרויקט, ברמת התיקייה וברמת הארגון כשמפעילים את שירותיGoogle Cloud ומשתמשים בהם. לפעמים לסוכני השירות האלה ניתנים אוטומטית גם תפקידים שמאפשרים להם ליצור משאבים בשמכם ולהשתמש בהם.
אם צריך, אפשר גם לבקש Google Cloud ליצור סוכני שירות בשביל שירות מסוים – ברמת הפרויקט, ברמת התיקייה וברמת הארגון – לפני שתשתמשו בו. כשאתם מבקשים מ- Google Cloud ליצור סוכני שירות, תוכלו לתת להם תפקידים לפני שאתם משתמשים בשירות עצמו. אם סוכן השירות עדיין לא נוצר, לא תוכלו להעניק לו תפקידים.
מתי כדאי להשתמש בסוכני שירות? למשל, כשאתם משתמשים באחת מהאסטרטגיות הבאות לניהול מדיניות ההרשאות:
- מסגרת (framework) הצהרתית כמו Terraform: אם ההגדרות ב-Terraform לא כוללות את התפקידים של סוכני השירות, התפקידים האלה יבוטלו כשתיישמו את ההגדרות. אבל אם תיצרו סוכני שירות ותיתנו להם תפקידים בהגדרות של Terraform, התפקידים האלה לא יבוטלו.
- מערכת של כללי מדיניות בקוד, או במילים אחרות, שמירת עותקים של כללי המדיניות הקיימים במאגר של קודים: אם תאפשרו ל- Google Cloud לתת לסוכני שירות תפקידים באופן אוטומטי, התפקידים יופיעו במדיניות ההרשאות בפועל, אבל לא בעותקים של מדיניות ההרשאה שתשמרו בקודים. אם תטפלו בחוסר העקביות הזה, אתם עלולים לבטל את התפקידים האלה בטעות. אבל אם תיצרו סוכני שירות ותיתנו להם תפקידים באופן יזום, תוכלו למנוע הבדלים בין מאגר המקורות של הקוד שלכם לבין מדיניות ההרשאות בפועל.
כשיוצרים סוכני שירות צריך לתת להם ידנית את התפקידים שהם מקבלים בדרך כלל אוטומטית. אחרת, יכול להיות שחלק מהשירותים לא יפעלו כמו שצריך, כי אותם סוכני שירות לא יקבלו את התפקידים.
לפני שמתחילים
מפעילים את ממשקי ה-API של מנהל המשאבים ו-Workload Identity.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק 'שימוש בשירות'' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםחשוב להבין מהם סוכני שירות.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירה של סוכני שירות ולמתן גישה אליהם, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקטים, בתיקיות ובארגונים שבהם אתם יוצרים סוכני שירות ונותנים להם גישה:
-
הצגת רשימה של השירותים הזמינים ונקודות הקצה שלהם:
צפייה בשימוש בשירות (
roles/serviceusage.serviceUsageViewer) -
הפעלת סוכני שירות:
אדמין של Workload Identity API (
roles/workloadidentity.admin) -
כדי לתת לסוכני שירות גישה לפרויקט:
אדמין IAM של פרויקט (
roles/resourcemanager.projectIamAdmin) -
כדי לתת לסוכני שירות גישה לתיקייה:
אדמין תיקיות (
roles/resourcemanager.folderAdmin) -
כדי לתת לסוכני שירות גישה לפרויקטים, לתיקיות ולארגונים:
אדמין של ארגון (
roles/resourcemanager.organizationAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש מכילים את ההרשאות שנדרשות כדי ליצור סוכני שירות ולתת להם גישה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור סוכני שירות ולתת להם גישה, נדרשות ההרשאות הבאות:
-
רשימת השירותים הזמינים ונקודות הקצה שלהם:
serviceusage.services.list -
כדי להפעיל סוכני שירות:
workloadidentity.serviceAgents.create -
צפייה בפעולות ממושכות:
workloadidentity.operations.get -
כדי לתת לסוכני השירות גישה לפרויקט:
-
resourcemanager.projects.getIamPolicy -
resourcemanager.projects.setIamPolicy
-
-
כדי לתת לסוכני השירות גישה לתיקייה:
-
resourcemanager.folders.getIamPolicy -
resourcemanager.folders.setIamPolicy
-
-
כדי לתת לסוכני השירות גישה לארגון:
-
resourcemanager.organizations.getIamPolicy -
resourcemanager.organizations.setIamPolicy
-
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
איך מזהים את סוכני השירות שרוצים ליצור
כדי לזהות את סוכני השירות שצריך ליצור ואת המשאבים שצריך ליצור אותם בשבילם, מבצעים את הפעולות הבאות:
מכינים את רשימת השירותים שבהם משתמשים ואת נקודות הקצה שלהם ל-API. תוכלו להשתמש באחת מהדרכים הבאות כדי לראות את כל השירותים הזמינים ואת נקודות הקצה שלהם:
המסוף
נכנסים לדף API Library במסוף Google Cloud .
נקודת הקצה ב-API היא Service name בקטע Additional details.
gcloud
הפקודה
gcloud services listמציגה רשימה של כל השירותים שזמינים לפרויקט.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
EXPRESSION: אופציונלי. ביטוי לסינון התוצאות. לדוגמה, אפשר לסנן את כל השירותים שהשמות שלהם מכילים אתgoogleapis.comאבל לא מכילים אתsandbox:name ~ googleapis.com AND name !~ sandbox
כאן תוכלו לראות את רשימת ביטויי הסינון:
gcloud topic filters. -
LIMIT: אופציונלי. המספר המקסימלי של תוצאות בכל רשימה. ערך ברירת המחדל הואunlimited.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud services list --available --filter='EXPRESSION' --limit=LIMIT
Windows (PowerShell)
gcloud services list --available --filter='EXPRESSION' --limit=LIMIT
Windows (cmd.exe)
gcloud services list --available --filter='EXPRESSION' --limit=LIMIT
התשובה כוללת את השמות והכותרות של כל השירותים הזמינים. נקודת הקצה ב-API היא הערך בשדה
NAME.REST
באמצעות השיטה
services.listב-Service Usage API אפשר לראות את רשימת כל השירותים שזמינים לפרויקט.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את המשתנים הבאים בערכים:
-
RESOURCE_TYPE: סוג המשאב שלגביו רוצים להציג את השירותים הזמינים. אפשר להשתמש ב-projects, ב-foldersאו ב-organizations. -
RESOURCE_ID: המזהה של Google Cloud הפרויקט, התיקייה או הארגון שלגביהם רוצים לראות את רשימת השירותים הזמינים. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. מזהי תיקיות וארגונים מכילים רק ספרות, למשל123456789012. -
PAGE_SIZE: אופציונלי. מספר השירותים שאפשר לכלול בתשובה. ערך ברירת המחדל הוא 50. הערך המקסימלי הוא 200. אם יש יותר שירותים מהגודל של הדף, התשובה תכיל אסימון חלוקה לדפים שבו אפשר להשתמש כדי לטעון את דף התוצאות הבא. -
NEXT_PAGE_TOKEN: אופציונלי. אסימון החלוקה לדפים שהוחזר בתשובה הקודמת בשיטה הזו. אם יש אסימון כזה, רשימת השירותים תתחיל מהמקום שבו הסתיימה הבקשה הקודמת.
שיטת ה-HTTP וכתובת ה-URL:
GET https://serviceusage.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/services?pageSize=PAGE_SIZE&pageToken=NEXT_PAGE_TOKEN
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התשובה תכיל את השמות והכותרות של כל השירותים שזמינים למשאב. אם יש יותר שירותים מהגודל של הדף, התשובה תכיל אסימון חלוקה לדפים.נקודת הקצה ב-API היא הערך בשדה
name.-
לכל נקודת קצה ל-API שבה תשתמשו, מכינים רשימה של המשאבים שבהם צריך ליצור את סוכני השירות של נקודת הקצה הזו:
בדף service agent reference, מחפשים את כל נקודות הקצה ל-API כדי למצוא את כל סוכני השירות של נקודת הקצה הזו.
יכול להיות שלחלק מנקודות הקצה לא משויכים סוכני שירות, ואפשר לדלג על הפעלת יצירת סוכני שירות עבור נקודות הקצה האלה.
לכל אחד מסוכני השירות של נקודת הקצה, משתמשים בכתובת האימייל של סוכן השירות כדי לקבוע איפה צריך ליצור את סוכן השירות.
ה-placeholder בכתובת האימייל של סוכן השירות מציין איפה צריך ליצור את סוכן השירות:
Placeholder איפה יוצרים את סוכן השירות PROJECT_NUMBERבכל פרויקט שבו משתמשים בשירות FOLDER_NUMBERבכל תיקייה שבה משתמשים בשירות ORGANIZATION_NUMBERבכל ארגון שבו משתמשים בשירות לכל נקודת קצה, רושמים כל משאב ייחודי שצריך ליצור בשבילו סוכני שירות לנקודת הקצה הזו.
איך יוצרים סוכני שירות
אחרי שהבנתם אילו סוכני שירות צריך ליצור, תוכלו לבקש מ-Google Cloud ליצור אותם.
כשמבקשים מ- Google Cloud ליצור סוכני שירות צריך לתת להם שירות ומשאב. לאחר מכן,הפקודה Google Cloud יוצרת את כל סוכני השירות לאותו שירות ומשאב.
במהלך השלב הזה, אם משתמשים ב-CLI של gcloud או ב-API בארכיטקטורת REST, אפשר גם ליצור רשימה של התפקידים שצריך להעניק לכל סוכן שירות. המידע הזה ישמש אתכם כדי להקצות תפקידים לסוכני השירות. אם אתם משתמשים ב-Terraform, אתם לא צריכים לעקוב אחרי התפקידים הנדרשים באופן ידני, כי אתם יכולים להפנות לתפקידים באופן פרוגרמטי.
gcloud
משתמשים בפקודה gcloud workload-identity service-agents
generate כדי ליצור סוכני שירות לכל נקודת קצה ולכל משאב שזיהיתם בשלב זיהוי סוכני השירות שרוצים ליצור.
בכל פעם שמריצים את הפקודה, בודקים את התשובה. לכל תפקיד בתשובה, שומרים את כתובת האימייל של סוכן השירות שרוצים להעניק לו את התפקיד. תשתמשו במידע הזה כדי להקצות תפקידים לסוכני השירות.
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
ENDPOINT: נקודת הקצה ב-API שבשבילה רוצים ליצור סוכני שירות, לדוגמהaiplatform.googleapis.com. -
RESOURCE_TYPE: סוג המשאב שבשבילו רוצים ליצור סוכני שירות. אפשר להשתמש ב-project, ב-folderאו ב-organization. -
RESOURCE_ID: המזהה המספרי של Google Cloudהפרויקט, התיקייה או הארגון שבשבילם רוצים ליצור סוכני שירות. לדוגמה,123456789012.אפשר ליצור סוכני שירות למשאב אחד בכל פעם. כדי ליצור סוכני שירות למספר משאבים, צריך להריץ את הפקודה לכל משאב בנפרד.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud workload-identity service-agents generate --service="ENDPOINT" \ --location="global" --RESOURCE_TYPE="RESOURCE_ID"
Windows (PowerShell)
gcloud workload-identity service-agents generate --service="ENDPOINT" ` --location="global" --RESOURCE_TYPE="RESOURCE_ID"
Windows (cmd.exe)
gcloud workload-identity service-agents generate --service="ENDPOINT" ^ --location="global" --RESOURCE_TYPE="RESOURCE_ID"
התשובה מכילה רשימה של כל סוכני השירות שנוצרו. לכל סוכן שירות, התגובה מפרטת את המשאב שעבורו הוא נוצר, את כתובת האימייל של סוכן השירות, את השירות שסוכן השירות משויך אליו ואת המצב של סוכן השירות. אם לסוכן השירות מוקצה בדרך כלל תפקיד ספציפי, התשובה תכלול גם את התפקיד הזה.
התפקיד שמופיע ברשימה לא מוקצה לסוכן השירות באופן אוטומטי. לכל תפקיד בתשובה, שומרים את כתובת האימייל של סוכן השירות שרוצים להקצות לו את התפקיד. תשתמשו במידע הזה כדי להעניק תפקידים לסוכני השירות.
הדוגמה הבאה היא של תשובה קטועה ליצירת סוכני שירות עבור aiplatform.googleapis.com.
Provisioned service agents for aiplatform.googleapis.com under projects/123456789012: container: projects/123456789012 principal: serviceAccount:service-123456789012@gcp-sa-aiplatform.iam.gserviceaccount.com role: roles/aiplatform.serviceAgent serviceProducer: aiplatform.googleapis.com state: ACTIVE ---- container: projects/123456789012 principal: serviceAccount:service-123456789012@gcp-ri-aiplatform.iam.gserviceaccount.com serviceProducer: aiplatform.googleapis.com state: ACTIVE ---- ... ---- container: projects/123456789012 principal: serviceAccount:service-123456789012@gcp-sa-vertex-vtc.iam.gserviceaccount.com role: roles/aiplatform.trainingClusterServiceAgent serviceProducer: aiplatform.googleapis.com state: ACTIVE ----
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform. למידע נוסף, ראו את מאמרי העזרה לספקים של Terraform.
משתמשים במשאב google_workload_identity_service_agent כדי להפעיל יצירה של סוכני שירות לכל נקודת קצה ולכל משאב שזיהיתם בשלב איך מזהים את סוכני השירות שרוצים ליצור.
לדוגמה, אם רוצים ליצור את כל סוכני השירות ברמת הפרויקט ל-BigQuery עבור פרויקט ברירת המחדל, אפשר להוסיף את הקוד הבא להגדרת Terraform:
REST
מבצעים את הפעולות הבאות לכל נקודת קצה שבשבילה רוצים ליצור סוכני שירות:
יוצרים סוכני שירות לכל משאב שזיהיתם בשלב איך מזהים את סוכני השירות שרוצים ליצור:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
RESOURCE_TYPE: סוג המשאב שבשבילו רוצים ליצור סוכני שירות. אפשר להשתמש ב-projects, ב-foldersאו ב-organizations. -
RESOURCE_NUMERIC_ID: המזהה המספרי של Google Cloud הפרויקט, התיקייה או הארגון שבשבילם רוצים ליצור סוכני שירות. לדוגמה,123456789012.אפשר ליצור סוכני שירות למשאב אחד בכל פעם. כדי ליצור סוכני שירות למספר משאבים, צריך לשלוח בקשה לכל משאב בנפרד.
-
ENDPOINT: נקודת הקצה ב-API שבשבילה רוצים ליצור סוכן שירות, לדוגמהaiplatform.googleapis.com.
שיטת ה-HTTP וכתובת ה-URL:
POST https://workloadidentity.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_NUMERIC_ID/locations/global/serviceProducers/ENDPOINT:generateServiceAgents
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התשובה מכילהOperationשמוסר את סטטוס הבקשה שלכם. לדוגמה:{ "name": "projects/123456789012/locations/global/operations/operation-1775250941060-64e94d1baa76d-1aa958f3-07b2ea9c", "metadata": { "@type": "type.googleapis.com/google.cloud.workloadidentity.v1.OperationMetadata", "createTime": "2026-04-03T21:15:41.367155118Z", "target": "projects/123456789012/locations/global/serviceProducers/bigquery.googleapis.com", "verb": "passthroughLro", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }-
מקבלים את התשובה מהפעולה שהושלמה. לכל תפקיד בתשובה, שומרים את כתובת האימייל של סוכן השירות שצריך להקצות לו את התפקיד. תשתמשו במידע הזה כדי להקצות תפקידים לסוכני השירות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
OPERATION_NAME: השם של פעולת generateServiceAgents. מעתיקים את הערך הזה מהשדהnameבתגובהserviceProducers.generateServiceAgents. לדוגמה:projects/123456789012/locations/global/operations/operation-1775250941060-64e94d1baa76d-1aa958f3-07b2ea9c -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project.
שיטת ה-HTTP וכתובת ה-URL:
GET https://workloadidentity.googleapis.com/v1/OPERATION_NAME
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
פעולות שמתבצעות מחזירות תגובה כמו זו:
{ "name": "projects/123456789012/locations/global/operations/operation-1775258415970-64e968f44b91a-28fcf2f5-38367cfe", "metadata": { "@type": "type.googleapis.com/google.cloud.workloadidentity.v1.OperationMetadata", "createTime": "2026-04-03T23:20:15.982631253Z", "target": "projects/123456789012/locations/global/serviceProducers/aiplatform.googleapis.com", "verb": "passthroughLro", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }הפעולות שהסתיימו מחזירות תגובה שמכילה רשימה של סוכני שירות שנוצרו. לכל סוכן שירות, התגובה מפרטת את המשאב שעבורו הוא נוצר, את כתובת האימייל של סוכן השירות, את השירות שסוכן השירות משויך אליו ואת המצב של סוכן השירות. אם בדרך כלל לסוכן השירות מוקצה תפקיד ספציפי, התשובה תכלול גם את התפקיד הזה.
התפקיד שמופיע ברשימה לא מוקצה לסוכן השירות באופן אוטומטי. לכל תפקיד בתשובה, שומרים את כתובת האימייל של סוכן השירות שרוצים להקצות לו את התפקיד. תשתמשו במידע הזה כדי להקצות תפקידים לסוכני השירות.
הדוגמה הבאה היא של תשובה קטועה ליצירת סוכני שירות עבור
aiplatform.googleapis.com.{ "name": "projects/123456789012/locations/global/operations/operation-1775258415970-64e968f44b91a-28fcf2f5-38367cfe", "metadata": { "@type": "type.googleapis.com/google.cloud.workloadidentity.v1.OperationMetadata", "createTime": "2026-04-03T23:20:15.982631253Z", "endTime": "2026-04-03T23:20:17.315225515Z", "target": "projects/123456789012/locations/global/serviceProducers/aiplatform.googleapis.com", "verb": "passthroughLro", "requestedCancellation": false, "apiVersion": "v1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.workloadidentity.v1.GenerateServiceAgentsResponse", "serviceAgents": [ { "container": "projects/123456789012", "serviceProducer": "aiplatform.googleapis.com", "principal": "serviceAccount:service-123456789012@gcp-sa-aiplatform.iam.gserviceaccount.com", "role": "roles/aiplatform.serviceAgent", "state": "ACTIVE" }, { "container": "projects/123456789012", "serviceProducer": "aiplatform.googleapis.com", "principal": "serviceAccount:service-123456789012@gcp-ri-aiplatform.iam.gserviceaccount.com", "state": "ACTIVE" }, ... { "container": "projects/123456789012", "serviceProducer": "aiplatform.googleapis.com", "principal": "serviceAccount:service-123456789012@gcp-sa-vertex-vtc.iam.gserviceaccount.com", "role": "roles/aiplatform.trainingClusterServiceAgent", "state": "ACTIVE" } ] } }-
איך נותנים תפקידים לסוכני שירות
אחרי ש- Google Cloud יוצר את סוכני השירות הנדרשים לפרויקטים, לתיקיות ולארגונים, תוכלו לתת להם תפקידים באמצעות כתובת האימייל שלהם.
אם ביקשתם מ- Google Cloud ליצור סוכני שירות, עליכם להקצות תפקידים שבדרך כלל מוקצים באופן אוטומטי. אם לא תעשו זאת, ייתכן שחלק מהשירותים לא יפעלו כראוי. הסיבה לכך היא שסוכני שירות שנוצרים לבקשת משתמש לא מקבלים תפקידים באופן אוטומטי.
המסוף
בעזרת רשימת התפקידים וסוכני השירות שיצרתם בשלב איך יוצרים סוכני שירות, תוכלו לזהות לאילו סוכני שירות צריך להעניק תפקידים. לכל סוכן שירות שצריך לקבל תפקיד, מבצעים את הפעולות הבאות:
נכנסים לדף IAM במסוף Google Cloud .
בוחרים פרויקט, תיקייה או ארגון שיצרתם עבורם את סוכן השירות.
לוחצים על Grant Access וממלאים את כתובת האימייל של סוכן השירות.
לוחצים על Select a role ומחפשים את התפקיד שרוצים להקצות לפי ההנחיות הבאות:
- שם התפקיד
- המוצר Google Cloud שרוצים להעניק לו גישה
- ההרשאה שרוצים לתת
- התפקיד לביצוע
לוחצים על Save. לסוכן השירות יינתן התפקיד במשאב.
gcloud
בעזרת רשימת התפקידים וסוכני השירות שיצרתם בשלב איך יוצרים סוכני שירות, תוכלו לזהות לאילו סוכני שירות צריך להעניק תפקידים. לכל סוכן שירות שצריך לקבל תפקיד, משתמשים בפקודה add-iam-policy-binding כדי להקצות את התפקיד לסוכן השירות.
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
RESOURCE_TYPE: סוג המשאב שרוצים לנהל את הגישה אליו. אפשר להשתמש ב-projects, ב-resource-manager foldersאו ב-organizations. -
RESOURCE_ID: מזהה הפרויקט, התיקייה או הארגון ב- Google Cloud . מזהי פרויקטים מכילים אותיות וספרות, למשלmy-project. מזהי תיקיות וארגונים מכילים רק ספרות, למשל123456789012. -
PRINCIPAL: כתובת האימייל של סוכן השירות שרוצים להעניק לו גישה, עם הקידומתserviceAccount:. לדוגמה,serviceAccount:service-0123456789012@gcp-sa-aiplatform-cc.iam.gserviceaccount.com. -
ROLE_NAME: שם התפקיד שרוצים לתת לסוכן השירות.
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID \ --member=PRINCIPAL --role=ROLE_NAME \ --condition=CONDITION
Windows (PowerShell)
gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID ` --member=PRINCIPAL --role=ROLE_NAME ` --condition=CONDITION
Windows (cmd.exe)
gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID ^ --member=PRINCIPAL --role=ROLE_NAME ^ --condition=CONDITION
התשובה תכלול את מדיניות ההרשאות המעודכנת של IAM.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform. למידע נוסף, ראו את מאמרי העזרה לספקים של Terraform.
כדי להעניק תפקידים לסוכני שירות:
-
לכל משאב
google_workload_identity_service_agent, מעניקים את התפקידים שמשויכים לסוכני השירות.לדוגמה, אם רוצים להקצות תפקידים לכל סוכני השירות במשאב
google_workload_identity_service_agent.primary, אפשר להוסיף את הקוד הבא להגדרות של Terraform: -
מריצים פקודת
terraform applyממוקדת עבור משאבgoogle_workload_identity_service_agentשהוספתם בקטע איך יוצרים סוכני שירות בדף הזה.לדוגמה, אם הוספתם משאב בשם
google_workload_identity_service_agent.primary, מריצים את הפקודה הבאה:terraform apply target="google_workload_identity_service_agent.primary"
הפעלת הפקודה הזו מבטיחה שהמשאב
google_project_iam_memberיוכל להפנות למשאבי סוכן שירות בלי לקבל שגיאותKnown After Apply. -
מריצים את הפקודה
terraform planלהגדרות של Terraform. הפקודה הזו מציגה את תוכנית ההפעלה להענקת תפקידים לסוכני שירות. אם תוכנית הביצוע נראית תקינה, מריצים את הפקודהterraform applyכדי להחיל את התוכנית.
REST
בעזרת רשימת התפקידים וסוכני השירות שיצרתם בשלב איך יוצרים סוכני שירות, תוכלו לזהות לאילו סוכני שירות צריך להעניק תפקידים. כדי להעניק תפקידים לסוכני השירות, משתמשים בתבנית read-modify-write כדי לעדכן את מדיניות ההרשאות של המשאב:
קוראים את מדיניות ההרשאות הקיימת באמצעות
getIamPolicy.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
API_VERSION: גרסת ה-API שבה ייעשה שימוש. לפרויקטים ולארגונים, צריך להשתמש ב-v1. לתיקיות, צריך להשתמש ב-v2. -
RESOURCE_TYPE: סוג המשאב שאת המדיניות שלו רוצים לנהל. אפשר להשתמש ב-projects, ב-foldersאו ב-organizations. -
RESOURCE_ID: מזהה הפרויקט, הארגון או התיקייה ב- Google Cloud. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. מזהי תיקיות וארגונים מכילים רק ספרות, למשל123456789012. -
POLICY_VERSION: הגרסה של המדיניות שתוחזר. בבקשות צריך לציין את הגרסה הכי עדכנית של המדיניות (3). פרטים נוספים מופיעים במאמר ציון גרסת מדיניות בזמן אחזור מדיניות.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy
תוכן בקשת JSON:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התשובה תכיל את מדיניות ההרשאות של המשאב. לדוגמה:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:my-user@example.com" ] } ] }-
לכל סוכן שירות שרוצים להקצות לו תפקיד, יוצרים קשר בין תפקיד לסוכן שירות ומקצים לסוכן השירות את התפקיד הנדרש. לדוגמה, הקישור הבא בין תפקידים מעניק לסוכן השירות של קוד מותאם אישית ב-AI Platform את התפקיד סוכן שירות של קוד מותאם אישית ב-Vertex AI (
roles/aiplatform.customCodeServiceAgent):{ "role": "roles/aiplatform.customCodeServiceAgent", "members": [ "serviceAccount:service-PROJECT_NUMBER@gcp-sa-aiplatform-cc.iam.gserviceaccount.com", ] }אם במדיניות ההרשאות כבר יש קישור תפקיד לתפקיד הנדרש, מוסיפים את סוכן השירות לרשימה
membersשל אותו קישור תפקיד.כותבים את מדיניות ההרשאות המעודכנת באמצעות
setIamPolicy.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
API_VERSION: גרסת ה-API שבה ייעשה שימוש. לפרויקטים ולארגונים, צריך להשתמש ב-v1. לתיקיות, צריך להשתמש ב-v2. -
RESOURCE_TYPE: סוג המשאב שאת המדיניות שלו רוצים לנהל. אפשר להשתמש ב-projects, ב-foldersאו ב-organizations. -
RESOURCE_ID: מזהה הפרויקט, הארגון או התיקייה ב- Google Cloud. מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. מזהי תיקיות וארגונים מכילים רק ספרות, למשל123456789012. -
POLICY: ייצוג ב-JSON של המדיניות שרוצים להגדיר. מידע נוסף על הפורמט של מדיניות מופיע במאמרי העזרה בנושא מדיניות.
שיטת ה-HTTP וכתובת ה-URL:
POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:setIamPolicy
תוכן בקשת JSON:
{ "policy": POLICY }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התגובה מכילה את מדיניות ההרשאה המעודכנת.
-
המאמרים הבאים
- לצפייה ברשימה של כל נציגי השירות.
- דרכים נוספות שבהן אפשר לתת תפקידים לחשבונות משתמשים
- איך יוצרים חשבונות שירות שהמשתמשים מנהלים, ויכולים לשמש בתור זהויות לעומסי עבודה (workloads).
- שיטות מומלצות לשימוש ב-Terraform ב-Google Cloud
- Google Cloud כל הדוגמאות של Terraform