התחזות לחשבון שירות

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

התחזות שימושית כשרוצים לשנות את ההרשאות של משתמש בלי לשנות את המדיניות של ניהול הזהויות והרשאות הגישה (IAM). לדוגמה, אפשר להשתמש בהתחזות כדי לתת למשתמש גישה זמנית ברמה גבוהה יותר, או כדי לבדוק אם קבוצה מסוימת של הרשאות מספיקה למשימה. אפשר גם להשתמש בהתחזות כדי לפתח באופן מקומי אפליקציות שיכולות לפעול רק כחשבון שירות, או כדי לאמת אפליקציות שפועלות מחוץ ל- Google Cloud.

Google Cloud התחזות לחשבון שירות דומה לשיטות של Amazon Web Services‏ (AWS) Security Token Service API, כמו AssumeRole.

איך פועלת התחזות לחשבון שירות

התחזות לחשבון שירות תמיד כוללת שתי זהויות: חשבון משתמש מאומת וחשבון השירות שאליו הוא מתחזה. כדי להתחזות לחשבון השירות, חשבון המשתמש המאומת מקבל אסימון לחשבון השירות, ואז משתמש באסימון הזה כדי לבצע אימות כחשבון השירות.

יש כמה דרכים להתחזות לחשבון שירות:

  • מגדירים את הדגל --impersonate-service-account או את המאפיין impersonate-service-account כשמריצים פקודה של Google Cloud CLI. כשמריצים פקודה ב-CLI של gcloud עם ההגדרה הזו, ה-CLI של gcloud יוצר פרטי כניסה לטווח קצר לחשבון השירות, ואז מריץ את הפקודה עם פרטי הכניסה האלה.

    אפשר גם להשתמש בדגל --impersonate-service-account כשמגדירים את Application Default Credentials. ההגדרה הזו מאפשרת לספריות לקוח שתומכות בהתחזות להתחזות לחשבון השירות באופן אוטומטי.

  • יוצרים פרטי כניסה לטווח קצר באמצעות Service Account Credentials API, ואז משתמשים בפרטי הכניסה האלה כדי לאמת בקשת API.

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

  • משתמשים בקובץ תצורה של פרטי כניסה כדי להגדיר אפליקציה חיצונית להתחזות לחשבון שירות. האפשרות הזו זמינה רק לאפליקציות שמשתמשות ב-איחוד זהויות של עומסי עבודה.

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

אם חשבון משתמש ניגש למשאבים בזמן שהוא מתחזה לחשבון שירות, ברוב יומני הביקורת יופיעו גם הזהות של חשבון המשתמש וגם הזהות של חשבון השירות שאליו הוא מתחזה. למידע נוסף, ראו פירוש של יומני ביקורת.

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

אימות ללא התחזות

יש כמה דרכים שבהן עומס עבודה או משתמש יכולים לבצע אימות כחשבון שירות בלי להתחזות לחשבון השירות:

  • עומס עבודה משתמש בחשבון שירות מצורף כדי לבצע אימות ל-Google APIs. במקרה הזה, חשבון השירות המצורף משמש כזהות של עומס העבודה, והוא הזהות המאומתת היחידה שמעורבת בבקשה.

    מידע על אימות של עומסי עבודה ב- Google Cloudזמין במאמר זהויות לעומסי עבודה.

  • חשבון משתמש משתמש במפתח של חשבון שירות כדי לבצע אימות כחשבון שירות. כשמשתמשים במפתח של חשבון שירות לצורך אימות כחשבון שירות, יש רק זהות מאומתת אחת: הזהות של חשבון השירות. מאחר שמדובר בזהות אחת בלבד, השימוש במפתח הוא לא התחזות לחשבון שירות.

במקרים כאלה, ביומני הביקורת מתועדת רק הזהות של חשבון השירות. הם לא מתעדים זהויות אחרות – למשל, הזהויות של המשתמשים שהריצו קוד בעומס העבודה, או הזהויות של האנשים שהשתמשו במפתח של חשבון השירות כדי לבצע אימות. כתוצאה מכך, שימוש במפתחות של חשבונות שירות או מתן הרשאה למפתחים להריץ קוד במשאבים עם הרשאות מיוחדות – לדוגמה, סשן SSH למכונה וירטואלית – עלול ליצור סיכונים של העלאת הרשאות ושל אי-יכולת להכחיש פעולות.

ההרשאות הנדרשות

כדי להתחזות לחשבון שירות, צריך את ההרשאה iam.serviceAccounts.getAccessToken. ההרשאה הזו כלולה בתפקידים כמו יצירת אסימונים בחשבון שירות (roles/iam.serviceAccountTokenCreator).

מידע נוסף על התפקידים הנדרשים להתחזות זמין במאמר תפקידים לאימות חשבון שירות.

תרחישי שימוש בהתחזות לחשבון שירות

התחזות לחשבון שירות שימושית כשצריך לבצע משימות כמו:

  • הענקת גישה זמנית ברמה גבוהה יותר למשתמש
  • בדיקה אם קבוצה ספציפית של הרשאות מספיקה לביצוע משימה
  • פיתוח מקומי של אפליקציות שיכולות לפעול רק כחשבון שירות
  • אימות אפליקציות חיצוניות

הענקת גישה זמנית עם הרשאות גבוהות

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

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

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

בדיקת ההרשאות

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

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

במאמר שימוש בהתחזות לחשבון שירות מוסבר איך מתחזים לחשבונות שירות.

פיתוח אפליקציות באופן מקומי

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

במקרים כאלה, מומלץ להשתמש בהתחזות לחשבון שירות. שימוש בהתחזות לחשבון שירות מאפשר לכם להימנע משימוש במפתחות של חשבונות שירות, שיוצרים סיכון אבטחה נוסף.

במאמר התחזות לחשבון שירות מוסבר איך מתחזים לחשבונות שירות כדי לפתח אפליקציות.

אימות אפליקציות חיצוניות

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

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

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

המאמרים הבאים