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

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

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

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

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

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

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

  1. עמידה בדרישות.
  2. הגדרת קבוצות ב-Google
  3. הפעלת Google Groups ל-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 Groups עבור RBAC באשכולות חדשים וקיימים של GKE Standard ו-Autopilot באמצעות Google Cloud CLI או מסוף Google Cloud .

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

gcloud

רגילה

כדי ליצור אשכול חדש מסוג Standard ולהפעיל את קבוצות 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: מרחיבים את הקטע Security, מסמנים את התיבה Enable Google Groups for RBAC ומזינים Security Group עם gke-security-groups@DOMAIN.
    • רגיל: בשורה Google Groups for RBAC, לוחצים על Edit configuration, מסמנים את תיבת הסימון Enable Google Groups for RBAC, ממלאים את Security Group ב-gke-security-groups@DOMAIN ולוחצים על Save.
  5. לוחצים על יצירה.

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

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 (הפעלת קבוצות Google ל-RBAC).

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

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

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

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

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

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

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

מריצים פקודת can-i kubectl כדי לבדוק אם אפשר לבצע פעולה ספציפית במשאב ספציפי של 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 Groups מתועד.

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

  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.

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