ביקורת אוטומטית של עומסי עבודה לזיהוי בעיות בהגדרות

בדף הזה מוסבר איך לבצע ביקורת אוטומטית של הגדרות עומסי העבודה כדי לזהות בעיות אבטחה, ולקבל המלצות מעשיות לשיפור רמת האבטחה של אשכולות Google Kubernetes Engine ‏ (GKE) במצב Autopilot ובמצב Standard. במדריך הזה מוסבר איך להפעיל ביקורת על הגדרות של עומסי עבודה, איך לפרוס עומס עבודה לבדיקה, איך לצפות בתוצאות של ביקורת על הגדרות ואיך לבצע פעולות בעקבותיהן, ואיך להשבית את הביקורת על הגדרות של עומסי עבודה. היא כוללת גם את התמחור, הדרישות והמגבלות של ביקורת על הגדרות עומס העבודה.

הדף הזה מיועד למומחי אבטחה שמנטרים את האבטחה של אשכולות GKE ורוצים ללמוד איך לבצע ביקורת אוטומטית על הגדרות של עומסי עבודה באשכולות GKE Autopilot ו-Standard. כדי לקבל מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן ב Google Cloud תוכן, אפשר לעיין במאמר תפקידים נפוצים של משתמשי GKE ומשימות.

לפני שקוראים את הדף הזה, חשוב להכיר את המושגים הבאים, כי ביקורת על הגדרות עומסי עבודה היא תכונה של לוח הבקרה של מצב האבטחה:

תמחור

מרכז הבקרה של מצב האבטחה מוצע ללא תשלום נוסף ב-GKE באמצעות Container Security API.

התמחור של רשומות שנוספו ל-Cloud Logging מפורט במחירון של Cloud Logging.

לפני שמתחילים

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק ה-API של Google Kubernetes Engine.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

דרישות

  • כדי לקבל את ההרשאות שנדרשות לשימוש בביקורת על הגדרות עומסי עבודה, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד Security Posture Viewer (roles/containersecurity.viewer) בפרויקט Google Cloud . להסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

    זהו תפקיד מוגדר מראש עם ההרשאות שנדרשות לשימוש בביקורת של הגדרות עומסי עבודה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

    ההרשאות הנדרשות

    כדי להשתמש בביקורת על הגדרות של עומסי עבודה, נדרשות ההרשאות הבאות:

    • resourcemanager.projects.get
    • resourcemanager.projects.list
    • containersecurity.locations.list
    • containersecurity.locations.get
    • containersecurity.clusterSummaries.list
    • containersecurity.findings.list

    יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

  • ביקורת על הגדרות של עומסי עבודה דורשת GKE בגרסה 1.21 ואילך.

הפעלת ביקורת על הגדרת עומסי עבודה

ביקורת על הגדרת עומסי עבודה מופעלת כברירת מחדל באשכולות חדשים של Autopilot ו-Standard שמופעלת בהם גרסה 1.27 ואילך. אפשר גם להפעיל את התכונה הזו באופן ידני באמצעות ה-CLI של gcloud או מסוף Google Cloud .

הפעלת ביקורת על ההגדרות בקלאסטר קיים

gcloud

מעדכנים את האשכול:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --security-posture=standard

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: השם של האשכול.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול. מציינים אזור לאשכולות אזוריים של Standard ו-Autopilot, או אזור לאשכולות אזוריים של Standard.

המסוף

  1. נכנסים לדף Security Posture במסוף Google Cloud .

    מעבר אל 'רמת האבטחה'
  2. לוחצים על הכרטיסייה הגדרות.
  3. בקטע Configuration audit enabled clusters (אשכולות שמופעל בהם ביקורת על ההגדרה), לוחצים על Select clusters (בחירת אשכולות).
  4. מסמנים את תיבות הסימון לצד האשכולות שרוצים להוסיף.
  5. בתפריט הנפתח בחירת פעולה, בוחרים באפשרות הגדרה ל-Basic.
  6. לוחצים על אישור.

אפשר גם להגדיר הגדרות של ביקורת על ההגדרות ברמת הצי, שחלות על כל האשכולות החברים. הוראות מפורטות זמינות במאמר הגדרה של תכונות מרכז הבקרה לאבטחה של GKE ברמת הצי.

פריסת עומס עבודה לבדיקה

פריסת אפליקציה לדוגמה שמפרה בכוונה את תקני האבטחה של Pod.

  1. שומרים את קובץ המניפסט הבא בשם misconfig-sample.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
          tier: web
      template:
        metadata:
          labels:
            app: hello
            tier: web
        spec:
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            securityContext:
              runAsNonRoot: false
            resources:
              requests:
                cpu: 200m
    
  2. פורסים את האפליקציה באשכול:

    kubectl apply -f misconfig-sample.yaml
    

אם רוצים לנסות הפרות אחרות, צריך לשנות את misconfig-sample.yaml בהתאם להגדרה הבעייתית המתאימה.

הצגה של תוצאות ביקורת ההגדרות וביצוע פעולות

הביקורת הראשונית נמשכת עד 15 דקות. תוצאות הבדיקה מוצגות בלוח הבקרה של מצב האבטחה ב-GKE, וערכים נוספים באופן אוטומטי ליומני האשכול.

הצגת תוצאות

כדי לראות סקירה כללית של הבעיות שזוהו באשכולות ובעומסי העבודה של הפרויקט, מבצעים את הפעולות הבאות:

  1. נכנסים לדף Security Posture במסוף Google Cloud .

    מעבר אל 'רמת האבטחה'

  2. לוחצים על הכרטיסייה בעיות.

  3. בחלונית Filter concerns, בקטע Concern type, מסמנים את תיבת הסימון Configuration.

