בקרת גישה

במאמר הזה מוסברים ההבדלים בין ניהול הזהויות והרשאות הגישה (IAM) לבין בקרת גישה מבוססת-תפקידים (RBAC) ב-Kubernetes ב-Google Kubernetes Engine, כדי לעזור לכם לנהל את הגישה למשאבים בפרויקט. כדי להבין את המסמך הזה, אתם צריכים להכיר את הנושאים הבאים:

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

ניהול הגישה למשאבי GKE

כשיוצרים פרויקט ב- Google Cloud , אתם המשתמשים היחידים בפרויקט. כברירת מחדל, למשתמשים אחרים אין גישה לפרויקט או למשאבים שלו, כולל למשאבי Google Kubernetes Engine ‏ (GKE). ב-GKE יש כמה אפשרויות לניהול הגישה למשאבים בפרויקט ובאשכולות שלו, באמצעות בקרת גישה מבוססת-תפקידים (RBAC).

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

  • ‫Kubernetes RBAC מובנה ב-Kubernetes, ומעניק הרשאות מפורטות לאובייקטים בתוך אשכולות Kubernetes. ההרשאות קיימות כאובייקטים מסוג ClusterRole או Role בתוך האשכול. אובייקטים מסוג RoleBinding מעניקים תפקידים למשתמשים ב- משתמשי Kubernetes, חשבונות משתמשים מאוחדים או חשבונות שירות של IAM.

    אם אתם משתמשים בעיקר ב-GKE וצריכים הרשאות מפורטות לכל אובייקט ופעולה באשכול, Kubernetes RBAC היא הבחירה הטובה ביותר.

  • IAM מנהל את המשאבים של Google Cloud , כולל אשכולות וסוגי אובייקטים בתוך אשכולות. ההרשאות מוקצות לחשבונות משתמשים ב-IAM.

    אין מנגנון להענקת הרשאות לאובייקטים ספציפיים של Kubernetes ב-IAM. לדוגמה, אתם יכולים לתת למשתמש הרשאת משתמש ליצור CustomResourceDefinitions ‏ (CRD), אבל אתם לא יכולים לתת לו הרשאה ליצור רק CustomResourceDefinition ספציפי אחד, או להגביל את היצירה למרחב שמות ספציפי או לאשכול ספציפי בפרויקט. תפקיד IAM מעניק הרשאות בכל האשכולות בפרויקט, או בכל האשכולות בכל הפרויקטים הצאצאים אם התפקיד מוחל ברמת התיקייה.

    אם אתם משתמשים בכמה רכיבי Google Cloud ואין לכם צורך לנהל הרשאות פרטניות ספציפיות ל-Kubernetes, ‏ IAM הוא בחירה טובה.

‫RBAC ב-Kubernetes

ל-Kubernetes יש תמיכה מובנית ב-RBAC שמאפשרת ליצור תפקידים מפורטים שקיימים בתוך אשכול Kubernetes. אפשר להגדיר את ההיקף של תפקיד לאובייקט ספציפי של Kubernetes או לסוג של אובייקט Kubernetes, והוא מגדיר אילו פעולות (שנקראות פעלים) התפקיד מעניק ביחס לאובייקט הזה. גם RoleBinding הוא אובייקט של Kubernetes, והוא מקצה תפקידים למשתמשים. משתמש ב-GKE יכול להיות:

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

IAM

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

ב-GKE, חשבון משתמש יכול להיות כל אחד מהבאים:

  • חשבון משתמש
  • חשבון שירות

מידע נוסף על השימוש ב-IAM כדי לשלוט בגישה ב-GKE זמין במאמר יצירת מדיניות הרשאות של IAM.

סוגי מדיניות IAM

אלה סוגי כללי המדיניות שנתמכים ב-IAM:

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

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

המלצות של IAM

כדי להקל על תרחישים נפוצים, כדאי להשתמש בתפקידים המוגדרים מראש הבאים ב-IAM:

  • Kubernetes Engine Cluster Viewer (roles/container.clusterViewer): DevOps, מהנדסים ומפתחי אפליקציות שצריכים רק להתחבר לאשכול.
  • אדמין של אשכול Kubernetes Engine ‏(roles/container.clusterAdmin): מנהלי פלטפורמה ומפעילי אשכולות שצריכים לנהל אשכול אחד או יותר בפרויקט Google Cloud .

ברשימה הזו מפורטים התפקידים המוגדרים מראש ב-IAM שזמינים ל-GKE.

כדי להריץ משימות מערכת כמו רישום ביומן ומעקב, GKE משתמש בחשבונות שירות של IAM שמקושרים לצמתים. לכל הפחות, לחשבונות השירות של הצמתים צריך להיות התפקיד חשבון השירות שמוגדר כברירת מחדל לצומת ב-Kubernetes Engine ‏(roles/container.defaultNodeServiceAccount) בפרויקט. כברירת מחדל, GKE משתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, שנוצר באופן אוטומטי בפרויקט, כחשבון השירות של הצומת.

אינטראקציה של IAM עם Kubernetes RBAC

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

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