במאמר הזה מוסבר על חשבונות שירות שמשמשים להפעלת Cloud Deploy ולקריאה ל-Cloud Deploy כדי להפעיל פעולות שונות.
ב-Cloud Deploy נעשה שימוש בחשבונות השירות הבאים:
סוכן השירות של Cloud Deploy
Cloud Deploy משתמש בחשבון השירות הזה כדי ליצור אינטראקציה עם הפרויקט. אי אפשר להחליף את סוכן השירות הזה בחשבון שירות חלופי, אבל אפשר לערוך את ההרשאות שלו, למשל כשמשתמשים במשאבים מחוץ לפרויקט (כמו חשבון שירות או מאגר פרטי של עובדי Cloud Build).
חשבון השירות של שירות ההפעלה של Cloud Deploy
חשבון השירות הזה משמש את Cloud Deploy להפעלת פעולות של עיבוד ופריסה ב-Cloud Build. לחשבון הזה צריכות להיות הרשאות מספיקות לקריאה ולכתיבה בקטגוריה של Cloud Storage ולגישה ליעדי פריסה.
חשבון השירות שמוגדר כברירת מחדל להרצה הוא חשבון השירות של Compute Engine שמוגדר כברירת מחדל. אפשר לציין חשבון שירות חלופי בהגדרת היעד.
חשבון השירות של שירות האוטומציה Cloud Deploy
זהו חשבון השירות שמשמש את Cloud Deploy לביצוע אוטומציות. זה יכול להיות חשבון השירות שמוגדר כברירת מחדל להרצת הפונקציה או חשבון שירות אחר. מידע נוסף על חשבון השירות הזה זמין במאמר חשבון השירות של האוטומציה.
במאמר יצירה וניהול של חשבונות שירות מוסבר איך לערוך את ההרשאות של חשבון שירות ואיך ליצור חשבון שירות חלופי.
סוכן שירות של Cloud Deploy
סוכן השירות של Cloud Deploy הוא חשבון שירות שמשמש את Cloud Deploy ליצירת אינטראקציה עם שירותים אחרים של Google Cloudש-Cloud Deploy מסתמך עליהם. השירותים האלה כוללים את Cloud Build, Pub/Sub ויומני ביקורת של Cloud.
השם של חשבון השירות הזה נקבע לפי התבנית הבאה:
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
אם החשבון הזה יוסר מהפרויקט, תוכלו להוסיף אותו מחדש:
פותחים את הדף IAM במסוף Google Cloud :
בוחרים באפשרות Include Google-provided role grants כדי להציג את סוכן השירות.
אם סוכן השירות מוצג, אפשר לדלג על שאר השלבים.
אם סוכן השירות לא מוצג, לוחצים על Grant access (הענקת גישה).
בשדה New principals, מזינים את הכתובת של סוכן השירות בפורמט הבא:
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
לוחצים על הרשימה הנפתחת Select a role ובוחרים באפשרות Cloud Deploy Service Agent.
לוחצים על Save.
חשבון השירות של שירות הביצוע של Cloud Deploy
כברירת מחדל, Cloud Deploy פועל באמצעות חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.
השם של חשבון השירות הזה נקבע לפי התבנית הבאה:
[project-number]-compute@developer.gserviceaccount.com
יכול להיות שלחשבון השירות הזה יש הרשאות רחבות כי הוא משמש הרבה מוצרים. השיטה המומלצת היא לשנות את סביבת ההפעלה כך ש-Cloud Deploy יפעל כחשבון שירות אחר.
אפשר לשנות את חשבון השירות להרצת כל יעד באמצעות המאפיין executionConfigs.privatePool.serviceAccount או המאפיין executionConfigs.defaultPool.serviceAccount בהגדרת היעד.
לכל חשבון שירות שתגדירו למאפיינים האלה צריך להיות התפקיד Cloud Deploy Runner בפרויקט Cloud Deploy. אם לחשבון השירות שמוגדר כברירת מחדל להרצת התהליך אין את התפקיד הזה, מריצים את הפקודה הבאה:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:$(gcloud projects describe PROJECT_ID \
--format="value(projectNumber)")-compute@developer.gserviceaccount.com \
--role="roles/clouddeploy.jobRunner"
בנוסף, לחשבון השירות יהיו דרושות הרשאות ספציפיות לסביבת זמן הריצה כדי לפרוס אותה. ב-Google Kubernetes Engine, אפשר לבחור בתפקידים Container Developer ו-Service Account User. לדוגמה, ב-Cloud Run, אפשר לבחור את התפקידים Cloud Run Developer וService Account User. יכול להיות שזמני ריצה אחרים שמשמשים את היעדים בהתאמה אישית ידרשו הרשאות משלהם.
אילו חשבונות שירות צריך ליצור
אם אתם בוחרים לא להשתמש בחשבון השירות שמוגדר כברירת מחדל להצגה ולפריסה, אתם צריכים ליצור חשבון שירות חלופי אחד או יותר. אלה חשבונות שירות ש-Cloud Deploy פועל דרכם, והם מוגדרים בהגדרות היעד.
אחת הסיבות ליצור יותר מחשבון שירות אחד היא כדי להקצות חשבון שירות ספציפי או חשבונות שירות ספציפיים לפריסה ליעדים מוגבלים, כמו יעד ייצור.
אחת הגישות האפשריות היא להשתמש בחשבונות שירות נפרדים לכל צינור העברה. כל חשבון שירות כזה יכלול תפקידים עם הרשאות מספיקות לעיבוד ולפריסה.
כשפורסים ב-Google Kubernetes Engine, אפשר להגביל את חשבון השירות למרחב שמות אחד.
שימוש בחשבונות שירות מפרויקט אחר
בסביבת ההפעלה, אפשר לציין חשבון שירות שנמצא בפרויקט אחר מזה שבו יוצרים את היעד:
בפרויקט שבבעלותו חשבון השירות, מפעילים את מדיניות הארגון בנושא חשבונות שירות בין פרויקטים.
נותנים לסוכן השירות (
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com) של Cloud Deploy את ההרשאהiam.serviceAccounts.actAsלחשבון השירות.במקרה הזה,
project-numberהוא הפרויקט שבו יצרתם את היעד.אפשר גם להעניק את התפקיד
roles/iam.serviceAccountUser, שכולל את ההרשאה הזו, בפרויקט של כל חשבון שירות שנמצא בפרויקט אחר מזה שבו פועל Cloud Deploy.מקצים לסוכן השירות של Cloud Build (
service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com) את התפקידroles/iam.serviceAccountTokenCreator.במקרה הזה,
project-numberהוא הפרויקט שבו יצרתם את היעד, והתפקיד הזה מוענק בפרויקט של חשבון השירות.צריך להעניק את התפקיד הזה לכל חשבון שירות שמוגדר בסביבת ההפעלה של יעד, אם חשבון השירות הזה נמצא בפרויקט אחר מזה שבו פועל Cloud Deploy.
מקצים למבצע הקריאה של
gcloud deploy releases createו-gcloud deploy rollouts createאת ההרשאהiam.serviceAccounts.actAsבחשבון השירות, או את התפקידroles/iam.serviceAccountUser.
ההרשאות הנדרשות
לחשבון השירות שמשמש לעיבוד ההגדרות צריכות להיות הרשאות מספיקות לגישה לקטגוריה של Cloud Storage שבה מאוחסנים המשאבים של Cloud Deploy (צינורות העברה, גרסאות, השקות).
התפקיד
roles/clouddeploy.jobRunnerכולל את כל ההרשאות שחשבון השירות של שירות העיבוד (privatePoolאוdefaultPool) צריך.לחשבון השירות שמשמש לפריסה צריכות להיות הרשאות מספיקות לפריסה באשכול היעד, והרשאה לגשת לקטגוריה של Cloud Storage.
לחשבון השירות שמבצע קריאה ל-Cloud Deploy כדי ליצור גרסת הפצה צריך להיות מוקצה התפקיד
clouddeploy.releaser. בנוסף, לחשבון השירות צריכה להיות ההרשאהiam.serviceAccount.actAsלהשתמש בחשבון השירות שמציג את המניפסטים (לדוגמה, באמצעות התפקידroles/iam.serviceAccountUser).לחשבון השירות שמבצע קריאה ל-Cloud Deploy כדי להעלות גרסה או ליצור
rolloutצריכה להיות ההרשאהiam.serviceAccount.actAsלהשתמש בחשבון השירות שמבצע פריסה ליעדים (לדוגמה, באמצעות התפקידroles/iam.serviceAccountUser).לחשבון השירות שהוגדר עבור אוטומציה צריכה להיות הרשאה להריץ את הפעולות שמבוצעות באופן אוטומטי. מידע נוסף
חשבון השירות של האוטומציה
אתם יכולים להגדיר פעולות אוטומטיות בפריט תוכן. Cloud Deploy מפעיל את האוטומציות האלה באמצעות חשבון השירות של האוטומציה, שיכול להיות חשבון השירות שמוגדר כברירת מחדל להרצת האוטומציה, חשבון שירות אחר שמוגדר להרצת האוטומציה או חשבון שירות אחר.
מידע נוסף על חשבון השירות של האוטומציה