בדף הזה מוסבר איך אפשר ליישם את העיקרון של הרשאות מינימליות על ידי מתן גישה למשאבים ספציפיים ב-Compute Engine, במקום מתן גישה למשאב הורה כמו פרויקט, תיקייה או ארגון.
כדי להעניק גישה למשאב, מגדירים מדיניות של ניהול זהויות והרשאות גישה (IAM) למשאב. המדיניות מקשרת חבר אחד או יותר, כמו משתמש או חשבון שירות, לתפקיד אחד או יותר. כל תפקיד מכיל רשימה של הרשאות שמאפשרות לחבר בקבוצה ליצור אינטראקציה עם המשאב.
אם מעניקים גישה למשאב אב (לדוגמה, לפרויקט), מעניקים באופן מרומז גישה לכל משאבי הצאצאים שלו (לדוגמה, לכל המכונות הווירטואליות באותו פרויקט). כדי להגביל את הגישה למשאבים, מומלץ להגדיר מדיניות IAM למשאבים ברמה נמוכה יותר, במקום ברמת הפרויקט או ברמה גבוהה יותר.
מידע כללי על הענקה, שינוי וביטול של גישה למשאבים שלא קשורים ל-Compute Engine, למשל הענקת גישה ל Cloud de Confiance by S3NS פרויקט, זמין במאמר הענקה, שינוי וביטול של גישה למשאבים בחומרי העזר של IAM.
לפני שמתחילים
- סקירה כללית על IAM
- קוראים את הסקירה הכללית על בקרת הגישה ב-Compute Engine.
- חשוב להכיר את התפקידים ב-IAM ל-Compute Engine .
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Cloud de Confiance כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Cloud de Confiance by S3NS
gcloud
-
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init
-
- הגדרת אזור ותחום כברירת מחדל
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לניהול הגישה למשאבי Compute Engine, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין של Compute (roles/compute.admin) במשאב.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות לניהול הגישה למשאבי Compute Engine. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לנהל את הגישה למשאבי Compute Engine, נדרשות ההרשאות הבאות:
-
כדי להעניק או לבטל גישה למשאבים:
-
compute.projects.getבפרויקט -
compute.RESOURCE_TYPE.getבמשאב -
compute.RESOURCE_TYPE.getIamPolicyבמשאב -
compute.RESOURCE_TYPE.setIamPolicyבמשאב
-
-
כדי לבדוק את ההרשאות של מבצע הקריאה:
compute.RESOURCE_TYPE.getIamPolicyבמשאבמחליפים את RESOURCE_TYPE במשאב שרוצים לנהל את הגישה אליו. לדוגמה,
instances, instanceTemplatesאוimages.
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
משאבים נתמכים
כדי לראות רשימה של משאבי Compute Engine שתומכים בבקרת גישה ברמת המשאב, אפשר לעיין במאמר בנושא סוגי משאבים שמקבלים מדיניות IAM ולסנן לפי Compute Engine.
במשאבים אחרים של Compute Engine שלא תומכים בבקרת גישה ברמת המשאב, צריך לנהל את הגישה למשאבים האלה ברמת הפרויקט, התיקייה או הארגון. מידע על ארגונים, תיקיות או פרויקטים זמין במאמר היררכיית המשאבים.
הענקת גישה למשאבי Compute Engine
חשבון משתמש, כמו משתמש או חשבון שירות, יכול לגשת למשאבי Compute Engine. זהות היא מאפיין של חשבון משתמש. הזהות של גורם מרכזי מיוצגת בדרך כלל על ידי כתובת אימייל שמשויכת לחשבון.
לפני שאתם נותנים למשתמשים תפקידים ב-IAM (הפלטפורמה לניהול זהויות והרשאות גישה) במשאב מסוים, כדאי לבדוק אילו תפקידים אפשר לתת במשאב הזה. מידע נוסף זמין במאמר איך בודקים אילו תפקידים אפשר לתת במשאבים.
כדי להעניק הרשאה לגישה למשאבים ספציפיים ב-Compute Engine, מגדירים מדיניות IAM למשאב.
המסוף
- במסוף Cloud de Confiance , נכנסים לדף המשאב הרלוונטי שרוצים להוסיף לו הרשאות.
- למכונות וירטואליות, נכנסים לדף של המכונות הווירטואליות.
- לדיסקים אזוריים ולדיסקים של תחום מוגדר, עוברים אל הדף Disks.
- כדי לראות את התמונות, עוברים אל הדף 'תמונות'.
- לתמונות, עוברים אל דף התמונות.
- לתבניות מכונה, נכנסים לדף Instance templates.
- לגבי תמונות מכונה, אפשר לעבור אל הדף בנושא תמונות מכונה.
- להזמנות, עוברים אל דף ההזמנות.
- לשרתים לדייר יחיד, עוברים אל הדף 'שרתים לדייר יחיד'.
- מסמנים את תיבות הסימון לצד המשאבים שרוצים לעדכן.
- משלימים את השלבים בדף המשאבים.
- למכונות וירטואליות, לוחצים על הרשאות.
- לכל שאר המשאבים, מבצעים את הפעולות הבאות:
- בודקים אם חלונית המידע מוצגת. אם היא לא מוצגת, לוחצים על Show info panel.
- לוחצים על הכרטיסייה Permissions (הרשאות).
- לוחצים על Add principal.
- מוסיפים את הזהות של החשבון הראשי ובוחרים את התפקיד הנדרש.
- כדי לשמור את השינויים, לוחצים על שמירה.
gcloud
כדי להעניק תפקיד לחשבון ראשי במשאב, משתמשים בפקודת המשנה add-iam-policy-binding של המשאב עם הדגלים --member ו---role.
gcloud compute RESOURCE_TYPE add-iam-policy-binding RESOURCE_NAME \
--member='PRINCIPAL' \
--role='ROLE'
מחליפים את מה שכתוב בשדות הבאים:
-
RESOURCE_TYPE: סוג המשאב. הערכים התקפים כוללים:disksimagesinstancesinstance-templatesmachine-imagesreservationssole-tenancy node-groupssole-tenancy node-templatessnapshots
-
RESOURCE_NAME: שם המשאב. לדוגמה,my_instance. -
PRINCIPAL: זהות תקפה של חשבון המשתמש שרוצים להקצות לו את התפקיד. הערך צריך להיות בפורמטuser|group|serviceAccount:EMAIL_ADDRESSאוdomain:DOMAIN_ADDRESS. לדוגמה:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
-
ROLE: התפקיד שרוצים להקצות לחשבון המשתמש הזה.
אם אתם מעניקים גישה למשאב שנמצא בתצוגה מקדימה, צריך להשתמש בפקודה gcloud beta compute.
REST
כדי לשנות מדיניות IAM באמצעות ה-API, צריך לבצע את הפעולות הבאות:
קוראים את המדיניות הקיימת באמצעות ה-method
getIamPolicyשל המשאב. לדוגמה, בקשת ה-HTTP הבאה קוראת את מדיניות IAM של מכונה וירטואלית:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:getIamPolicy
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שאליו שייכת המכונה הווירטואלית. -
ZONE: האזור של המכונה הווירטואלית. למשאבים אזוריים או גלובליים, מחליפים אתzones/ZONEב-regions/REGIONאו ב-global. -
VM_NAME: השם של מופע ה-VM.
Compute Engine מחזיר את המדיניות הנוכחית בתגובה.
-
עורכים את המדיניות באמצעות כלי לעריכת טקסט כדי להוסיף או להסיר חשבונות משתמשים ואת התפקידים שמשויכים אליהם. לדוגמה, כדי להקצות את התפקיד
compute.adminלכתובת email@example.com, מוסיפים את הקישור החדש הבא למדיניות:{ "members": [ "user:email@example.com" ], "role":"roles/compute.admin" }כותבים את המדיניות המעודכנת עם
setIamPolicy():POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שאליו שייכת המכונה הווירטואלית. -
ZONE: האזור של המכונה הווירטואלית. למשאבים אזוריים או גלובליים, מחליפים אתzones/ZONEב-regions/REGIONאו ב-global. -
VM_NAME: השם של מופע ה-VM.
בגוף הבקשה, מציינים את מדיניות ה-IAM המעודכנת מהשלב הקודם.
-
ביטול הגישה למשאבים
כשיטה מומלצת, אחרי שחשבונות משתמש כבר לא צריכים גישה למשאבי Compute Engine, כדאי לשלול את הגישה שלהם.
המסוף
- במסוף Cloud de Confiance , נכנסים לדף המשאב הרלוונטי שרוצים להוסיף לו הרשאות.
- למכונות וירטואליות, נכנסים לדף של המכונות הווירטואליות.
- לדיסקים אזוריים ולדיסקים של תחום מוגדר, עוברים אל הדף Disks.
- כדי לראות את התמונות, עוברים אל הדף 'תמונות'.
- לתמונות, עוברים אל דף התמונות.
- לקבוצות של מכונות וירטואליות, עוברים אל הדף Instance groups.
- לתבניות מכונה, נכנסים לדף Instance templates.
- לגבי תמונות מכונה, אפשר לעבור אל הדף בנושא תמונות מכונה.
- להזמנות, עוברים אל דף ההזמנות.
- לשרתים לדייר יחיד, עוברים אל הדף 'שרתים לדייר יחיד'.
- מסמנים את תיבות הסימון לצד המשאבים שרוצים לעדכן.
- משלימים את השלבים בדף המשאבים.
- למכונות וירטואליות, לוחצים על הרשאות.
- לכל שאר המשאבים, מבצעים את הפעולות הבאות:
- בודקים אם חלונית המידע מוצגת. אם היא לא מוצגת, לוחצים על Show info panel.
- לוחצים על הכרטיסייה Permissions (הרשאות).
- לוחצים על כרטיס התפקיד שממנו רוצים להסיר חשבונות משתמש. הכרטיס יורחב ויוצגו בו המשתמשים עם התפקיד הזה במשאב הזה.
- כדי להסיר חשבון ראשי מהתפקיד, לוחצים על מחיקה.
gcloud
כדי להסיר תפקיד מחשבון ראשי עבור משאב, משתמשים בפקודת המשנה remove-iam-policy-binding של המשאב עם הדגלים --member ו---role.
gcloud compute RESOURCE_TYPE remove-iam-policy-binding RESOURCE_NAME \
--member='MEMBER' \
--role='ROLE'
מחליפים את מה שכתוב בשדות הבאים:
-
RESOURCE_TYPE: סוג המשאב. הערכים התקפים כוללים:disksimagesinstancesinstance-templatesmachine-imagesreservationssole-tenancy node-groupssole-tenancy node-templatessnapshots
-
RESOURCE_NAME: שם המשאב. לדוגמה,my_instance. -
PRINCIPAL: זהות תקפה של החשבון הראשי. הערך צריך להיות בפורמטuser|group|serviceAccount:EMAIL_ADDRESSאוdomain:DOMAIN_ADDRESS. לדוגמה:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
-
ROLE: התפקיד שממנו רוצים להסיר את חשבון המשתמש.
אם אתם מבטלים את הגישה למשאב שנמצא בגרסת Preview, צריך להשתמש בפקודה של gcloud beta compute.
REST
כדי לשנות מדיניות IAM ישירות דרך ה-API, צריך לבצע את הפעולות הבאות:
קוראים את המדיניות הקיימת באמצעות ה-method
getIamPolicyשל המשאב. לדוגמה, בקשת ה-HTTP הבאה קוראת את מדיניות IAM של מכונה וירטואלית:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:getIamPolicy
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שאליו שייכת המכונה הווירטואלית. -
ZONE: האזור של המכונה הווירטואלית. למשאבים אזוריים או גלובליים, מחליפים אתzones/ZONEב-regions/REGIONאו ב-global. -
VM_NAME: השם של מופע ה-VM.
Compute Engine מחזיר את המדיניות הנוכחית בתגובה.
-
עורכים את המדיניות באמצעות כלי לעריכת טקסט כדי להסיר חברים מהתפקידים המשויכים. לדוגמה, כדי להסיר את הכתובת email@example.com מהתפקיד
compute.admin:{ "members": [ "user:owner@example.com" ], "role":"roles/compute.admin" }כותבים את המדיניות המעודכנת עם
setIamPolicy():POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שאליו שייכת המכונה הווירטואלית. -
ZONE: האזור של המכונה הווירטואלית. למשאבים אזוריים או גלובליים, מחליפים אתzones/ZONEב-regions/REGIONאו ב-global. -
VM_NAME: השם של מופע ה-VM.
בגוף הבקשה, מציינים את מדיניות ה-IAM המעודכנת מהשלב הקודם.
-
בדיקה אם לפונקציית קריאה חוזרת (caller) יש הרשאות
אם אתם לא יודעים אילו הרשאות יש לזהות מסוימת, אתם יכולים להשתמש בשיטת testIamPermissions API כדי לבדוק אילו הרשאות זמינות לזהות.
ה-method מקבלת כתובת URL של משאב וסדרת הרשאות כפרמטרים של קלט, ומחזירה את סדרת ההרשאות שיש למשתמש ששלח את הקריאה. אפשר להשתמש בשיטה הזו בכל אחד מהמקורות הנתמכים.
בדרך כלל, testIamPermissions מיועד לשילוב עם תוכנה קניינית, כמו ממשק משתמש גרפי מותאם אישית. בדרך כלל לא מתקשרים אל testIamPermissions אם משתמשים ב- Cloud de Confianceישירות כדי לנהל הרשאות.
לדוגמה, אם אתם יוצרים ממשק משתמש גרפי (GUI) על בסיס Compute Engine API, ובממשק יש לחצן 'התחלה' להפעלת מכונה, תוכלו לקרוא ל-compute.instances.testIamPermissions() כדי לקבוע אם הלחצן צריך להיות מופעל או מושבת.
כדי לבדוק אם למבצע הקריאה יש הרשאות ספציפיות למשאב:
שולחים בקשה למשאב וכוללים בגוף הבקשה רשימה של הרשאות לבדיקה.
לדוגמה, במופע, אפשר לבדוק את
compute.instances.start,compute.instances.stopו-compute.instances.delete.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/testIamPermissions { "permissions": [ "compute.instances.start", "compute.instances.stop", "compute.instances.delete" ] }הבקשה מחזירה את ההרשאות שמופעלות עבור מבצע הקריאה.
{ "permissions": [ "compute.instances.start", "compute.instances.stop" ] }
שינוי הגישה למשאבים של כמה חברים
אם רוצים לשנות את הגישה למשאבי Compute Engine לכמה משתמשים בו-זמנית, כדאי לעיין בהמלצות בנושא שינוי מדיניות IAM באופן פרוגרמטי.