צפייה בפרטי הבעיה ובהמלצות

כדי לראות מידע מפורט על בעיה ספציפית בהגדרות, לוחצים על השורה שבה מופיעה הבעיה.

בחלונית Configuration Concern מוצג המידע הבא:

  • תיאור: תיאור של הבעיה.
  • הפעולה המומלצת: סקירה כללית של הפעולות שאפשר לבצע כדי לפתור את בעיית ההגדרה. בקטע הזה מופיעים הפרטים הבאים:
    • אילו משאבים צריך לתקן
    • דוגמאות לפקודות שאפשר להריץ כדי להחיל את התיקון על משאבים מושפעים
    • ההוראות במסוף, אם רלוונטיות, לפתרון הבעיה Google Cloud

צפייה ביומנים של בעיות שזוהו

‫GKE מוסיף רשומות ל_Default קטגוריה ביומן ב-Logging לכל בעיה שמתגלה. היומנים האלה נשמרים רק לפרק זמן מסוים. פרטים נוספים זמינים במאמר בנושא תקופות שמירה של יומנים.

  1. במסוף Google Cloud , נכנסים אל Logs Explorer:

    כניסה לדף Logs Explorer
  2. בשדה Query, מציינים את השאילתה הבאה:

    resource.type="k8s_cluster"
    jsonPayload.@type="type.googleapis.com/cloud.kubernetes.security.containersecurity_logging.Finding"
    jsonPayload.type="FINDING_TYPE_MISCONFIG"
  3. לוחצים על Run query.

כדי לקבל התראות כש-GKE מוסיף ממצאים חדשים ל-Logging, צריך להגדיר התראות מבוססות-יומן עבור השאילתה הזו. מידע נוסף זמין במאמר הגדרת התראות שמבוססות על יומנים.

הסרת המשאבים

  1. מוחקים את עומס העבודה לדוגמה שפרסתם.

    kubectl delete deployment helloweb
    
  2. אפשר גם למחוק את האשכול שבו השתמשתם.

    gcloud container clusters delete CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    

השבתה של ביקורת על הגדרות עומסי עבודה

אפשר להשבית את הביקורת על הגדרות עומסי העבודה באמצעות ה-CLI של gcloud או מסוף Google Cloud .

gcloud

מריצים את הפקודה הבאה:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --security-posture=disabled

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: השם של האשכול.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול. מציינים אזור לאשכולות אזוריים של Standard ו-Autopilot, או אזור לאשכולות אזוריים של Standard.

המסוף

  1. נכנסים לדף Security Posture במסוף Google Cloud .

    מעבר אל 'רמת האבטחה'
  2. לוחצים על הכרטיסייה הגדרות.
  3. בקטע Configuration audit enabled clusters (אשכולות שמופעל בהם ביקורת על ההגדרה), לוחצים על Select clusters (בחירת אשכולות).
  4. בכרטיסייה Audit enabled (ביקורת מופעלת), מסמנים את תיבות הסימון של האשכולות שרוצים להסיר.
  5. לוחצים על השבתת הביקורת ואז על אישור כדי להשבית את הביקורת באותם אשכולות.

מגבלות של ביקורת על הגדרות עומסי עבודה

  • אין תמיכה במאגרי צמתים של Windows Server.
  • בביקורת על הגדרות עומסי העבודה לא נסרקים עומסי עבודה שמנוהלים על ידי GKE, כמו עומסי עבודה במרחב השמות kube-system.
  • ביקורת על הגדרת עומס עבודה זמינה רק באשכולות עם פחות מ-1,000 צמתים.
  • לוח הבקרה של מצב האבטחה תומך בעד 150,000 ממצאים של ביקורת על הגדרות עומסי עבודה פעילים לכל אשכול. אם מספר הממצאים של אשכול חורג מהמספר המקסימלי הזה, מרכז הבקרה של מצב האבטחה מפסיק להציג ממצאים לגבי ההגדרות של האשכול הזה.

    כדי לפתור את הבעיה, צריך להשתמש ביומנים ב-Logging כדי לזהות בעיות בהגדרות ולפרוס קובצי מניפסט מעודכנים. אם מספר הממצאים של ההגדרות הוא פחות מ-150,000, לוח הבקרה של מצב האבטחה מתחיל להציג את הממצאים של האשכול.

  • בכל אשכול, מסד הנתונים של מצב האבטחה ב-GKE עוקב אחרי כל אובייקט של עומס עבודה ברמה העליונה ב-Kubernetes API. לדוגמה, פריסת Deployment שמנהלת 20 רפליקות נרשמת כאובייקט יחיד. גם Pod סטטי הוא אובייקט יחיד.

    מסד הנתונים יכול לעבד עד 5,000 פעולות של מחיקה ויצירה של אובייקטים בעסקה אחת. לדוגמה, מחיקת פריסה היא פעולה אחת, ויצירה מחדש של Pod סטטי היא שתי פעולות (מחיקה ויצירה). אם מספר הפעולות חורג מ-5,000, מרכז הבקרה של מצב האבטחה מפסיק להציג ממצאים לגבי האשכול הזה.

    אם לוח הבקרה לא מתעדכן, והגדלתם לאחרונה את מספר עומסי העבודה ברמה העליונה באשכול, תוכלו ליצור בקשת תמיכה ב-Cloud Customer Care כדי לאפס את מצב מסד הנתונים.

המאמרים הבאים