Google Kubernetes Engine (GKE) משתמש במטא-נתונים של מופעים כדי להגדיר מכונות וירטואליות (VM) של צמתים, אבל חלק מהמטא-נתונים האלה רגישים וצריך להגן עליהם מפני עומסי עבודה שפועלים באשכול.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
הגדרת חשבון שירות של צומת
פרטי הכניסה של חשבון השירות של כל צומת ממשיכים להיחשף לעומסי עבודה. כברירת מחדל, הצמתים משתמשים בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine. מומלץ להגדיר חשבון שירות עם הרשאות מינימליות לצמתים במקום להשתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine. לאחר מכן, מצמידים את חשבון השירות הזה לצמתים, כדי שתוקף לא יוכל לעקוף את אמצעי ההגנה על המטא-נתונים של GKE באמצעות Compute Engine API כדי לגשת ישירות למכונות הווירטואליות הבסיסיות.
מידע נוסף מופיע במאמר שימוש בחשבונות שירות של צמתים עם הרשאות מינימליות.
כדי ליצור חשבון שירות של צומת עם הרשאות מינימליות, מבצעים את השלבים הבאים:
יוצרים חשבון שירות חדש לניהול זהויות והרשאות גישה (IAM) ושומרים את כתובת האימייל במשתנה סביבתי:
gcloud iam service-accounts create NODE_SA_NAME \ --display-name="DISPLAY_NAME" export NODE_SA_EMAIL=$(gcloud iam service-accounts list --format='value(email)' \ --filter='displayName:DISPLAY_NAME')מחליפים את מה שכתוב בשדות הבאים:
-
NODE_SA_NAME: השם של חשבון השירות החדש של צומת. -
DISPLAY_NAME: השם המוצג של חשבון השירות החדש.
כתובת האימייל של חשבון השירות של הצומת היא בפורמט
NODE_SA_NAME@PROJECT_ID.iam.gserviceaccount.com.-
מגדירים את חשבון השירות עם התפקידים וההרשאות המינימליים להרצת צמתי GKE:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$NODE_SA_EMAIL \ --role=roles/monitoring.metricWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$NODE_SA_EMAIL \ --role=roles/monitoring.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$NODE_SA_EMAIL \ --role=roles/logging.logWriterמחליפים את
PROJECT_IDבמזהה הפרויקט ב- Google Cloud .בנוסף, אם האשכול מושך תמונות פרטיות מ-Artifact Registry, צריך להוסיף את התפקיד
roles/artifactregistry.reader:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$NODE_SA_EMAIL \ --role=roles/artifactregistry.reader
הסתרת מטא-נתונים
הסתרת המטא-נתונים ב-GKE מונעת מ-Pods של משתמשים לגשת אל kube-env, שמכיל את פרטי הכניסה של kubelet, ואל אסימון הזהות של המכונה הווירטואלית.
חומות אש להסתרת מטא-נתונים מגבילות את התעבורה מ-Pods של משתמשים (Pods שלא פועלים ב-HostNetwork) לשרת המטא-נתונים של האשכול, ומאפשרות רק שאילתות בטוחות. חומת האש מונעת מ-Pods של משתמשים להשתמש בפרטי הכניסה של kubelet כדי לבצע התקפות להעלאת הרשאות, או להשתמש בזהות של מכונה וירטואלית כדי לבצע התקפות להעלאת הרשאות של מופע.
איחוד שירותי אימות הזהות של עומסי עבודה ב-GKE מחליף את הצורך להשתמש בהסתרת מטא-נתונים, ומרחיב את ההגנות שהסתרת מטא-נתונים מציעה. בכל המקרים, מומלץ להשתמש באיחוד זהויות של עומסי עבודה ל-GKE במקום בהסתרת מטא-נתונים. מידע נוסף זמין במאמר מידע על איחוד זהויות של עומסי עבודה ל-GKE.
כדי להפעיל הסתרת מטא-נתונים, משתמשים באפשרות --workload-metadata=SECURE שהוצאה משימוש בפקודה gcloud beta container clusters create או בפקודה gcloud beta container node-pools create.
מגבלות
להסתרת מטא-נתונים יש מגבלות, למשל:
- הסתרת המטא-נתונים מגנה רק על הגישה אל
kube-envואל אסימון הזהות של מופע הצומת. - הסתרת מטא-נתונים לא מגבילה את הגישה לחשבון השירות של הצומת.
- הסתרת מטא-נתונים לא מגבילה את הגישה למטא-נתונים אחרים שקשורים למופע.
- הסתרת מטא נתונים לא מגבילה את הגישה לממשקי API אחרים של מטא נתונים מדור קודם.
- הסתרת מטא-נתונים לא מגבילה את התנועה מ-Pods שפועלים ברשת המארחת (
hostNetwork: trueבמפרט ה-Pod).
השבתה ומעבר מממשקי API של מטא-נתונים מדור קודם
נקודות הקצה של שרת המטא-נתונים ב-Compute Engine v0.1 ו-v1beta1 הוצאו משימוש
ונסגרו ב-30 בספטמבר 2020.
לוח הזמנים של ההוצאה משימוש מפורט במאמר הוצאה משימוש של נקודות הקצה של שרת המטא-נתונים v0.1 ו-v1beta1.
המאמרים הבאים
- איך מאמתים בממשקי API מעומסי עבודה ב-GKE Google Cloud
- מידע נוסף על איחוד זהויות של עומסי עבודה ל-GKE
- מידע נוסף על פתרון בעיות שקשורות לאימות ב-GKE
- איך להקשיח את האבטחה באשכול