ב-Workflows משתמשים בחשבונות שירות כדי לתת לתהליכי עבודה גישה למשאבים ב- Google Cloud . חשבונות שירות הם חשבונות מיוחדים שמשמשים כזהות של ישות שהיא לא אדם, כמו פונקציה, אפליקציה או מכונה וירטואלית. הם מאפשרים לכם לאמת את הישויות האלה. אפשר להתייחס לחשבון שירות גם כזהות וגם כמשאב:
כשמתייחסים לחשבון שירות כזהות, אפשר להקצות לו תפקיד שמאפשר לו לגשת למשאב (כמו תהליך עבודה).
כשמתייחסים לחשבון שירות כמשאב, אפשר להקצות תפקידים למשתמשים אחרים כדי לגשת לחשבון השירות הזה או לנהל אותו.
חשבון שירות מזוהה באמצעות כתובת האימייל הייחודית שלו.
במאמר אימות כחשבון שירות מוסבר איך מגדירים אימות באפליקציה בסביבת ייצור.
חשבון שירות המשמש כברירת מחדל
כשיוצרים תהליך עבודה, הוא משויך לחשבון שירות של ניהול זהויות והרשאות גישה (IAM). אם לא תציינו חשבון שירות במהלך יצירת תהליך העבודה, תהליך העבודה ישתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine בתור הזהות שלו. כדי לבדוק איזה חשבון שירות משויך לתהליך עבודה, קראו את הקטע אימות חשבון השירות שמשויך לתהליך עבודה.
מומלץ להשתמש בחשבון השירות שמוגדר כברירת מחדל רק לבדיקה ולפיתוח. בסביבות ייצור, מומלץ מאוד ליצור חשבון שירות חדש ולהקצות לו תפקיד אחד או יותר ב-IAM, שמכילים את ההרשאות המינימליות שנדרשות כדי לגשת למשאבים שמנוהלים על ידי תהליכי העבודה.
התפקידים היחידים שנדרשים לחשבון השירות הם אלה שנדרשים כדי לגשת למשאבים שמנוהלים על ידי תהליכי העבודה. למידע נוסף, קראו את המאמר הרשאות לחשבון שירות.
הרשאות של חשבון שירות
מאחר שחשבונות שירות הם זהויות, אפשר לתת לחשבון שירות גישה למשאבים בפרויקט על ידי הקצאת תפקיד, בדיוק כמו שמקצים תפקיד לכל חשבון משתמש אחר. לדוגמה, אם אתם רוצים לאפשר לתהליך העבודה לשלוח יומנים ל-Cloud Logging, ודאו שלחשבון השירות שמריץ את תהליך העבודה יש תפקיד שכולל את ההרשאה logging.logEntries.create – לדוגמה, תפקיד ה-IAM כותב יומנים (roles/logging.logWriter). באופן כללי, התפקידים שנדרשים לחשבון השירות תלויים במשאבים שאתם מתזמרים באמצעות תהליכי העבודה. כדי לקבוע אילו תפקידים נדרשים, עיינו בתיעוד המוצר של המשאב שאתם מתזמרים, או בחרו תפקידים מוגדרים מראש.
לחשבון השירות של תהליך העבודה לא נדרש התפקיד Workflows Invoker (roles/workflows.invoker) ב-IAM, אלא אם תהליך העבודה מפעיל את עצמו או תהליכי עבודה אחרים (כלומר, יוצר הפעלות חדשות של תהליכי עבודה). איך מפעילים את Workflows?
צירוף חשבונות שירות למשאבים
כדי ליצור תהליך עבודה ולצרף חשבון שירות, נדרשות הרשאות ליצירת תהליך העבודה ולצירוף חשבון השירות לתהליך העבודה.
כדי לקבל את ההרשאה שדרושה לצירוף חשבון שירות למשאב, בקשו מהאדמין לתת לכם ב-IAM את התפקיד משתמש בחשבון שירות (roles/iam.serviceAccountUser) בחשבון השירות או בפרויקט שמכיל את חשבון השירות.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקיד המוגדר מראש הזה כולל את ההרשאה iam.serviceAccounts.actAs, שנדרשת כדי לצרף חשבון שירות למשאב.
יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים מוגדרים מראש.
כשמעדכנים את קוד המקור או את חשבון השירות של תהליך עבודה קיים, צריך גם את ההרשאה iam.serviceAccounts.actAs:
- עדכון קוד המקור של תהליך העבודה בלבד (בלי לעדכן את חשבון השירות): צריך את ההרשאה
iam.serviceAccounts.actAsבחשבון השירות הקיים שמשויך לתהליך העבודה. - עדכון של חשבון השירות, או של קוד המקור וחשבון השירות: אתם צריכים את ההרשאה
iam.serviceAccounts.actAsבחשבון השירות החדש שאתם משייכים לתהליך העבודה.
מידע נוסף על תפקידי אימות של חשבון שירות זמין במאמר תפקידים לאימות חשבון שירות.
הפעלת פונקציות Cloud Run
בפונקציות Cloud Run, הרשאות ההפעלה זמינות באמצעות ניהול שירות Cloud Run הבסיסי. אם תהליך העבודה מפעיל שירות של פונקציות Cloud Run, אתם לא צריכים להקצות לחשבון השירות של הגורם המפעיל את התפקיד מפעיל פונקציות של Cloud Functions (roles/cloudfunctions.invoker) ב-IAM. במקום זאת, צריך להקצות את תפקיד ה-IAM מפעיל Cloud Run (roles/run.invoker).
מידע נוסף זמין במאמר השוואה בין פונקציות Cloud Run.
פריסת תהליך עבודה עם חשבון שירות בהתאמה אישית
אתם יכולים ליצור חשבון שירות משלכם בניהול המשתמשים כדי לקבל גמישות רבה יותר בשליטה על הגישה לתהליך העבודה.
יוצרים את חשבון השירות ורושמים את השם שלו.
מקצים לחשבון השירות את התפקידים המתאימים, בהתאם למשאבים שתהליך העבודה צריך לגשת אליהם כדי לבצע את העבודה שלו.
צריך לוודא שלכל חשבונות המשתמשים שפורסים או מעדכנים תהליכי עבודה יש הרשאה לצרף את חשבון השירות (
roles/iam.serviceAccountUser) או לפעול בשמו. אם אתם יצרתם את חשבון השירות, ההרשאה הזו ניתנת לכם באופן אוטומטי.מקצים את התפקיד בפרויקט:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
או להקצות את התפקיד בחשבון השירות:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud שמכיל את תהליך העבודה ואת חשבון השירות.
PRINCIPAL: מזהה של פורס תהליך העבודה בפורמטuser|group|serviceAccount:emailאוdomain:domain. לדוגמה:user:dana@example.comgroup:admins@example.comserviceAccount:my-service-account@example.comdomain:example.com
SERVICE_ACCOUNT_RESOURCE_NAME: השם המלא של המשאב של חשבון השירות, בפורמט הבא:projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.comכאשר
SERVICE_ACCOUNT_NAMEהוא השם של חשבון השירות.
-
פורסים את תהליך העבודה באמצעות חשבון השירות בהתאמה אישית.
פריסת תהליך עבודה עם חשבון שירות בפרויקטים שונים
כברירת מחדל, אי אפשר ליצור חשבון שירות בפרויקט אחד ולצרף אותו למשאב בפרויקט אחר. בהוראות הבאות מוסבר איך לצרף חשבון שירות בפרויקט אחד לתהליך עבודה בפרויקט אחר. אחר כך תוכלו להשתמש בחשבון השירות בפרויקטים שונים כדי לפרוס תהליך עבודה.
אם חשבון השירות והמשאבים של תהליך העבודה נמצאים בפרויקטים שונים:
במסוף Google Cloud , נכנסים לדף מדיניות הארגון בפרויקט שבו נמצא חשבון השירות:
כניסה לדף Organization policies
בודקים את מדיניות הארגון של הפרויקט ומוודאים שהאילוץ הבוליאני
iam.disableCrossProjectServiceAccountUsageלא נאכף בפרויקט. מידע נוסף מופיע במאמר הפעלה של צירוף חשבונות שירות בין פרויקטים.בפרויקט שבו נמצא חשבון השירות, יוצרים את חשבון השירות ורושמים את השם שלו.
מקצים לחשבון השירות את התפקידים המתאימים, בהתאם למשאבים שתהליך העבודה צריך לגשת אליהם כדי לבצע את העבודה שלו.
מקצים את התפקיד "יצירת אסימונים בחשבון שירות" (
roles/iam.serviceAccountTokenCreator) לסוכן השירות של Workflows בפרויקט של תהליך העבודה. כך סוכן השירות יכול לנהל את הגישה של חשבון השירות לפרויקטים שונים. סוכן שירות הוא הזהות של שירות Google Cloud מסוים בפרויקט מסוים. מידע נוסף מופיע במאמר סוכני שירות.המסוף
נכנסים לדף Workflows במסוף Google Cloud :
כדי ליצור תהליך עבודה, לוחצים על Create. כדי לעדכן תהליך עבודה קיים, לוחצים על השם שלו.
ברשימה Service account, לוחצים על Switch project.
בוחרים חשבון שירות מפרויקט אחר.
אם מוצגת בקשה, נותנים את התפקיד
roles/iam.serviceAccountTokenCreatorלסוכן השירות של Workflows.
gcloud
מקצים את התפקיד
roles/iam.serviceAccountTokenCreatorלסוכן השירות של Workflows:gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_RESOURCE_NAME \ --member='serviceAccount:service-WORKFLOWS_PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
מחליפים את מה שכתוב בשדות הבאים:
SERVICE_ACCOUNT_RESOURCE_NAME: השם המלא של המשאב של חשבון השירות, בפורמט הבא:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.comכאשר:
-
SERVICE_ACCOUNT_PROJECT_IDהוא מזהה הפרויקט ב-Google Cloud שמכיל את חשבון השירות. -
SERVICE_ACCOUNT_NAMEהוא השם של חשבון השירות.
-
WORKFLOWS_PROJECT_NUMBER:Google Cloud מספר הפרויקט שמכיל את משאבי תהליך העבודה.
צריך לוודא שלכל חשבונות המשתמשים שפורסים או מעדכנים תהליכי עבודה יש הרשאה לצרף את חשבון השירות (
roles/iam.serviceAccountUser) או לפעול בשמו. אם אתם יצרתם את חשבון השירות, ההרשאה הזו ניתנת לכם באופן אוטומטי.המסוף
נכנסים לדף Workflows במסוף Google Cloud :
כדי ליצור תהליך עבודה, לוחצים על Create. כדי לעדכן תהליך עבודה קיים, לוחצים על השם שלו.
ברשימה Service account, לוחצים על Switch project.
בוחרים חשבון שירות מפרויקט אחר.
אם מוצגת בקשה, מקצים את התפקיד
roles/iam.serviceAccountUserבפרויקט של חשבון השירות.
gcloud
מקצים את התפקיד בפרויקט שמכיל את חשבון השירות:
gcloud projects add-iam-policy-binding \ SERVICE_ACCOUNT_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
או להקצות את התפקיד בחשבון השירות:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_ACCOUNT_PROJECT_ID:Google Cloud מזהה הפרויקט שמכיל את חשבון השירות. -
PRINCIPAL: מזהה של מנהל הפריסה של תהליך העבודה, בפורמטuser|group|serviceAccount:emailאוdomain:domain. לדוגמה:user:dana@example.comgroup:admins@example.comserviceAccount:my-service-account@example.comdomain:example.com
SERVICE_ACCOUNT_RESOURCE_NAME: השם המלא של המשאב של חשבון השירות, בפורמט הבא:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.comכאשר
SERVICE_ACCOUNT_NAMEהוא השם של חשבון השירות.
פורסים את תהליך העבודה באמצעות חשבון השירות בפרויקטים שונים.
אימות של חשבון השירות שמשויך לתהליך עבודה
אתם יכולים לבדוק איזה חשבון שירות משויך לתהליך עבודה מסוים.
המסוף
נכנסים לדף Workflows במסוף Google Cloud :
בדף Workflows, לוחצים על שם תהליך העבודה.
בדף Workflow details, לוחצים על הכרטיסייה Details.
בכרטיסייה Details מוצג חשבון השירות שמשויך לתהליך העבודה.
gcloud
מריצים את הפקודה gcloud workflows describe כדי לאחזר את תיאור תהליך העבודה:
gcloud workflows describe WORKFLOW_NAME \ --location=LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
WORKFLOW_NAME: השם של תהליך העבודה. -
LOCATION: האזור שבו נפרס תהליך העבודה (לדוגמה,us-central1).
הפלט אמור להיראות כך, והוא כולל את חשבון השירות המשויך:
createTime: '2020-06-05T23:45:34.154213774Z' name: projects/my-project/locations/us-central1/workflows/my-workflow serviceAccount: projects/my-project/serviceAccounts/012345678901-compute@developer.gserviceaccount.com sourceContents: [...]