בקרת גישה קובעת למי יש הרשאה לגשת לשירותים ולמשאבים בפרויקט Google Cloud . ב-App Engine, יש כמה תרחישי שימוש נפרדים להגדרת בקרת גישה:
לתת לחברי הצוות גישה לפרויקט Google Cloud כדי שיוכלו להגדיר שירותים ולפרוס אפליקציות.
הענקת גישה לאפליקציה לשירותי Google Cloud, כמו Cloud Storage. כל שירותי הענן דורשים אימות והרשאה לכל קריאה ל-API, כולל קריאות מהאפליקציה שלכם ב-App Engine.
הענקת גישה למשתמשים למשאבים בפרויקט Google Cloud . תרחיש השימוש הזה לא נפוץ, אבל יכולים להיות מקרים שבהם האפליקציה שלכם צריכה לבקש גישה למשאב Cloud בשם משתמש. לדוגמה, יכול להיות שהאפליקציה שלכם תצטרך לגשת לנתונים ששייכים למשתמשים.
בדף הזה מובאת סקירה כללית על הגדרת בקרת גישה בכל תרחיש לדוגמה.
בסקירה הכללית על ניהול זהויות והרשאות גישה (IAM) מוסבר איך פועלת בקרת הגישה ב-Google Cloud Platform.
הענקת גישה לחברי צוות
כדי לתת למפתח גישה לפרויקט ב- Google Cloud , יוצרים את אחד מהפריטים הבאים או את שניהם:
חשבון משתמש, שמשויך לחשבון Google ומיועד לייצג אדם ספציפי בפרויקט.
אפשר להשתמש בחשבון משתמש כדי לבצע אימות מהכלים הבאים:
- מסוףGoogle Cloud
- Google Cloud CLI
- סביבות פיתוח משולבות (IDE) וכלי בנייה שמשתמשים ב-CLI של gcloud כדי לבדוק ולפרוס אפליקציות App Engine
חשבון שירות, שמייצג אפליקציה או תהליך ולא אדם. מומלץ להשתמש בחשבונות שירות בתהליכים אוטומטיים של בנייה, בדיקה ופריסה, במיוחד אם כמה מפתחים יכולים להריץ את התהליכים האלה.
אפשר להשתמש בחשבון שירות כדי לבצע אימות מהכלים הבאים:
- ה-CLI של gcloud
- סביבות פיתוח משולבות (IDE) וכלי בנייה שמשתמשים בכלי ה-CLI של gcloud כדי לבדוק ולפרוס אפליקציות App Engine
יצירת חשבון משתמש
פותחים את הדף IAM במסוף Google Cloud .
לוחצים על Select a project, בוחרים את הפרויקט ולוחצים על Open.
לוחצים על הוספה.
מזינים כתובת אימייל.
בוחרים תפקידים שמעניקים גישה לתכונות של App Engine.
אם המשתמש צריך גם גישה לשירותי ענן אחרים, בוחרים תפקידים שמעניקים גישה לשירותי ענן אחרים.
לוחצים על Save.
עכשיו המשתמש יכול להיכנס למסוף Google Cloud וגם לתת הרשאה ל-CLI של gcloud.
אפשר גם ליצור חשבונות משתמשים מ-gcloud, מה-API בארכיטקטורת REST או מספריות לקוח.
יצירת חשבון שירות
פותחים את הדף Service Accounts במסוף Google Cloud .
בוחרים את הפרויקט ולוחצים על פתיחה.
לוחצים על יצירת חשבון שירות.
מזינים שם לחשבון השירות. זה צריך להיות שם ידידותי למשתמש לתצוגה.
לוחצים על יצירה.
בוחרים תפקידים שמעניקים גישה לתכונות של App Engine.
אם חשבון השירות צריך גם גישה לשירותי ענן אחרים, בוחרים תפקידים שמעניקים גישה לשירותי ענן אחרים.
לוחצים על Continue.
אופציונלי: מציינים חשבונות משתמשים שיכולים לנהל את חשבון השירות. אפשר גם לציין חשבונות משתמשים שיכולים להשתמש בחשבון השירות כדי לגשת באופן עקיף לכל המשאבים שלחשבון השירות יש גישה אליהם.
לוחצים על Save.
מופיעה רשימה של חשבונות שירות קיימים.
אופציונלי: אם אתם צריכים להשתמש בחשבון השירות מחוץ ל-Google Cloud, פועלים לפי ההוראות ליצירת מפתח של חשבון שירות.
השלבים הבאים
- אם אתם משתמשים בחשבון השירות בתהליכי ה-build והפריסה האוטומטיים, אתם צריכים לתת הרשאה ל-CLI של gcloud באמצעות חשבון שירות.
- אם אתם משתמשים בחשבון השירות עם סביבת פיתוח משולבת (IDE), אתם צריכים לפעול לפי ההוראות שסופקו על ידי סביבת הפיתוח.
- אם אתם צריכים להשתמש בזהות ייחודית לגרסה של אפליקציית App Engine כשאתם ניגשים לשירותים אחרים או מבצעים משימות, אתם יכולים לציין חשבון שירות בניהול המשתמש ב-App Engine. Google Cloud
מתן גישה לאפליקציה לשירותי ענן
כל קריאה לשירות Cloud צריכה להיות מאומתת ומורשית, כולל קריאות מאפליקציית App Engine לשירותי Cloud אחרים כמו Cloud Storage.
כברירת מחדל, קריאות מאפליקציית App Engine לשירותים באותו פרויקט מקבלות אישור. כך פועל התהליך שמוגדר כברירת מחדל:
כדי להתחיל שיחות עם שירות Cloud, האפליקציה יוצרת אובייקט לקוח שמכיל את פרטי הכניסה ונתונים אחרים שהאפליקציה צריכה כדי ליצור אינטראקציה עם השירות. אם לא מציינים פרטי כניסה בבונה של הלקוח, הלקוח מחפש פרטי כניסה בסביבת האפליקציה.
הנה דוגמה ליצירת לקוח ל-Cloud Storage:
Go
Java
Node.js
PHP
Python
Ruby
- כברירת מחדל, הסביבה של האפליקציה מכילה פרטי כניסה מחשבון השירות שמוגדר כברירת מחדל ב-App Engine.
חשבון השירות הזה נוצר על ידי Google כשיוצרים אפליקציית App Engine, והוא מקבל הרשאות מלאות לניהול ולשימוש בכל שירותי Cloud ב Google Cloud פרויקט.
כדי לשנות את ברירת המחדל של התהליך הזה, אפשר לבצע אחת מהפעולות הבאות:
מגדירים את משתנה הסביבה
GOOGLE_APPLICATION_CREDENTIALS. אם המשתנה הזה מוגדר, שירותי Cloud משתמשים בפרטי הכניסה שצוינו במשתנה במקום בחשבון השירות שמוגדר כברירת מחדל.מציינים פרטי כניסה כשיוצרים מופע של אובייקט
Clientלשירות Cloud. לדוגמה, אם האפליקציה שלכם מתקשרת עם שירות Cloud בפרויקט אחר, יכול להיות שתצטרכו להעביר את פרטי הכניסה באופן ידני.
- אחסון פרטי הכניסה במיקום מאובטח כמו Firestore במצב Datastore (Datastore) ואחזור שלהם בזמן הריצה.
- שומרים את פרטי הכניסה בקוד, אבל מצפינים אותם באמצעות מאגר מפתחות, כמו Cloud KMS.
מידע נוסף על היתרונות של כל אחת מהגישות זמין במאמר בנושא בחירת פתרון לניהול סודות.
הענקת גישה למשתמשים למשאבי Cloud
אם רוצים שהאפליקציה תקרא נתוני משתמשים משירות אחר של Google, צריך להגדיר OAuth 2.0 לאפליקציות שרת אינטרנט. לדוגמה, אם אתם רוצים לשלוף נתונים של משתמש מ-Google Drive ולהעביר אותם לאפליקציה שלכם, אתם יכולים להשתמש ב-OAuth 2.0 לאפליקציות של שרתי אינטרנט כדי לשתף נתונים ספציפיים תוך שמירה על הפרטיות של נתונים אחרים, כמו שמות משתמשים וסיסמאות.
הענקת גישה ברמת הדומיין ב-Google Workspace
אם יש לכם דומיין Google Workspace (לשעבר G Suite), אדמין של הדומיין יכול לאשר לאפליקציה לגשת לנתוני משתמשים בשם המשתמשים בדומיין Google Workspace. לדוגמה, אפליקציה שמשתמשת ב-Google Calendar API כדי להוסיף אירועים ליומנים של כל המשתמשים בדומיין Google Workspace, תשתמש בחשבון שירות כדי לגשת ל-Google Calendar API בשם המשתמשים.
הרשאת חשבון שירות לגשת לנתונים בשם משתמשים בדומיין נקראת לפעמים 'הענקת הרשאות גישה ברמת הדומיין' לחשבון שירות. השיטה הזו עדיין משתמשת ב-OAuth 2.0, ודורשת מאדמין בדומיין Google Workspace להעניק לחשבון השירות הרשאה ברמת הדומיין.
ציון חשבון שירות
ב-App Engine אפשר להשתמש בשני סוגים של חשבונות שירות:
- חשבון שירות לכל גרסה: חשבון שירות שמוגדר כזהות של גרסה ספציפית של השירות שפרסתם. כשפורסים גרסה קיימת או גרסה חדשה, אפשר לציין חשבון שירות שישמש כזהות של הגרסה הזו. לדוגמה, אם גרסה מסוימת דורשת הרשאות ששונות מחשבון השירות שמוגדר כברירת מחדל ברמת האפליקציה, אפשר להקצות חשבון שירות שספציפי לגרסה הזו. מידע נוסף זמין במאמר הגדרת חשבונות שירות של App Engine.
חשבון שירות שמוגדר כברירת מחדל ברמת האפליקציה: אם לא מגדירים חשבון שירות לכל גרסה, Google Cloud משתמש בחשבון השירות שמוגדר כברירת מחדל ברמת האפליקציה לכל השירותים שמוצבים. כשיוצרים את האפליקציה, מקצים לה חשבון שירות שמוגדר כברירת מחדל ברמת האפליקציה. מידע נוסף זמין במאמר הקצאת חשבון שירות שמוגדר כברירת מחדל ברמת האפליקציה.
אם לא מקצים חשבון שירות שמוגדר כברירת מחדל ברמת האפליקציה,Google Cloud משתמשים בחשבון השירות שמוגדר כברירת מחדל של App Engine שנוצר אוטומטית (
PROJECT_ID@appspot.gserviceaccount.com).בהתאם להגדרות של מדיניות הארגון, יכול להיות שחשבון השירות שמוגדר כברירת מחדל יקבל אוטומטית את התפקיד 'עריכה' בפרויקט. אנחנו ממליצים מאוד להשבית את הענקת התפקיד האוטומטית על ידי החלת האילוץ
iam.automaticIamGrantsForDefaultServiceAccountsשל מדיניות הארגון. אם יצרתם את הארגון אחרי 3 במאי 2024, האילוץ הזה נאכף כברירת מחדל.אם משביתים את הענקת התפקיד האוטומטית, צריך לקבוע אילו תפקידים להעניק לחשבונות השירות שמוגדרים כברירת מחדל, ואז להעניק את התפקידים האלה בעצמכם.
אם לחשבון השירות שמוגדר כברירת מחדל כבר יש הרשאת עריכה, מומלץ להחליף את הרשאת העריכה בהרשאות עם פחות גישה.כדי לשנות את התפקידים בחשבון השירות בצורה בטוחה, כדאי להשתמש בסימולטור המדיניות כדי לראות את ההשפעה של השינוי, ואז לתת ולבטל את התפקידים המתאימים.