שליטה בעלויות של סריקת פגיעויות

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

מידע נוסף מופיע בדף התמחור.

שיטות מומלצות לשמירה על עלויות נמוכות

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

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

  • מפרידים את תמונות המאגר שרוצים לסרוק לפרויקט אחר.

  • מגדירים Google Cloud פרויקט חדש ומפעילים בו את Container Scanning API. בפרויקט הזה יחולו חיובים רגילים על Artifact Registry. מעבירים לפרויקט את התמונות שרוצים לסרוק.

  • מוסיפים את השלבים הבאים לצינור העיבוד של CI/CD:

    1. מוסיפים תג שמתאים לפרויקט Artifact Registry שבו מופעלת סריקת מאגרי תגים.

    2. מעבירים את התמונות לפרויקט.

אומדן עלויות הסריקה

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

  1. פותחים את Cloud Shell בפרויקט.

    פתיחת Cloud Shell

  2. לוחצים על סמל Open Editor (פתיחת הכלי לעריכה) ויוצרים קובץ חדש cost-estimation.sh עם התוכן הבא:

        #!/bin/bash
    
        # Replace with price from https://cloud.google.com/artifact-analysis/pricing
        PRICE='PRICE'
    
        # Replace with your project data
        GC_PROJECT='PROJECT_REPOSITORY'
        START_DATE='START_DATE'
        END_DATE='END_DATE'
    
        REGION=$(echo $GC_PROJECT | sed -n 's/\/.*//p')
    
        if [ -z "$REGION" ];
        then
            printf "'GC_PROJECT' value must be a valid GCR or AR repository (e.g. gcr.io/corp-staging or us-central1-docker.pkg.dev/myproj/myrepo"
            exit 1
        fi
    
        IFS=$'\n'
        FILTER="timestamp.date('%Y-%m-%d', Z)>'$START_DATE' AND timestamp.date('%Y-%m-%d', Z)<'$END_DATE'"
    
        images=$( gcloud container images list --repository="$GC_PROJECT" | sed -n "/$REGION/p" | sed 's/NAME: //' )
    
        num_images=$(echo $images | wc -w)
    
        printf "Using gcloud to filter $num_images images from $START_DATE to $END_DATE (takes about 1 second per image)\n\n"
    
        total_digests=0
    
        for image in $images; do
        printf "querying $image\n"
        image_digests=$( gcloud container images list-tags --filter="$FILTER" "$image" 2> >(sed "s/Listed 0 items.//" | sed -n "/.\+/p" >&2) | wc -l)
    
        if [[ "$image_digests" -gt 1 ]]; then
            total_digests=$(( total_digests + $image_digests - 1 ))
        fi
        done
    
        total_price=$( python -c "print($total_digests * $PRICE)" )
    
        echo ''
        echo "Number of images: $total_digests"
        echo "Estimated cost: $total_price"
    

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

    • PRICE: המחיר לסריקה אוטומטית של נקודות חולשה שמופיע בדף תמחור.
    • PROJECT_REPOSITORY: מאגר הפרויקט. לדוגמה, gcr.io/corp-staging.
    • START_DATE: תאריך ההתחלה של התקופה להערכה, בפורמט Y-m-d. לדוגמה, 2020-03-01.
    • END_DATE: תאריך הסיום של התקופה להערכה, בפורמט Y-m-d. לדוגמה, 2020-03-31.
  3. מריצים את הסקריפט:

    bash cost-estimation.sh
    

    מוצג בה המספר הכולל של התמונות והעלות הכוללת המשוערת:

    Number of images: 53
    Estimated cost: 13.78
    

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

  • אם מעלים את אותה תמונה לכמה אזורים מרובי-אזורים באותו פרויקט, לא נוצרות עלויות נוספות.

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

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

אפשר לראות את המידע הזה בדוח החיוב.

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