הגדרת קבוצות Google ל-RBAC

בדף הזה מוסבר איך להגדיר קבוצות Google כך שיפעלו עם בקרת גישה מבוססת-תפקידים (RBAC) ב-Kubernetes באשכולות Google Kubernetes Engine‏ (GKE).

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

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

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

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

כדי להשתמש ב-קבוצות Google ל-RBAC, צריך לבצע את המשימות הבאות:

  1. עמידה בדרישות.
  2. הגדרת קבוצות ב-Google
  3. הפעלת קבוצות Google ל-RBAC באשכול.
  4. הגדרת הרשאות RBAC והקצאתן לקבוצות Google.

דרישות

כדי להשתמש ב-קבוצות Google ל-RBAC, אתם צריכים גישה ל-Google Workspace או למהדורה כלשהי של Cloud Identity.

מגבלות

  • ‫GKE תומך במשתמשים שחברים בעד 2,000 קבוצות בקבוצת האבטחה, כולל חברויות מקוננות, עם קבוצות Google ל-RBAC.

הגדרת קבוצות Google

בשלבים הבאים מוסבר איך להגדיר קבוצה בקבוצות Google שתפעל עם RBAC:

  1. יוצרים קבוצה בדומיין בשם gke-security-groups. חובה לציין את השם gke-security-groups. מוודאים שההרשאה View Members (הצגת חברים) מסומנת עבור Group Members (חברים בקבוצה). פרטים נוספים מופיעים במאמר בנושא הגדרת הרשאות לניהול חברי קבוצה ותוכן.

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

  3. מוסיפים את הקבוצות כקבוצות מוטמעות לקבוצה gke-security-groups. לא להוסיף משתמשים ספציפיים כחברים ב-gke-security-groups.

מידע נוסף על ניהול קבוצות Google מופיע במרכז העזרה של קבוצות Google.

כדי לבדוק אם משתמש ספציפי יכול לבצע פעולה במשאב של אשכול, מערכת GKE בודקת אם המשתמש חבר בקבוצה שיש לה גישה, ואם הקבוצה הזו מוטמעת בקבוצה gke-security-groups.

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

הפעלת קבוצות Google ל-RBAC באשכולות

אפשר להפעיל קבוצות Google עבור RBAC באשכולות חדשים וקיימים של GKE Standard ו-Autopilot באמצעות Google Cloud CLI או מסוף Google Cloud .

יצירת אשכול חדש

gcloud

רגילה

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

gcloud container clusters create CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --security-group="gke-security-groups@DOMAIN"

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: השם של האשכול החדש.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.
  • DOMAIN: שם הדומיין של קבוצת gke-security-groups שיצרתם.

Autopilot

כדי ליצור אשכול חדש של Autopilot ולהפעיל את קבוצות Google עבור RBAC, מריצים את הפקודה הבאה:

gcloud container clusters create-auto CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --security-group="gke-security-groups@DOMAIN"

המסוף

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

  1. עוברים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. לוחצים על יצירה.

  3. לוחצים על הגדרה ליד מצב האשכול שבו רוצים להשתמש.

  4. במערכות Autopilot, מרחיבים את הקטע אפשרויות מתקדמות כדי לאתר את האפשרויות אבטחה.

  5. בקטע Cluster של אשכולות רגילים, לוחצים על Security.

  6. מסמנים את התיבה Enable Google Groups for RBAC.

  7. ממלאים את Security Group (קבוצת אבטחה) עם gke-security-groups@DOMAIN.

  8. לוחצים על יצירה.

עדכון של אשכול קיים

gcloud

כדי לעדכן אשכול קיים ולהפעיל קבוצות Google עבור RBAC, מריצים את הפקודה הבאה:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --security-group="gke-security-groups@DOMAIN"

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: שם האשכול.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.
  • DOMAIN: שם הדומיין של קבוצת gke-security-groups שיצרתם.

המסוף

כדי לעדכן אשכול קיים ולהפעיל את קבוצות Google עבור RBAC, מבצעים את השלבים הבאים:

  1. עוברים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. לוחצים על השם של האשכול שרוצים לעדכן.

  3. בכרטיסייה פרטים, מאתרים את הקטע אבטחה.

  4. בשדה קבוצות Google ל-RBAC, לוחצים על עריכת קבוצות Google ל-RBAC.

  5. מסמנים את התיבה Enable Google Groups for RBAC.

  6. ממלאים את Security Group (קבוצת אבטחה) עם gke-security-groups@DOMAIN.

  7. לוחצים על שמירת השינויים.

הגדרת הרשאות והקצאתן

אחרי שיוצרים ומגדירים קבוצות Google ל-RBAC, משתמשים בתפקידים ובקשרי תפקידים כדי להגדיר הרשאות RBAC ולהקצות את ההרשאות האלה לקבוצות Google שחברות בקבוצה gke-security-groups. הוראות מפורטות מופיעות במאמר הגדרת הרשאות והקצאתן.

אימות ההגדרה של קבוצות Google עבור RBAC

בקטעים הבאים מוסבר איך לוודא שההגדרה של קבוצות Google ל-RBAC בוצעה בהצלחה, באמצעות ה-CLI של gcloud או מסוףGoogle Cloud .

אימות באמצעות ה-CLI של gcloud

מריצים פקודת kubectl can-i כדי לבדוק אם אפשר לבצע פעולה ספציפית במשאב Kubernetes ספציפי. אפשר להשתמש בשיטה הזו כדי להפוך את הבדיקה של גישת RBAC לאוטומטית כחלק מתהליך העבודה של CI/CD.לדוגמה, הפקודה הבאה בודקת את הגישה של get למשאבי pods במרחב השמות dev:

