הגדרת קבוצות 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 ל-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 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. מסמנים את התיבה הפעלת קבוצות 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. בתפריט Log Type, בוחרים:

      • קריאה של אדמין
      • קריאת נתונים
      • כתיבת נתונים
    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.

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