שינוי בחשבון השירות שמוגדר כברירת מחדל ב-Cloud Build

מערכת Cloud Build בוחרת באופן אוטומטי את חשבון השירות של Cloud Build כדי להפעיל בשמכם את גרסאות ה-build, אלא אם אתם משנים את ההתנהגות הזו. יכול להיות שלחשבון השירות שמוגדר כברירת מחדל יש הרשאות רחבות מדי לתרחיש השימוש שלכם, כמו גישה לכל קטגוריה של Cloud Storage בפרויקט.

במהלך כמה שבועות במאי וביוני 2024, השתנה אופן השימוש בחשבונות שירות ב-Cloud Build בפרויקטים חדשים. השינויים האלה ישפרו את מצב ברירת המחדל של אבטחת הלקוחות שלנו בעתיד. אפשר לבטל את ההצטרפות לשינויים האלה על ידי הגדרת אילוץ המדיניות של הארגון.

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

אחרי השינוי הזה, חשבון השירות שמוגדר כברירת מחדל ב-Cloud Build הוא חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.

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

  • פרויקטים ללא ארגון. אם תפעילו את ה-build הראשון בפרויקט אחרי השינוי, הפרויקט הזה ישתמש בחשבון השירות של Compute Engine כברירת מחדל עבור גרסאות build שנשלחות באמצעות Cloud Build API או Google Cloud CLI. בפרויקטים האלה לא תהיה אפשרות להשתמש בחשבון השירות מדור קודם של Cloud Build, אבל אפשר יהיה להשתמש בחשבון שירות שצוין על ידי המשתמש.

  • פרויקטים עם ארגון. אם מריצים את הבנייה הראשונה בפרויקט אחרי השינוי, הפרויקט ישתמש בחשבון השירות של Compute Engine כברירת מחדל לבנייות שנשלחות באמצעות Cloud Build API או Google Cloud CLI. אתם יכולים להשתמש בחשבון שירות שצוין על ידי המשתמש או לבטל את השינוי על ידי הפעלת חשבון השירות של Cloud Build בארגון.

  • פרויקטים קיימים שלא משויכים לארגון. אם הפעלתם את ה-build הראשון בפרויקט לפני השינוי, הפרויקט ימשיך לפעול לפי ההתנהגות הקודמת, וישתמש בחשבון השירות הקודם של Cloud Build כברירת מחדל לכל ה-builds. אתם יכולים להמשיך להשתמש בחשבון שירות שהוגדר על ידי המשתמש, על ידי בחירה בחשבון השירות של Compute Engine או יצירת חשבון משלכם.

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

  • טריגרים. תצטרכו לציין חשבון שירות כשיוצרים או מעדכנים טריגר, אלא אם חשבון השירות שמוגדר כברירת מחדל בפרויקט הוא חשבון השירות מדור קודם של Cloud Build.

  • השם של חשבון השירות ב-Cloud Build: חשבון השירות ב-Cloud Build יקרא מעכשיו חשבון השירות מדור קודם ב-Cloud Build.

מה צריך לעשות?

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

הארגון שלכם יכול לבטל את ההסכמה לשינויים האלה על ידי הגדרת אילוצים בוליאניים במדיניות הארגון:

  • לא נאכף: constraints/cloudbuild.disableCreateDefaultServiceAccount
  • לא נאכף: constraints/cloudbuild.useComputeServiceAccount
  • נאכפת: constraints/cloudbuild.useBuildServiceAccount

אם אתם לא יכולים או לא רוצים לשנות את מדיניות הארגון, ואתם מפעילים את Cloud Build API אחרי השינוי, אתם צריכים לוודא שלחשבון השירות שמשמש כברירת מחדל ב-Compute Engine או לחשבון השירות שיצרתם יש מספיק הרשאות ל-build שלכם. בפרט, למשתמש ששולח את ה-build צריכה להיות ההרשאה iam.serviceAccounts.actAs בחשבון השירות.

אילוצים חדשים של מדיניות הארגון

ב-Cloud Build הוספנו אילוצים בוליאניים חדשים של מדיניות הארגון כדי להגדיר:

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

