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

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

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

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

תמחור

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

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

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

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

דרישות

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

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

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

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

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

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

  • כדי להשתמש ב-Advanced vulnerability insights, צריך גרסה 1.27 של GKE או גרסה מתקדמת יותר.

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

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

רמה יכולות מופעלות דרישות לגבי גרסת GKE
רגיל
standard
סריקת נקודות חולשה במערכת ההפעלה של הקונטיינר
  • מהדורת GKE Enterprise: מופעלת כברירת מחדל בכל האשכולות החדשים שפועלים בגרסה 1.27 ואילך
תובנות מתקדמות לגבי נקודות חולשה
enterprise
  • סריקת נקודות חולשה במערכת ההפעלה של הקונטיינר
  • בדיקת נקודות חולשה בחבילת שפה
  • מהדורת GKE Enterprise: מופעלת כברירת מחדל בכל האשכולות החדשים שפועלים בגרסה 1.27 ואילך
  • ‫GKE Standard edition: מושבת כברירת מחדל בכל האשכולות החדשים.

מידע נוסף על כל אחת מהיכולות זמין במאמר מידע על בדיקת נקודות חולשה של עומסי עבודה.

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

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

הפעלת סריקה של מערכת ההפעלה של הקונטיינר באשכול קיים

gcloud

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

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --workload-vulnerability-scanning=standard

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

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

המסוף

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

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

הפעלת Advanced Vulnerability Insights

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

  • נקודות חולשה במערכת ההפעלה של הקונטיינר
  • נקודות חולשה בחבילות שפה

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

דרישות

הפעלת תובנות מתקדמות לגבי פגיעויות באשכול קיים

gcloud

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

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --workload-vulnerability-scanning=enterprise

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

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

המסוף

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

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

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

בקטע הבא מופיעות דוגמאות למניפסטים של פריסות. פריסה היא אובייקט Kubernetes API שמאפשר להפעיל כמה עותקים של Pods שמפוזרים בין הצמתים באשכול.

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

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

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: frontend
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: guestbook
          tier: frontend
      template:
        metadata:
          labels:
            app: guestbook
            tier: frontend
        spec:
          containers:
          - name: php-redis
            image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
            env:
            - name: GET_HOSTS_FROM
              value: "dns"
            resources:
              requests:
                cpu: 100m
                memory: 100Mi
            ports:
            - containerPort: 80
    
  2. כדאי לעיין במניפסט הבא, שמכיל נקודת חולשה ידועה ב-Maven:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: maven-vulns
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mavenvulns
      template:
        metadata:
          labels:
            app: mavenvulns
        spec:
          containers:
          - name: maven-vulns-app
            image: us-docker.pkg.dev/google-samples/containers/gke/security/maven-vulns
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
              - name: PORT
                value: "8080"
            resources:
              requests:
                memory: "1Gi"
                cpu: "500m"
                ephemeral-storage: "1Gi"
              limits:
                memory: "1Gi"
                cpu: "500m"
                ephemeral-storage: "1Gi"
  3. אם רוצים, מקבלים פרטי כניסה לאשכול:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    
  4. פורסים את האפליקציות באשכול:

    kubectl apply -f os-vuln-sample.yaml
    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/security/language-vulns/maven/deployment.yaml
    

כדי לבדוק פגיעויות אחרות, כדאי לנסות לפרוס גרסאות קודמות של תמונות כמו nginx בסביבות פיתוח.

צפייה בתוצאות וביצוע פעולות

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

הצגת תוצאות

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

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

    כניסה לדף Security Posture

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

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

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

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

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

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

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

‫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_VULNERABILITY"
  3. לוחצים על Run query.

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

הסרת המשאבים

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

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

    gcloud container clusters delete CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    

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

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

gcloud

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

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --workload-vulnerability-scanning=disabled

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

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

המסוף

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

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

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