במאמר הזה מוסבר איך ליצור רשימות היתרים שמאפשרות לפרוס עומסי עבודה עם הרשאות מיוחדות בצמתי Autopilot. את רשימות ההיתרים האלה מאחסנים בקטגוריות של Cloud Storage. המסמך הזה מיועד לאדמינים ולמפעילים של פלטפורמות שרוצים להחריג עומסי עבודה ספציפיים בבעלות הלקוח מאילוצי האבטחה שמוגדרים כברירת מחדל ב-Autopilot, עבור עומסי עבודה ספציפיים של Kubernetes. כדאי שתכירו את השליטה בהרשאות של עומסי עבודה ב-Autopilot.
מידע על עומסי עבודה עם הרשאות ב-Autopilot
במצב אוטומטי, מופעלת קבוצת אילוצים שמוגדרת כברירת מחדל על עומסי עבודה כדי לשפר את רמת האבטחה. אפשר לעקוף את האילוצים האלה כדי להריץ עומסי עבודה ספציפיים עם הרשאות מיוחדות. לשם כך, צריך להתקין רשימות היתרים שמתאימות לעומסי העבודה האלה. כברירת מחדל, כל אשכול במצב Autopilot או במצב רגיל מאפשר לכם להתקין רשימות היתרים משותפי Autopilot ופרויקטים ספציפיים של קוד פתוח.
לקוחות GKE שעומדים בדרישות יכולים ליצור ולנהל רשימות היתרים לעומסי עבודה עם הרשאות משלהם, שלא תואמים למגבלות ברירת המחדל של Autopilot. רשימות ההיתרים האלה הן משאבים מותאמים אישית של Kubernetes מסוג WorkloadAllowlist שמוגדרים בקובצי YAML ומאוחסנים בקטגוריות של Cloud Storage. אדמינים של זהויות וחשבונות משתמשים במדיניות ארגונית כדי להגדיר את האשכולות כך שיזהו את הרשימות הלבנות ואת מאגרי הנתונים שנוהלו על ידי הלקוח. אדמינים של אשכולות יכולים להתקין את רשימות ההיתרים האלה כדי שעומסי העבודה עם הרשאות הניהול יוכלו לפעול במצב Autopilot.
מידע נוסף על התהליך ועל האנשים שמעורבים בו זמין במאמר איך פועלת בקרת הגישה לעומסי עבודה עם הרשאות מיוחדות ב-Autopilot.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז לאתחל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שבגרסאות קודמות של ה-CLI של gcloud אי אפשר להריץ את הפקודות שבמסמך הזה.
-
מפעילים את Cloud Storage API, אם הוא עדיין לא מופעל.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק 'שימוש בשירות'' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים - מוודאים שיש לכם אשכול GKE שפועל בגרסה 1.35 ואילך. אפשר גם ליצור אשכול Autopilot למשימה הזו.
- מוודאים שיש לכם קטגוריה של Cloud Storage שבה תוכלו לאחסן קבצים של רשימת ההיתרים. אפשר גם ליצור קטגוריה למשימה הזו.
- פותחים את מניפסט ה-YAML שמגדיר את עומס העבודה עם הרשאות היתר שרוצים להריץ ב-Autopilot.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לאחסון רשימות היתרים ב-Cloud Storage ולהגדרת סנכרון, אתם צריכים לבקש מהאדמין לתת לכם את התפקידים הבאים ב-IAM ברמת הקטגוריה:
-
שמירת רשימות ההיתרים בקטגוריה:
משתמש באובייקטים באחסון (
roles/storage.objectUser) -
נותנים גישה לסוכן השירות של GKE: אדמין אחסון (
roles/storage.admin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירה והעלאה של WorkloadAllowlist
רשימות ההיתרים הן משאבים בהתאמה אישית מסוג WorkloadAllowlist שמוגדרים בקובצי YAML. השדות במפרט של WorkloadAllowlist דומים לשדות במפרט של Pod ב-Kubernetes. כשמתקינים רשימת היתרים באשכול ומפעילים עומס עבודה עם הרשאות, GKE מאמת את המפרט של עומס העבודה עם ההרשאות מול רשימת ההיתרים שהותקנה. עומס העבודה יכול לפעול רק אם כל השדות במפרט של הרשימה הלבנה תואמים לשדות המתאימים במפרט של עומס העבודה.
כדי ליצור רשימת היתרים חדשה של עומסי עבודה ולהעלות אותה לקטגוריה שלכם ב-Cloud Storage, פועלים לפי השלבים הבאים:
- מזהים את עומס העבודה עם הרשאות היתר שרוצים להוסיף לרשימת ההיתרים.
מוסיפים את ההערה הבאה לשדה
metadata.annotationsבמפרט של ה-Pod:cloud.google.com/generate-allowlist: "true"ב-Pods שמנוהלים על ידי בקר, כמו DaemonSet או Deployment, מוסיפים את ההערה לשדה
spec.template.metadata.annotations.מנסים ליצור את עומס העבודה עם הרשאות היתר באשכול:
kubectl apply -f WORKLOAD_FILE_PATHמחליפים את הערך ב-WORKLOAD_FILE_PATH בנתיב לקובץ המניפסט של עומס העבודה. מערכת GKE דוחה את עומס העבודה עם הודעת שגיאה שכוללת מניפסט של WorkloadAllowlist. הפלט אמור להיראות כך:
This workload can be enabled using the following Custom Resource. To be used in-cluster, the WorkloadAllowlist must be uploaded to Google Cloud Storage and then installed using an AllowlistSynchronizer. Refer to https://docs.cloud.google.com/kubernetes-engine/docs/how-to/autopilot-privileged-allowlists. Note that many common partner workloads are already allowlisted. These can be installed directly using an AllowlistSynchronizer. Refer to https://docs.cloud.google.com/kubernetes-engine/docs/resources/autopilot-partners. --- apiVersion: auto.gke.io/v1 kind: WorkloadAllowlist metadata: name: test-pod-allowlist-2025-09-11t22-40-37 annotations: autopilot.gke.io/no-connect: "true" exemptions: - autogke-disallow-privilege matchingCriteria: containers: - name: pause-container2 image: k8s.gcr.io/pause2 securityContext: privileged: trueבכלי לעריכת טקסט, יוצרים קובץ YAML שמכיל את WorkloadAllowlist שנוצר.
מגדירים את השדה
metadata.nameברשימת ההיתרים.אופציונלי: הופכים את רשימת ההיתרים של עומס העבודה לכללית יותר, כדי שתוכל להחריג עומסי עבודה דומים. אפשר להשתמש באחת מהשיטות הבאות:
שדות מסוימים תומכים בביטויים רגולריים, כמו
matchingCriteria.containers[*].imageו-matchingCriteria.containers[*].args. משתמשים בביטוי רגולרי שתואם לכמה ערכים בעומסי עבודה שונים.שדות ספציפיים, כמו
matchingCriteria.containersו-matchingCriteria.securityContext.capabilities.add, מתאימים לכל עומס עבודה עם קבוצת משנה של הערכים מ-WorkloadAllowlist. ב-WorkloadAllowlist, מציינים ערכים נוספים שיתאימו לעומסי עבודה אחרים.
למידע נוסף על כל השדות והערכים הנתמכים שאפשר להשתמש בהם, ראו WorkloadAllowlist CustomResourceDefinition.
אם מדיניות הארגון מאפשרת התקנה של רשימות היתרים מהמאגר שלכם באשכולות, אדמינים של אשכולות יכולים לבצע את הפעולות הבאות:
- מוסיפים נתיבים לרשימת ההיתרים באשכול.
- יוצרים AllowlistSynchronizer כדי להתקין את רשימות ההיתרים מהמאגר.
מידע נוסף על הגדרת אשכול והתקנת רשימות היתרים זמין במאמר שליטה בהרשאת עומסי עבודה עם הרשאות מיוחדות במצב אוטומטי.
הגדרה לדוגמה של רשימת היתרים
השדה matchingCriteria במפרט WorkloadAllowlist דומה במבנה שלו למפרט של Pod ב-Kubernetes. WorkloadAllowlist CustomResourceDefinition הוא המקור המהימן לכל השדות, הערכים והביטויים שבהם אפשר להשתמש.
בקטע הזה מוצגת דוגמה לרשימת היתרים שתואמת לעומס עבודה עם המאפיינים הבאים:
- קונטיינר
container-1בעומס העבודה פועל במצב הרשאות. - עומס העבודה מטמיע את הספרייה
/var/log/ממערכת הקבצים של הצומת במצב כתיבה.
בודקים את עומס העבודה לדוגמה:
apiVersion: apps/v1 kind: Deployment metadata: name: example-privileged-workload labels: env: dev spec: selector: matchLabels: env: dev template: metadata: labels: env: dev spec: containers: - name: container-1 image: example-image-1 resources: requests: cpu: "400m" memory: "4Gi" # Run the container in privileged mode securityContext: privileged: true - name: container-2 image: example-image-2 volumeMounts: - name: write-varlog mountPath: /logs readOnly: false # Mount a host directory volumes: - name: write-varlog hostPath: path: /var/log type: Directoryכברירת מחדל, Autopilot דוחה את עומס העבודה הזה.
בודקים את הרשימה לדוגמה WorkloadAllowlist:
apiVersion: auto.gke.io/v1 kind: WorkloadAllowlist minGKEVersion: 1.32.0-gke.1000000 metadata: name: example-privileged-workload annotations: autopilot.gke.io/no-connect: "true" # List of constraints that the allowlist modifies exemptions: - autogke-disallow-privilege - autogke-no-write-mode-hostpath matchingCriteria: containers: - name: container-1 image: example-image-1 securityContext: privileged: true - name: container-2 image: example-image-2 volumeMounts: - name: write-varlog mountPath: /logs readOnly: false volumes: - name: write-varlog hostPath: path: /var/logל-WorkloadAllowlist הזה יש את המאפיינים הבאים:
- הערכים בשדה
exemptionsמציינים את המגבלות של Autopilot שרשימת ההיתרים עוקפת. - הערכים בשדה
matchingCriteriaמציינים את הקונטיינרים שבהם משתמש עומס העבודה לדוגמה, ואת השדות שבדרך כלל יפרו את האילוצים של Autopilot.
ברשימת ההיתרים מופיעים רק הערכים של השדות שלא עומדים במגבלות. המערכת מתעלמת משדות אחרים בעומס העבודה, כמו השדה
resources.requests.- הערכים בשדה
כשמתקינים את רשימת ההיתרים לדוגמה הזו של עומסי עבודה באשכול, GKE מאפשר לעומס העבודה עם הרשאות להפעיל את האשכול הזה. לדוגמה, באשכול רגיל עם צמתי Autopilot, התקנת WorkloadAllowlist מאפשרת לעומס העבודה עם הרשאות מיוחדות לפעול בצמתי Autopilot.
הקצאת גישה לסוכן השירות של GKE
כדי לסנכרן רשימות היתרים מהבאקט באשכול, סוכן השירות של GKE בפרויקט של האשכול צריך את תפקידי ה-IAM הבאים:
- צפייה בקטגוריות באחסון (
roles/storage.bucketViewer) - צפייה באובייקטים באחסון (
roles/storage.objectViewer)
כדי להקצות את התפקידים האלה לסוכן השירות:
כדי למצוא את מספר הפרויקט של פרויקט האשכול:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'מקצים את התפקיד
roles/storage.bucketViewer:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --project=BUCKET_PROJECT_ID \ --role=roles/storage.bucketViewerמחליפים את מה שכתוב בשדות הבאים:
-
BUCKET_NAME: שם הקטגוריה של Cloud Storage. -
CLUSTER_PROJECT_NUMBER: מספר הפרויקט של פרויקט האשכול, מתוך הפלט של השלב הקודם. -
BUCKET_PROJECT_ID: מזהה הפרויקט שמכיל את הדלי.
-
הקצאת התפקיד
roles/storage.objectViewer:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --project=BUCKET_PROJECT_ID \ --role=roles/storage.objectViewer