כדי לשנות מדיניות ארגונית, אפשר להשתמש במסוף Google Cloud או ב-Google Cloud CLI:

מידע נוסף על מדיניות הארגון זמין במאמר מבוא לשירות של מדיניות הארגון.

הגדרת הזמינות של חשבון השירות מדור קודם ב-Cloud Build

כדי להגדיר את הזמינות של חשבון השירות מדור קודם של Cloud Build כשמפעילים את Cloud Build API, מערכת Cloud Build תציג את אילוץ המדיניות הבוליאני הבא:

  • לא נאכף: constraints/cloudbuild.disableCreateDefaultServiceAccount. מאפשרת שימוש בחשבון השירות מדור קודם של Cloud Build בפרויקטים חדשים.

  • האכיפה: constraints/cloudbuild.disableCreateDefaultServiceAccount. ההגדרה הזו משביתה את השימוש בחשבון השירות מדור קודם של Cloud Build בפרויקטים חדשים. זהו ערך ברירת המחדל של האילוץ.

המגבלה הזו משפיעה רק על פרויקטים שמריצים את ה-build הראשון שלהם אחרי שהשינוי הופעל. אם מחליטים לא לאכוף את מגבלת המדיניות, השינוי הוא קבוע לכל הפרויקטים שמריצים את ה-build הראשון שלהם כשההגדרה הזו פעילה. אי אפשר להשבית את הזמינות של חשבון השירות מדור קודם של Cloud Build בפרויקט שבו חשבון השירות היה זמין בעבר. עם זאת, גם אם חשבון השירות זמין, אפשר למנוע ממשתמשים בארגון להשתמש בו, כמו שמתואר בקטע הבא.

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

הגדרת חשבון השירות שמוגדר כברירת מחדל לארגון

כדי להגדיר את חשבון השירות שמשמש כברירת מחדל בארגון, אנחנו משיקים ב-Cloud Build שני אילוצים בוליאניים חדשים של מדיניות:

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

  • להשתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, גם לגרסאות build שנשלחות באופן ידני וגם לגרסאות build שמופעלות על ידי טריגר. צריך להגדיר את האילוצים הבאים במדיניות הארגון:

    • לא נאכף: constraints/cloudbuild.useBuildServiceAccount
    • נאכפת: constraints/cloudbuild.useComputeServiceAccount
  • משתמשים בחשבון שירות שהמשתמש מציין, גם עבור בנייה שנשלחת באופן ידני וגם עבור בנייה שמופעלת. זו בדרך כלל האפשרות הכי מאובטחת. צריך להגדיר את האילוצים הבאים במדיניות הארגון:

    • לא נאכף: constraints/cloudbuild.useBuildServiceAccount
    • לא נאכף: constraints/cloudbuild.useComputeServiceAccount
  • להמשיך להשתמש בחשבון השירות מדור קודם של Cloud Build. אם אתם מודעים לסיכוני האבטחה שכרוכים בכך, אתם יכולים להגדיר את האילוצים הבאים במדיניות הארגון:

    • ללא אכיפה: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • לא נאכף: constraints/cloudbuild.useComputeServiceAccount
    • נאכפת: constraints/cloudbuild.useBuildServiceAccount
  • להמשיך להשתמש בחשבון השירות מדור קודם של Cloud Build בפרויקטים שבהם הופעל Cloud Build API לפני השינוי, ולהתחיל להשתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine בפרויקטים חדשים. חשוב לוודא שהבנתם את ההשלכות על האבטחה, ולהגדיר את האילוצים הבאים במדיניות הארגון:

    • נאכפת: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • נאכפת: constraints/cloudbuild.useComputeServiceAccount
    • נאכפת: constraints/cloudbuild.useBuildServiceAccount

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

כדי לדעת באיזה חשבון שירות Cloud Build משתמש כברירת מחדל בפרויקט, אפשר להשתמש ב-Google Cloud CLI או ב-Cloud Build API:

‫CLI של gcloud

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

gcloud builds get-default-service-account

Cloud Build API

משתמשים ב-cURL כדי לשלוח קריאה ל-Cloud Build API:

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/defaultServiceAccount

מחליפים את ערכי ה-placeholder בערכים הבאים: