- להגדיר את GKE כך שיריץ רק עומסי עבודה ספציפיים עם הרשאות במצב אוטומטי.
- התקנת רשימות היתרים לעומסי עבודה עם הרשאות.
המסמך הזה מיועד לבעלי התפקידים הבאים:
- מהנדסי אבטחה שרוצים לוודא שעומסי עבודה של צד שלישי צריכים רשימת היתרים כדי לפעול באשכולות, ושהם מגיעים ממקורות שאושרו על ידי GKE.
- מהנדסי פלטפורמה שרוצים להפעיל עומסי עבודה של צד שלישי באשכולות כדי לאפשר לצוותי האפליקציות להמשיך בעבודה.
אתם כבר אמורים להכיר את המושגים הבאים:
- מידע על קבלת עומסי עבודה עם הרשאות במצב Autopilot
- משאבים בהתאמה אישית של Kubernetes
- אילוצי אבטחה ב-GKE Autopilot
- שותפים של GKE Autopilot
מידע על עומסי עבודה עם הרשאות ב-Autopilot
במצב אוטומטי, נאכפת קבוצת אילוצים שמוגדרת כברירת מחדל על עומסי העבודה כדי לשפר את מצב האבטחה. כדי להריץ עומסי עבודה ספציפיים עם הרשאות, אתם יכולים לשנות את האילוצים האלה על ידי התקנת רשימות היתרים שתואמות לעומסי העבודה האלה. כברירת מחדל, Autopilot מאפשר להתקין רשימות היתרים משותפים של Autopilot ומפרויקטים ספציפיים בקוד פתוח. לקוחות GKE שעומדים בדרישות יכולים גם ליצור רשימות היתרים לעומסי עבודה עם הרשאות בבעלות הלקוח, שהם מעלים לקטגוריות של Cloud Storage.
כל רשימת היתרים היא קובץ שתואם לעומס עבודה ספציפי עם הרשאות. כדי להריץ עומס עבודה עם הרשאות, מבצעים את הפעולות הבאות:
- מגדירים את האשכול כך שיאפשר התקנה של רשימות היתרים מנתיבים ספציפיים. כברירת מחדל, יש תמיכה בכל רשימות ההיתרים של שותפי Autopilot ושל פרויקטים מאושרים בקוד פתוח.
- יוצרים AllowlistSynchronizer באשכול שמתקין את רשימת ההיתרים ומעדכן אותה.
באגים והגשת בקשות להוספת תכונות לעומסי עבודה בעלי הרשאות ולרשימות היתרים
הבעלים של עומס עבודה עם הרשאות אחראי ליצור, לפתח ולתחזק את עומסי העבודה ורשימות ההיתרים שלו. אם נתקלתם בבאג או אם אתם רוצים להגיש בקשה להוספת תכונה לעומס עבודה מורשה או לרשימת היתרים, פנו לבעלים המתאימים.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-Google Cloud CLI למשימה הזו, מתקינים ואז מאתחלים את ה-CLI של gcloud. אם כבר התקנתם את ה-CLI של gcloud, הריצו את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שבגרסאות קודמות של ה-CLI של gcloud אי אפשר להריץ את הפקודות שבמסמך הזה.
- מוודאים שאפשר להגדיר אשכולות להתקנת רשימות היתרים מהמקור שבחרתם. מנהלי ארגונים יכולים להשתמש במדיניות הארגון כדי לקבוע את הנתיבים שאפשר להוסיף לאשכול. מידע נוסף זמין במאמר אילוץ מנוהל של שירות מדיניות הארגון לרשימות היתרים.
אם מדובר בעומסי עבודה עם הרשאות בבעלות הלקוח שזמינים ללקוחות GKE שעומדים בדרישות, צריך לוודא ששני התנאים הבאים מתקיימים:
- מנהל הארגון הוסיף את נתיב הקטגוריה של רשימת ההיתרים למדיניות הארגון. מידע נוסף מופיע במאמר הגבלת עומסי עבודה עם הרשאות ב-GKE בארגונים.
- רשימת ההיתרים שרוצים להתקין נמצאת בקטגוריה של Cloud Storage. מידע נוסף זמין במאמר יצירת רשימות היתרים לעומסי עבודה עם הרשאות ב-Autopilot.
דרישות
- כדי להשתמש במשאב המותאם אישית AllowlistSynchronizer, צריך את גרסה 1.32.2-gke.1652000 או גרסה חדשה יותר של GKE.
- אתם צריכים לדעת איזה עומס עבודה עם הרשאות אתם רוצים להריץ באשכול.
- כדי לשנות את הגדרת הנתיב של רשימת ההיתרים באשכול, צריך להפעיל באשכול את GKE בגרסה 1.35 ואילך.
הגדרת נתיבים לרשימת ההיתרים של אשכול
בקטע הזה מוסבר איך להגדיר אשכול כך שיתמוך בהתקנה של רשימות היתרים מקבוצה של נתיבים מאושרים. כברירת מחדל, Autopilot תומך בהתקנה של רשימת היתרים משותפי GKE ומפרויקטים מאושרים של קוד פתוח. אפשר לשנות את הגדרת ברירת המחדל הזו לאשכולות ספציפיים. אפשר גם לציין מקורות מאושרים לרשימת ההיתרים של כל הארגון, התיקייה או הפרויקט באמצעות מדיניות הארגון.
מזהים את הנתיבים לקובצי רשימת ההיתרים שרוצים להוסיף לאשכול. אפשר לציין כמה נתיבים כשיוצרים או מעדכנים את האשכול. אפשר גם להשבית את ההתקנה של רשימת ההיתרים מכל מקור, על ידי ציון מחרוזת ריקה במקום נתיב. למידע נוסף על הנתיבים שאפשר לציין, ראו נתיבים ברשימת ההיתרים.
כדי לשלוט במקורות המאושרים ברשימת ההיתרים של אשכול, משתמשים בדגל
--autopilot-privileged-admissionכשיוצרים או מעדכנים אשכול Autopilot או אשכול רגיל, כמו בפקודה הבאה:gcloud container clusters create-auto CLUSTER_NAME \ --location=LOCATION \ --autopilot-privileged-admission=ALLOWLIST1_PATH,ALLOWLIST2_PATH,...מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם לאשכול החדש. -
LOCATION: המיקום של מישור הבקרה של האשכול, למשלus-central1.
ALLOWLIST1_PATH,ALLOWLIST2_PATH,...: רשימה מופרדת בפסיקים של נתיבים לקבצים או לספריות ברשימת ההיתרים. לדוגמה,gke://*,gs://my-agent/privileged-logging-agent.yaml. אפשר גם להשבית את ההתקנה של רשימת ההיתרים מכל מקור על ידי ציון מחרוזת ריקה ("").
-
אם מעדכנים אשכול קיים בלי לציין את הדגל --autopilot-privileged-admission, הגדרת הנתיב הקיימת של אותו אשכול לא משתנה. לא צריך לציין את הדגל הזה בכל פעם שמעדכנים אשכול.
אחרי שיוצרים או מעדכנים את האשכול, אפשר להתקין רשימות היתרים מהנתיבים שצוינו על ידי יצירת AllowlistSynchronizers.
יצירת AllowlistSynchronizer חדש
כדי להריץ עומס עבודה עם הרשאות, מוסיפים את הנתיב לקובץ רשימת ההיתרים המתאים למפרט AllowlistSynchronizer בקובץ YAML. לאחר מכן פורסים את AllowlistSynchronizer באשכול.
- בכלי לעריכת טקסט, יוצרים קובץ YAML חדש.
מוסיפים את התוכן הבא לקובץ ה-YAML:
apiVersion: auto.gke.io/v1 kind: AllowlistSynchronizer metadata: name: ALLOWLIST_SYNCHRONIZER_NAME spec: allowlistPaths: - ALLOWLIST1_PATH - ALLOWLIST2_PATHמחליפים את מה שכתוב בשדות הבאים:
-
ALLOWLIST_SYNCHRONIZER_NAME: השם של הסנכרון החדש. בוחרים שם תיאורי שמזהה את עומס העבודה או את הצוות שרשימת ההיתרים תומכת בהם.
ALLOWLIST1_PATH, ALLOWLIST2_PATH, ...: רשימת נתיבים לקבצים או לספריות שרוצים להתקין, כמו בדוגמה הבאה לרשימות היתרים שאושרו על ידי GKE:allowlistPaths: - Gke-Org/accelerators/* - Wiz/wiz-sensor/v1/wiz-sensor-v1.yamlאו בדוגמה הבאה לרשימות היתרים בבעלות הלקוח:
allowlistPaths: - my-agent/log-collector/* - my-agent/privileged-logging-agent.yamlהגדרת האשכול צריכה לתמוך בנתיבים שציינתם, כמו שמתואר בקטע הגדרת נתיבים לרשימת ההיתרים של אשכול. בנוסף, כל AllowlistSynchronizer חייב להכיל רק רשימות היתרים שאושרו על ידי GKE, או רק רשימות היתרים בבעלות הלקוח.
-
אם אתם מתקינים רשימות היתרים מ קטגוריה של Cloud Storage שבבעלות הלקוח, הוסיפו את השדות
spec.projectNumberו-spec.bucketNameל-AllowlistSynchronizer. לפרטים נוספים, ראו AllowlistSynchronizer CustomResourceDefinition.פורסים את קובץ ה-YAML באשכול:
kubectl apply -f PATH_TO_YAML_FILEמחליפים את
PATH_TO_YAML_FILEבנתיב לקובץ ה-YAML שיצרתם בשלב הקודם.הבקר AllowlistSynchronizer מתקין קובצי רשימת היתרים מהנתיבים שצוינו באשכול.
מחכים עד שהסנכרון ידווח על סטטוס
Ready:kubectl wait --for=condition=Ready allowlistsynchronizer/ALLOWLIST_SYNCHRONIZER_NAME \ --timeout=60s
אפשר גם לשלב התקנה של רשימת היתרים ופריסה של עומסי עבודה עם הרשאות בצינור עיבוד הנתונים של אינטגרציה רציפה ופריסה רציפה (CI/CD). מגדירים את תהליך העבודה כך שימתין עד להתקנה של רשימת ההיתרים לפני פריסת עומס העבודה המתאים.
עדכון של AllowlistSynchronizer קיים
אפשר לעדכן AllowlistSynchronizer קיים כדי להוסיף או להסיר קבצים מרשימת ההיתרים. יכול להיות שתצטרכו לעדכן סנכרונים קיימים במצבים כמו:
- הבעלים של עומס העבודה מוסיפים קובץ רשימת היתרים חדש עם שם אחר.
- אתם רוצים להוסיף רשימת היתרים חדשה של עומסי עבודה לסנכרון קיים שמקבץ רשימות היתרים קשורות.
- אתם רוצים להסיר רשימת היתרים מסנכרן כי אתם לא רוצים יותר להשתמש בעומס העבודה המתאים.
כדי לעדכן אובייקט AllowlistSynchronizer קיים:
מציגים את רשימת הסנכרונים הקיימים באשכול:
kubectl get allowlistsynchronizerפותחים את המפרט של הסנכרון שרוצים לעדכן בכלי לעריכת טקסט.
מעדכנים את השדה
spec.allowlistPathsכדי להוסיף, לשנות או להסיר נתיבי קבצים מרשימת ההיתרים.שומרים וסוגרים את הכלי לעריכת טקסט.
מחילים את ההגדרות המעודכנות על האשכול:
kubectl apply -f PATH_TO_YAML_FILEמחליפים את
PATH_TO_YAML_FILEבנתיב לקובץ ה-YAML שעדכנתם בשלב הקודם.
כשפורסים הגדרה מעודכנת של סנכרון, הערך בשדה managedAllowlistStatus.generation בסטטוס של האובייקט AllowlistSynchronizer גדל באחד. לאחר מכן, הבקר AllowlistSynchronizer מחיל את השינויים.
מעקב אחרי הסטטוס של סנכרון רשימת ההיתרים
אחרי שמתקינים AllowlistSynchronizer או מעדכנים סנכרון קיים, אפשר לעקוב אחרי סטטוס הסנכרון. הסטטוס עוזר לעקוב אחרי ההתקנה, ההסרה או השינויים של קובצי רשימת ההיתרים, וגם אחרי שגיאות שעלולות להתרחש.
כדי לעקוב אחרי הסטטוס הכללי של הסנכרון, מריצים את הפקודה הבאה:
kubectl get allowlistsynchronizer ALLOWLIST_SYNCHRONIZER_NAME -o yaml
הפלט אמור להיראות כך:
...
status:
conditions:
- type: Ready
status: "False"
reason: "SyncError"
message: "some allowlists failed to sync: example-allowlist-1.yaml"
lastTransitionTime: "2024-10-12T10:00:00Z"
observedGeneration: 2
managedAllowlistStatus:
- filePath: "gs://path/to/example-allowlist-2.yaml"
generation: 1
phase: Installed
lastSuccessfulSync: "2024-10-10T10:00:00Z"
- filePath: "gs://path/to/example-allowlist-1.yaml"
phase: Failed
lastError: "Initial install failed: invalid contents"
lastSuccessfulSync: "2024-10-08T10:00:00Z"
בפלט לדוגמה, הסנכרון של רשימת ההיתרים example-allowlist-1.yaml נכשל, ורשימת ההיתרים example-allowlist-2.yaml הותקנה בהצלחה. תיאור של השדות האלה מופיע בקטע הסטטוס של AllowlistSynchronizer.
איך בודקים אם יש רשימת היתרים באשכול
כדי לוודא שרשימת ההיתרים קיימת באשכול, מריצים את הפקודה הבאה:
kubectl get workloadallowlist
הפלט הוא רשימה של רשימות ההיתרים שמותקנות באשכול. מוודאים שהפלט כולל את רשימת ההיתרים שבה רוצים להשתמש.
פריסת עומס העבודה עם הרשאות היתר
אחרי שרשימת ההיתרים הותקנה בהצלחה, אפשר לפרוס את עומס העבודה התואם באשכול. הבעלים של עומס העבודה צריך גם לספק לכם הוראות להתקנה של עומס העבודה. רשימה של שותפי Autopilot וקישורים למסמכי התיעוד שלהם מופיעה במאמר שותפי Autopilot.
שימוש במאגרי תמונות פרטיים
אתם יכולים לשכפל את קובצי האימג' של הקונטיינרים של עומסי עבודה עם הרשאות גישה למאגרים פרטיים שבבעלותכם. כדי להריץ את האימג'ים המועתקים האלה בעומס עבודה, אתם צריכים לעמוד בכל הדרישות הבאות:
- תקציר ה-SHA-256 של קובץ האימג' המשוכפל צריך להתאים לתקציר קובץ האימג' של עומס העבודה שזמין באופן ציבורי.
- תקציר התמונה SHA-256 שאתם מציינים חייב להיות קיים באובייקט
WorkloadAllowlistשמסונכרן עם האשכול.
אם עומס העבודה תומך בתמונות מראה, המפרט של רשימת ההיתרים של עומס העבודה הזה מכיל רשימה של תקצירי תמונות בשדה containers.imageDigests במפרט של רשימת ההיתרים של עומס העבודה הזה. בדרך כלל, בשדה הזה יש תקציר נפרד לכל גרסה זמינה של קובץ האימג' של הקונטיינר. כדי לראות את רשימת תקצירי התמונות:
- מוודאים שרשימת ההיתרים קיימת באשכול.
מקבלים את המפרט של רשימת ההיתרים המותקנת:
kubectl get workloadallowlist ALLOWLIST_NAME -o yamlמחליפים את
ALLOWLIST_NAMEבשם של רשימת ההיתרים המותקנת. לדוגמה,company-name-solution-v1.0.0.בעומסי עבודה שתומכים בתכונה הזו, הפלט דומה לפלט הבא. בשדה
imageDigestsיש רשימה של תקצירים מותרים.# lines omitted for clarity - containerName: pause-container1 imageDigests: - cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229 - 932ea160d395f3d7f76c0c17a52a63c4cfe1836a900f1058b6bc20b16fd10d23אם הפלט לא כולל שדה
imageDigests, או אם התקציר של הגרסה שבה אתם רוצים להשתמש לא מופיע ברשימה, פנו ישירות לבעלים של עומס העבודה ובקשו ממנו לעדכן את רשימת ההיתרים שלו. אחרי שהבעלים של עומס העבודה מוסיפים תקצירי תמונות לרשימת ההיתרים, מסנכרן רשימת ההיתרים באשכול מתקין באופן אוטומטי את רשימת ההיתרים המעודכנת.מוסיפים למניפסט של עומס העבודה את אחד מתקצירי התמונות הנתמכים.
לדוגמה, שימו לב לתמונה הבאה במפרט של Pod שזמין באופן ציבורי של שותף:
...
containers:
- name: pause-container1
image: partner-repo/pause1@sha256:cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229
securityContext:
privileged: true
אפשר להשתמש בתמונת מראה אם התקציר תואם לתקציר שזמין לכולם, כמו בדוגמה הבאה:
...
containers:
- name: pause-container1
image: my-private-repo/pause1@sha256:cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229
securityContext:
privileged: true
אתם צריכים לכלול את תקציר SHA-256 בשדה התמונה, בדומה לדוגמה הקודמת. אם התקצירים לא תואמים, התמונה המועתקת לא תפעל. כדי לשמור על תקצירי התמונות כשאתם משכפלים תמונות של שותפים, כדאי להשתמש בכלים כמו crane, ORAS או skopeo.
מחיקת עומס עבודה עם הרשאות
כדי להפסיק לאפשר לעומס עבודה עם הרשאות לפעול באשכולות, מסירים את הנתיב לרשימת ההיתרים המתאימה מ-AllowlistSynchronizer. הסנכרון מסיר את רשימת ההיתרים.
אם מוחקים אובייקט WorkloadAllowlist מהאשכול במקום לעדכן את הסנכרון, הסנכרון מתקין מחדש את רשימת ההיתרים. חשוב לוודא שהנתיב הוסר מ-AllowlistSynchronizer.
כדי להסיר רשימת היתרים:
- במניפסט ה-YAML של AllowlistSynchronizer שמנהל את רשימת ההיתרים, מסירים את הנתיב לרשימת ההיתרים שרוצים להסיר. הוראות מפורטות זמינות בקטע עדכון של AllowlistSynchronizer קיים.
כדי לוודא שרשימת ההיתרים הוסרה, צריך לקבל רשימה של אובייקטים מסוג
WorkloadAllowlistבאשכול:kubectl get workloadallowlistמוודאים שרשימת ההיתרים שרציתם להסיר לא מופיעה בפלט.
מוחקים את עומס העבודה מהאשכול. הוראות מפורטות מופיעות במאמרי העזרה של ספק עומס העבודה.
מניעת התקנה של רשימת היתרים באשכולות
כדי למנוע התקנה של רשימות היתרים של עומסי עבודה עם הרשאות באשכולות ספציפיים, מציינים מחרוזת ריקה ("") בדגל --autopilot-privileged-admission כשיוצרים או מעדכנים אשכול.
כדי להשבית נתיבים ספציפיים של רשימות היתרים באשכול, משמיטים את הנתיבים לרשימות ההיתרים האלה כשיוצרים או מעדכנים אשכול:
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --autopilot-privileged-admission=ALLOWLIST1_PATH,ALLOWLIST2_PATH,...מחליפים את
ALLOWLIST1_PATH,ALLOWLIST2_PATH,...ברשימה מופרדת בפסיקים של נתיבים למקורות ברשימת ההיתרים. משמיטים את הנתיבים שרוצים להשבית.כדי להשבית את כל רשימות ההיתרים באשכול קיים, מציינים מחרוזת ריקה בתור הנתיב המאושר:
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --autopilot-allowlist-paths=""
פתרון בעיות
אם הסנכרון או פריסת עומס העבודה נכשלים, עיינו במאמר פתרון בעיות בפריסת עומסי עבודה עם הרשאות ב-Autopilot.
המאמרים הבאים
- מידע על עומסי העבודה שזמינים מהשותפים של GKE Autopilot
- הרצת עומסי עבודה מורשים בקוד פתוח ב-GKE Autopilot
- מידע על יכולות האבטחה שמוגדרות כברירת מחדל ב-GKE Autopilot
- קוראים את AllowlistSynchronizer CustomResourceDefinition.