- הגדרת GKE להפעלה רק של עומסי עבודה ספציפיים עם הרשאות במצב Autopilot.
- התקנת רשימות היתרים לעומסי עבודה עם הרשאות מיוחדות.
המסמך הזה מיועד לסוגי התפקידים הבאים:
- מהנדסי אבטחה שרוצים לוודא שעומסי עבודה של צד שלישי צריכים רשימת היתרים כדי לפעול באשכולות שלהם, ושמקורם במקורות שאושרו על ידי GKE.
- מהנדסי פלטפורמה שרוצים להפעיל עומסי עבודה של צד שלישי באשכולות כדי לאפשר לצוותי האפליקציות להמשיך בעבודה.
כדאי להכיר את המושגים הבאים:
- מידע על הרשאת עומסי עבודה עם הרשאות מיוחדות במצב Autopilot
- משאבים בהתאמה אישית ב-Kubernetes
- מגבלות אבטחה ב-GKE Autopilot
- שותפים של GKE Autopilot
מידע על עומסי עבודה עם הרשאות ב-Autopilot
במצב Autopilot, מוחל על עומסי העבודה סט ברירת מחדל של אילוצים כדי לשפר את רמת האבטחה. אפשר לשנות את המגבלות האלה כדי להריץ עומסי עבודה ספציפיים עם הרשאות מיוחדות. לשם כך, צריך להתקין רשימות היתרים שתואמות לעומסי העבודה האלה. כברירת מחדל, Autopilot מאפשר להתקין רשימות היתרים משותפים של שותפי Autopilot ופרויקטים ספציפיים בקוד פתוח. לקוחות GKE שעומדים בדרישות יכולים גם ליצור רשימות היתרים לעומסי עבודה מורשים בבעלות הלקוח שהם מעלים לקטגוריות של Cloud Storage.
כל רשימת היתרים היא קובץ שתואם לעומס עבודה ספציפי עם הרשאות מיוחדות. כדי להריץ עומס עבודה עם הרשאות מיוחדות, מבצעים את הפעולות הבאות:
- מגדירים את האשכול כך שיאפשר התקנה של רשימות היתרים מנתיבים ספציפיים. כברירת מחדל, כל רשימות ההיתרים של שותפי Autopilot ושל פרויקטים מאושרים של קוד פתוח נתמכות.
- יוצרים AllowlistSynchronizer באשכול שמתקין את הרשימה הלבנה ושומר אותה מעודכנת.
באגים ובקשות להוספת תכונות לעומסי עבודה עם הרשאות ולרשימות היתרים
הבעלים של עומס עבודה עם הרשאות מיוחדות אחראי ליצירה, לפיתוח ולתחזוקה של עומסי העבודה ורשימות ההיתרים שלו. אם נתקלתם בבאג או שיש לכם בקשה לתכונה עבור עומס עבודה עם הרשאות או רשימת היתרים, פנו לבעלים המתאים.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
- מוודאים שאפשר להגדיר אשכולות להתקנת רשימות היתרים מהמקור שבחרתם. אדמינים בארגון יכולים להשתמש במדיניות ארגונית כדי לשלוט בנתיבים שאפשר להוסיף לאשכול. מידע נוסף זמין במאמר בנושא הגבלות מנוהלות של שירות Organization Policy לרשימות היתרים.
עבור עומסי עבודה עם הרשאות בבעלות הלקוח שזמינים ללקוחות GKE שעומדים בדרישות, צריך לוודא שמתקיימים שני התנאים הבאים:
- האדמין של הארגון הוסיף את נתיב הקטגוריה של רשימת ההיתרים למדיניות הארגון. מידע נוסף מופיע במאמר בנושא הגבלת עומסי עבודה עם הרשאות ב-GKE בארגונים.
- רשימת ההיתרים שרוצים להתקין נמצאת בקטגוריה של Cloud Storage. מידע נוסף זמין במאמר בנושא יצירת רשימות היתרים לעומסי עבודה עם הרשאות ב-Autopilot.
דרישות
- המשאב המותאם אישית AllowlistSynchronizer דורש GKE בגרסה 1.32.2-gke.1652000 ואילך.
- צריך לדעת איזה עומס עבודה עם הרשאות רוצים להריץ באשכול.
- כדי לשנות את הגדרת הנתיב של רשימת ההיתרים באשכול, האשכול צריך להריץ 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 גדל ב-1. לאחר מכן, בקר 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
אפשר להשתמש בתמונה הפוכה אם ה-digest תואם ל-digest שזמין לציבור, כמו בדוגמה הבאה:
...
containers:
- name: pause-container1
image: my-private-repo/pause1@sha256:cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229
securityContext:
privileged: true
אתם צריכים לכלול את תקציר הגיבוב (digest) מסוג SHA-256 בשדה התמונה, בדומה לדוגמה הקודמת. אם הגיבובים לא זהים, התמונה המשוכפלת לא תפעל. כדי לשמור את סיכומי התמונות כשמשכפלים תמונות של שותפים, כדאי להשתמש בכלי כמו crane, ORAS או skopeo.
מחיקת עומס עבודה עם הרשאות
כדי להפסיק את ההרשאה להפעלת עומס עבודה עם הרשאות מיוחדות באשכולות, צריך להסיר את הנתיב לרשימת ההיתרים המתאימה מה-AllowlistSynchronizer. המסנכרן מסיר את רשימת ההיתרים.
אם מוחקים אובייקט WorkloadAllowlist מהאשכול במקום לעדכן את הכלי לסנכרון, הכלי לסנכרון מתקין מחדש את רשימת ההיתרים. חשוב להסיר את הנתיב מהכלי AllowlistSynchronizer.
כדי להסיר רשימת היתרים:
- במניפסט ה-YAML של 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