kubectl auth can-i get pods \
    --namespace=dev \
    --as=USER \
    --as-group=GROUP

מחליפים את מה שכתוב בשדות הבאים:

  • USER: השם של המשתמש שרוצים להתחזות אליו, למשל gke-user@example.com. המשתמש שצוין צריך להיות חבר בקבוצה שלגביה בודקים את הגישה.
  • GROUP: השם של הקבוצה שרוצים להתחזות אליה, למשל gke-dev-users@example.com.

אם ל-USER יש גישה, הפלט הוא yes. אם לא, הפלט הוא no.

אימות באמצעות מסוף Google Cloud

אפשר גם לאמת את הגישה של RBAC על ידי הפעלת פקודת kubectl מול האשכול ובדיקת היומנים.

לפני שמתחילים

לפני שמתחילים, חשוב לוודא את הדברים הבאים:

  • לא הייתה לך אינטראקציה עם האשכול שרוצים לבדוק (לדוגמה, לא הפעלת פקודות kubectl) במשך שעה לפחות. האימות נשמר במטמון למשך שעה. אם תתנו לפרטי הכניסה שבמטמון להתפוגג, תוכלו לוודא שהבקשה תתועד כשהיא תתרחש.
  • אתם חברים לפחות באחת מהקבוצות שחברות בקבוצה gke-security-groups, ולכן חלק מהמידע על קבוצות Google מתועד.

הפעלת יומנים והרצת פקודת בדיקה

  1. מפעילים את רישום הגישה לנתונים בפרויקט Google Cloud . כדי להפעיל את הרישום ביומן:

    1. נכנסים לדף Audit Logs במסוף Google Cloud .

      כניסה לדף 'יומני ביקורת'

    2. בטבלה, בוחרים באפשרות Kubernetes Engine API.

    3. בתפריט סוג היומן, בוחרים באחת מהאפשרויות הבאות:

      • קריאה של אדמין
      • קריאת נתונים
      • כתיבת נתונים
    4. לוחצים על Save.

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

  2. מריצים פקודה באמצעות kubectl באשכול, כמו הפקודה הבאה:

    kubectl create ns helloworld
    
  3. מזינים שאילתה מותאמת אישית בדף Logs Explorer. כדי להריץ את השאילתה:

    1. נכנסים לדף Logs Explorer במסוף Google Cloud .

      כניסה לדף Logs Explorer

    2. לוחצים על החץ בתיבה תצוגה מקדימה של השאילתה בחלק העליון של הדף.

    3. בתיבה הנפתחת שמופיעה, מציינים את השאילתה הבאה:

      resource.type="k8s_cluster"
      resource.labels.location="CLUSTER_LOCATION"
      resource.labels.cluster_name="CLUSTER_NAME"
      protoPayload.resourceName="authorization.k8s.io/v1/selfsubjectaccessreviews"
      protoPayload.authenticationInfo.principalEmail="EMAIL_ADDRESS"
      

      מחליפים את מה שכתוב בשדות הבאים:

      • CLUSTER_LOCATION: האזור או התחום של האשכול.
      • CLUSTER_NAME: השם של האשכול.
      • EMAIL_ADDRESS: כתובת האימייל הרשומה של חשבון Google שלכם.
    4. לוחצים על Run Query (הרצת שאילתה). צריך להופיע לפחות תוצאה אחת. אם לא מוצגות תוצאות, כדאי להגדיל את טווח הזמן.

    5. בוחרים את האשכול שרוצים לבדוק.

    6. לוחצים על הרחבת שדות מקוננים.

    7. השדה labels.authorization.k8s.io/decision מכיל את התוצאה אם הבקשה אושרה או נדחתה.

    8. בשדה labels."authorization.k8s.io/reason" מופיע השם של קבוצת Google. הקבוצה הזו היא חברה ב-gke-security-group והיא ממופה לקבוצת Kubernetes שקובעת את הגישה.

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

ההשלכות של מחיקת קבוצות

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

  • gke-security-group: מערכת GKE משתמשת במזהה הייחודי של קבוצת gke-security-group כדי למצוא את הנושאים שמופיעים בהפניות במדיניות RBAC. אם תמחקו את הקבוצה הזו, כל ההרשאות שניתנו ל-קבוצות Google עבור RBAC ייכשלו.

    אם יוצרים מחדש את הקבוצה gke-security-group, צריך להפעיל מחדש את קבוצות Google עבור RBAC באשכול באמצעות השלבים שבקטע עדכון אשכול קיים. הפעלה מחדש של קבוצות Google עבור RBAC מעדכנת את האשכול לשימוש במזהה הקבוצה של קבוצת gke-security-group חדשה.

  • קבוצות חברים: אם מוחקים אחת מקבוצות החברים שהגדרתם עבור קבוצות Google ל-RBAC, כל ההתאמות של RBAC עבור הקבוצה הזו ייכשלו. כתוצאה מכך, כל חברי הקבוצה מאבדים את הגישה הרלוונטית.

    כדי לתקן מחיקה לא מכוונת של קבוצת חברים, יוצרים קבוצה חדשה עם בדיוק אותו שם כמו הקבוצה שנמחקה. מבצעים את השלבים שבקטע הגדרת קבוצות Google כדי להוסיף את הקבוצה החדשה כחברה בקבוצה gke-security-group.

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