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

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

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

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

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

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

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

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

דרישות

כדי להשתמש ב-Google Groups ל-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 Groups ל-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 Groups for RBAC', מבצעים את השלבים הבאים:

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

    מעבר אל Google Kubernetes Engine

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

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

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

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

  6. מסמנים את התיבה הפעלת קבוצות Google עבור 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. מסמנים את התיבה הפעלת קבוצות Google עבור RBAC.

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

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

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

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

אימות ההגדרה של Google Groups עבור 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. בתפריט סוג היומן, בוחרים באפשרות:

      • Admin Read
      • קריאת נתונים
      • כתיבת נתונים
    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 עבור הקבוצה הזו ייכשלו. כתוצאה מכך, כל חברי הקבוצה מאבדים את הגישה הרלוונטית.

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

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