Workflows משתמש בחשבונות שירות כדי לתת לזרימות עבודה גישה למשאבים של Google Cloud . חשבונות שירות הם חשבונות מיוחדים שמשמשים כזהות של גורם שאינו אדם, כמו פונקציה, אפליקציה או מכונה וירטואלית. הם מאפשרים לכם לאמת את הישויות האלה שהן לא אנשים. אפשר להתייחס לחשבון שירות גם כאל זהות וגם כאל משאב.
כשחושבים על חשבון שירות כזהות, אפשר להקצות לו תפקיד וכך לאפשר לו לגשת למשאב (כמו תהליך עבודה).
כשחושבים על חשבון שירות כמשאב, אפשר להעניק תפקידים למשתמשים אחרים כדי לגשת לחשבון השירות הזה או לנהל אותו.
חשבון שירות מזוהה באמצעות כתובת האימייל הייחודית שלו.
מידע נוסף על הגדרת אימות באפליקציית ייצור זמין במאמר אימות כחשבון שירות.
חשבון שירות המשמש כברירת מחדל
כל תהליך עבודה משויך לחשבון שירות של ניהול זהויות והרשאות גישה (IAM) בזמן יצירת תהליך העבודה. אם לא מציינים חשבון שירות במהלך יצירת תהליך העבודה, תהליך העבודה משתמש בחשבון השירות שמוגדר כברירת מחדל של Compute Engine לזיהוי. אתם יכולים לאמת את חשבון השירות שמשויך לזרימת עבודה. להסבר, ראו איך מאמתים את חשבון השירות שמשויך לזרימת עבודה.
מומלץ להשתמש בחשבון השירות שמוגדר כברירת מחדל רק לצורך בדיקות ופיתוח. בסביבות ייצור, מומלץ מאוד ליצור חשבון שירות חדש ולהקצות לו תפקיד IAM אחד או יותר שמכילים את ההרשאות המינימליות שנדרשות לניהול תהליכי עבודה.
התפקידים היחידים שנדרשים לחשבון השירות הם אלה שנדרשים לגישה למשאבים שמנוהלים על ידי תהליכי העבודה. מידע נוסף זמין במאמר הרשאות לחשבון שירות.
הרשאות של חשבון שירות
מאחר שחשבונות שירות הם זהויות, אפשר לתת לחשבון שירות גישה למשאבים בפרויקט על ידי הקצאת תפקיד, בדיוק כמו שמקצים תפקיד לכל חשבון משתמש אחר. לדוגמה, אם אתם רוצים לאפשר לתהליך העבודה לשלוח יומנים ל-Cloud Logging, אתם צריכים לוודא שחשבון השירות שמריץ את תהליך העבודה קיבל תפקיד שכולל את ההרשאה logging.logEntries.create (לדוגמה, התפקיד Logs Writer). באופן כללי, התפקידים שנדרשים לחשבון השירות תלויים במשאבים שאתם מתזמנים באמצעות תהליכי העבודה. כדי לדעת אילו תפקידים נדרשים, אפשר לעיין במסמכי המוצר של המשאב שמבצעים בו תזמור, או לבחור תפקידים מוגדרים מראש.
שימו לב: חשבון השירות של תהליך העבודה לא צריך את התפקיד workflows.invoker, אלא אם תהליך העבודה מפעיל את עצמו או תהליכי עבודה אחרים (כלומר, יוצר הפעלות חדשות של תהליך העבודה). מידע נוסף זמין במאמר בנושא הפעלת Workflows.
מידע נוסף על הקצאת תפקידים לחשבונות משתמשים, כולל לחשבונות שירות, מופיע במאמר ניהול הגישה לפרויקטים, לתיקיות ולארגונים.
צירוף חשבונות שירות למשאבים
כדי ליצור משאב ולצרף חשבון שירות, נדרשות הרשאות ליצירת המשאב וההרשאה לצרף את חשבון השירות למשאב.
אפשר לקבל את ההרשאה לצרף את חשבון השירות למשאב מכל תפקיד שכולל את ההרשאה iam.serviceAccounts.actAs.
מידע נוסף מופיע במאמר תפקידים לאימות חשבון שירות.
הפעלת פונקציות Cloud Run
בפונקציות Cloud Run, הרשאות ההפעלה זמינות באמצעות ניהול שירות Cloud Run הבסיסי. אם תהליך העבודה שלכם מפעיל שירות של פונקציות Cloud Run, אתם לא צריכים להקצות לחשבון השירות של המתקשר את התפקיד Cloud Functions Invoker (roles/cloudfunctions.invoker). במקום זאת, צריך להקצות את התפקיד Cloud Run Invoker (roles/run.invoker).
מידע נוסף זמין במאמר השוואה בין פונקציות של Cloud Run.
פריסת תהליך עבודה עם חשבון שירות בהתאמה אישית
אתם יכולים ליצור חשבון שירות משלכם בניהול המשתמשים כדי לקבל גמישות רבה יותר בשליטה בגישה לתהליך העבודה.
יוצרים את חשבון השירות ורושמים את השם שלו.
מקצים לחשבון השירות את התפקידים המתאימים, בהתאם למשאבים שהתהליך צריך לגשת אליהם כדי לבצע את העבודה.
צריך לוודא שלכל החשבונות הראשיים שפורסים תהליכי עבודה יש את היכולת לצרף את חשבון השירות למשאבים. אם אתם יצרתם את חשבון השירות, ההרשאה הזו מוענקת לכם באופן אוטומטי. מידע נוסף מופיע במאמר תפקידים לאימות חשבון שירות.
כדי לקבל את ההרשאה שנדרשת לצירוף חשבון שירות למשאב, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בפרויקט או בחשבון השירות. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.התפקיד המוגדר מראש הזה כולל את ההרשאה
iam.serviceAccounts.actAs, שנדרשת כדי לצרף חשבון שירות למשאב.יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים אחרים שמוגדרים מראש.
הקצאת התפקיד בפרויקט:
gcloud projects add-iam-policy-binding WORKFLOWS_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'
מחליפים את מה שכתוב בשדות הבאים:
-
WORKFLOWS_PROJECT_ID: מזהה הפרויקט שמכיל את משאבי תהליך העבודה. Google Cloud
PRINCIPAL: מזהה של מי שפרס את תהליך העבודה בפורמטuser|group|serviceAccount:emailאוdomain:domain. לדוגמה:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
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הוא שם חשבון השירות.
-
-
פורסים את תהליך העבודה באמצעות חשבון השירות בהתאמה אישית.
פריסת תהליך עבודה עם חשבון שירות בין פרויקטים
כברירת מחדל, אי אפשר ליצור חשבון שירות בפרויקט אחד ולצרף אותו למשאב בפרויקט אחר. בהוראות הבאות מוסבר איך לצרף חשבון שירות בפרויקט אחד לזרימת עבודה בפרויקט אחר. לאחר מכן תוכלו להשתמש בחשבון השירות בפרויקטים שונים כדי לפרוס תהליך עבודה.
אם חשבון השירות ומשאבי זרימת העבודה נמצאים בפרויקטים שונים, צריך לבצע את הפעולות הבאות מהפרויקט שבו נמצא חשבון השירות:
במסוף Google Cloud , נכנסים לדף מדיניות הארגון:
בודקים את מדיניות הארגון של הפרויקט ומוודאים שהאילוץ הבוליאני
iam.disableCrossProjectServiceAccountUsageלא נאכף בפרויקט. מידע נוסף זמין במאמר הפעלה של צירוף חשבונות שירות בין פרויקטים.יוצרים את חשבון השירות ורושמים את השם שלו.
מקצים לחשבון השירות את התפקידים המתאימים, בהתאם למשאבים שהתהליך צריך לגשת אליהם כדי לבצע את העבודה.
מקצים את התפקיד 'יצירת אסימונים בחשבון שירות' (
roles/iam.serviceAccountTokenCreator) לסוכן השירות של Workflows. כך סוכן השירות יכול לנהל את הגישה של חשבון השירות בין פרויקטים. סוכן שירות הוא הזהות של שירותGoogle Cloud מסוים בפרויקט מסוים. מידע נוסף מופיע במאמר בנושא סוכני שירות.המסוף
נכנסים לדף Workflows במסוף Google Cloud :
לוחצים על יצירה כדי ליצור תהליך עבודה, או בוחרים את השם של תהליך העבודה שרוצים לעדכן.
ברשימה 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 מספר הפרויקט שמכיל את משאבי זרימת העבודה.
צריך לוודא שלכל החשבונות הראשיים שפורסים תהליכי עבודה יש את היכולת לצרף את חשבון השירות למשאבים. אם אתם יצרתם את חשבון השירות, ההרשאה הזו מוענקת לכם באופן אוטומטי. מידע נוסף מופיע במאמר תפקידים לאימות חשבון שירות.
כדי לקבל את ההרשאה שנדרשת לצירוף חשבון שירות למשאב, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בפרויקט או בחשבון השירות. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.התפקיד המוגדר מראש הזה כולל את ההרשאה
iam.serviceAccounts.actAs, שנדרשת כדי לצרף חשבון שירות למשאב.יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים אחרים שמוגדרים מראש.
המסוף
נכנסים לדף Workflows במסוף Google Cloud :
לוחצים על יצירה כדי ליצור תהליך עבודה, או בוחרים את השם של תהליך העבודה שרוצים לעדכן.
ברשימה Service account (חשבון שירות), לוחצים על Switch project (החלפת פרויקט).
בוחרים חשבון שירות מפרויקט אחר.
אם מתבקשים, נותנים את התפקיד
roles/iam.serviceAccountUserבפרויקט.
gcloud
הקצאת התפקיד בפרויקט:
gcloud projects add-iam-policy-binding WORKFLOWS_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'
מחליפים את מה שכתוב בשדות הבאים:
-
WORKFLOWS_PROJECT_ID: מזהה הפרויקט Google Cloudשמכיל את משאבי זרימת העבודה -
PRINCIPAL: מזהה של מפיץ זרימת העבודה בפורמטuser|group|serviceAccount:emailאוdomain:domain. לדוגמה:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
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 במסוף Google Cloud :
בדף Workflows, לוחצים על שם תהליך העבודה.
בדף פרטי תהליך העבודה, לוחצים על הכרטיסייה פרטים.
מוצג חשבון השירות שמשויך לתהליך העבודה.
gcloud
פותחים טרמינל.
מזינים את הפקודה הבאה:
gcloud workflows describe MY_WORKFLOW
מחליפים את
MY_WORKFLOWבשם של זרימת העבודה.מוחזר תיאור מלא של תהליך העבודה, כולל חשבון השירות המשויך. לדוגמה:
createTime: '2020-06-05T23:45:34.154213774Z' name: projects/myProject/locations/us-central1/workflows/myWorkflow serviceAccount: projects/my-project/serviceAccounts/012345678901-compute@developer.gserviceaccount.com sourceContents: [...]