בקרת גישה קובעת למי יש הרשאה לגשת לשירותים ולמשאבים בפרויקט Google Cloud . ב-App Engine, יש כמה תרחישי שימוש נפרדים להגדרת בקרת גישה:
הענקת גישה לחברי הצוות לפרויקט Google Cloud כדי שיוכלו להגדיר שירותים ולפרוס אפליקציות.
מתן גישה לאפליקציה לשירותי Google Cloud, כמו Cloud Storage. כל שירותי Cloud דורשים אימות והרשאה לכל קריאה ל-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
C#
- כברירת מחדל, הסביבה של האפליקציה מכילה פרטי כניסה מחשבון השירות שמוגדר כברירת מחדל ב-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, האילוץ הזה נאכף כברירת מחדל.אם משביתים את הענקת התפקיד האוטומטית, צריך לקבוע אילו תפקידים להעניק לחשבונות השירות שמוגדרים כברירת מחדל, ואז להעניק את התפקידים האלה בעצמכם.
אם לחשבון השירות שמוגדר כברירת מחדל כבר יש את התפקיד Editor, מומלץ להחליף את התפקיד הזה בתפקידים עם פחות הרשאות.כדי לשנות את התפקידים בחשבון השירות בצורה בטוחה, כדאי להשתמש בסימולטור המדיניות כדי לראות את ההשפעה של השינוי, ואז להעניק ולבטל את התפקידים המתאימים.