בדף הזה מוסבר איך להגדיר קבוצות 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, צריך לבצע את המשימות הבאות:
- עמידה בדרישות.
- הגדרת קבוצות ב-Google
- הפעלת Google Groups ל-RBAC באשכול.
- הגדרת הרשאות RBAC והקצאתן לקבוצות Google.
דרישות
כדי להשתמש ב-Google Groups ל-RBAC, אתם צריכים גישה ל-Google Workspace או למהדורה כלשהי של Cloud Identity.
מגבלות
- GKE תומך במשתמשים שחברים בעד 2,000 קבוצות במסגרת קבוצת האבטחה, כולל חברויות מקוננות, עם קבוצות Google ל-RBAC.
הגדרת קבוצות Google
בשלבים הבאים מוסבר איך להגדיר קבוצה בקבוצות Google שתפעל עם RBAC:
יוצרים קבוצה בדומיין בשם
gke-security-groups. חובה לציין את השםgke-security-groups. מוודאים שההרשאה View Members (הצגת חברי הקבוצה) מסומנת עבור Group Members (חברי הקבוצה). פרטים נוספים מופיעים במאמר בנושא הגדרת הרשאות לניהול חברי קבוצה ותוכן.יוצרים קבוצות, אם הן לא קיימות, שמייצגות קבוצות של משתמשים שצריכות להיות להן הרשאות שונות באשכולות, כמו מפתחים ואדמינים של אשכולות. לכל קבוצה צריכה להיות הרשאת הצגת חברי הקבוצה לחברי הקבוצה.
מוסיפים את הקבוצות שלכם כקבוצות מקוננות לקבוצה
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', מבצעים את השלבים הבאים:
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
לוחצים על add_box יצירה.
לוחצים על הגדרה ליד מצב האשכול שבו רוצים להשתמש.
בחלונית הניווט, לוחצים על הגדרות מתקדמות ואז מבצעים אחת מהפעולות הבאות:
- Autopilot: מרחיבים את הקטע Security, מסמנים את התיבה Enable Google Groups for RBAC ומזינים Security Group עם
gke-security-groups@DOMAIN. - רגיל: בשורה Google Groups for RBAC, לוחצים על edit Edit configuration, מסמנים את תיבת הסימון Enable Google Groups for RBAC, ממלאים את Security Group ב-
gke-security-groups@DOMAINולוחצים על Save.
- Autopilot: מרחיבים את הקטע Security, מסמנים את התיבה Enable Google Groups for RBAC ומזינים Security Group עם
לוחצים על יצירה.
עדכון של אשכול קיים
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, מבצעים את השלבים הבאים:
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
לוחצים על השם של האשכול שרוצים לעדכן.
בכרטיסייה פרטים, מאתרים את הקטע אבטחה.
בשדה קבוצות Google ל-RBAC, לוחצים על edit עריכת קבוצות Google ל-RBAC.
מסמנים את התיבה Enable Google Groups for RBAC (הפעלת קבוצות Google ל-RBAC).
ממלאים את קבוצת אבטחה עם
gke-security-groups@DOMAIN.לוחצים על שמירת השינויים.
הגדרת הרשאות והקצאתן
אחרי שיוצרים ומגדירים קבוצות 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 מתועד.
הפעלת יומנים והרצת פקודת בדיקה
מפעילים את רישום הגישה לנתונים בפרויקט Google Cloud . כדי להפעיל את הרישום ביומן:
נכנסים לדף Audit Logs במסוף Google Cloud .
בטבלה, בוחרים באפשרות Kubernetes Engine API.
בתפריט סוג היומן, בוחרים באפשרות:
- קריאה של אדמין
- קריאת נתונים
- כתיבת נתונים
לוחצים על Save.
מידע נוסף על הפעלת רישום ביומן ביקורת זמין במאמר הגדרת יומני גישה לנתונים באמצעות מסוף Cloud.
מריצים פקודה באמצעות
kubectlבאשכול, כמו הפקודה הבאה:kubectl create ns helloworldמזינים שאילתה מותאמת אישית בדף Logs Explorer. כדי להריץ את השאילתה:
נכנסים לדף Logs Explorer במסוף Google Cloud .
לוחצים על החץ בתיבה תצוגה מקדימה של השאילתה בחלק העליון של הדף.
בתיבה הנפתחת שמופיעה, מציינים את השאילתה הבאה:
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 שלכם.
-
לוחצים על Run Query (הפעלת שאילתה). צריך להופיע לפחות תוצאה אחת. אם לא מוצגות תוצאות, כדאי להגדיל את טווח הזמן.
בוחרים את האשכול שרוצים לבדוק.
לוחצים על הרחבת שדות מקוננים.
השדה
labels.authorization.k8s.io/decisionמכיל את התוצאה אם הבקשה אושרה או נדחתה.בשדה
labels."authorization.k8s.io/reason"מופיע השם של קבוצת Google. הקבוצה הזו היא חברה ב-gke-security-groupוהיא ממופה לקבוצת Kubernetes שקובעת את הגישה.
אפשרות נוספת היא לשחזר את הרישום ביומן של הגישה לנתונים להגדרות הקודמות כדי להימנע מחיובים נוספים.
ההשלכות של מחיקת קבוצות
אחרי שמגדירים את קבוצות 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.
המאמרים הבאים
- איך מגדירים בקרת גישה מבוססת-תפקידים
- מידע נוסף על בקרת גישה ב-GKE
- מידע נוסף על IAM
- מידע נוסף על OpenID Connect (OIDC)
- שיטות מומלצות לשימוש ב-RBAC