כששומעים על פגיעות חדשה, חשוב לפעול במהירות. בדף הזה מוצגת רשימה של קריאות API ומסננים חיוניים שנבנו מראש בשבילכם. אפשר להשתמש בקריאות ה-API האלה כדי לאחזר תוצאות סריקה מ-Artifact Analysis ולאסוף מידע על הסטטוס של הארטיפקטים.
התוכן הזה מיועד לשימוש עם מטא-נתונים של סריקה אוטומטית. אם התמונות שלכם חרגו מחלון הניתוח הרציף של 30 יום, אתם יכולים להריץ סריקה חדשה על ידי שליחה חוזרת אל Artifact Registry.
בכל הדוגמאות שבדף הזה יש גישה ישירה ל-API, אבל אפשר גם להשתמש בספריות הלקוח של Container Analysis או בפקודות gcloud.
ההרשאות הנדרשות
בכל הדוגמאות האלה נעשה שימוש בשיטת ה-API ListOccurrences. כדי להפעיל את השיטה הזו, צריך את התפקיד Container Analysis Occurrences Viewer
(roles/containeranalysis.occurrences.viewer) בפרויקט שאתם מנתחים.
אם אתם מנתחים פרויקטים שבבעלותכם, כבר יש לכם את ההרשאות הנדרשות.
אם אתם מנתחים פרויקטים שלא בבעלותכם, אתם צריכים להשתמש בהוראות לניהול גישה ב-IAM כדי להעניק הרשאות.
מידע נוסף על סוגי הגישה לספקים וללקוחות שמשתמשים ב-Artifact Analysis זמין במאמר בנושא הרשאות.
הצגת כל המטא-נתונים של פגיעות בתמונה
משתמשים במסנן kind=VULNERABILITY עם מזהה הפרויקט וכתובת ה-URL המלאה של המשאב של התמונה, כולל https://:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(kind=\"VULNERABILITY\" AND resourceUrl=\"RESOURCE_URL\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
כאשר:
- PROJECT_ID הוא מזהה הפרויקט. Google Cloud
- RESOURCE_URL היא כתובת ה-URL המלאה של התמונה, בפורמט:
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH. המחרוזתhttps://חייבת להופיע בתחילת כתובת ה-URL. אם אתם צריכים למצוא את כתובת ה-URL של תמונה, אתם יכולים להשתמש בקריאה בהצגת כל המטא-נתונים של פרויקט.
הפלט כולל רשימה של נקודות חולשה עם פרטים כמו רמת החומרה, אפשרויות לצמצום הסיכון אם יש כאלה, ושם החבילה שמכילה את נקודת החולשה.
בדיקה של פגיעות ספציפית בפרויקט
ברוב המקרים, כלי Artifact Analysis משתמש במזהה CVE כמזהה הפגיעות. עם זאת, יש כמה נקודות חולשה שמפורטות במאגר המידע של GitHub Advisory ושלא משויך להן מזהה CVE. במקרה כזה, הכלי Artifact Analysis משתמש במקום זאת במזהה GHSA.
מזהה הפגיעות כלול בשדה noteName. הוא מתחיל בקידומת CVE למזהי CVE ו-GHSA למזהי GHSA. בדוגמה הבאה אפשר לראות פלט של הרצת הפקודה view all the vulnerabilities for an image:
vulnerabilities:
HIGH:
- name: projects/my-project/occurrences/1234fh2c-699a-462f-b920-93a80f56f544
resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
noteName: projects/goog-vulnz/notes/CVE-2021-32798
kind: VULNERABILITY
...
- name: projects/my-project/occurrences/OCCURRENCE_ID
resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
noteName: projects/goog-vulnz/notes/GHSA-884p-74jh-xrg2
kind: VULNERABILITY
...
בדוגמה הזו, הפגיעות הראשונה היא עם המזהה CVE-2021-32798 והפגיעות השנייה היא עם המזהה GHSA-884p-74jh-xrg2.
אחרי שמקבלים את מזהה הפגיעות, אפשר להריץ את הפקודה הבאה כדי לאחזר רשימה של תמונות מושפעות בפרויקט עם מזהה מופע של VULN_ID:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(noteProjectId=\"goog-vulnz\" AND noteId=\"VULN_ID\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
כאשר:
- PROJECT_ID הוא מזהה הפרויקט. Google Cloud
- VULN_ID: מזהה הפגיעות כמזהה CVE או מספר מזהה GHSA, למשל
CVE-2021-32798אוGHSA-884p-74jh-xrg2.
חיפוש פגיעויות בכמה פרויקטים
אפשר להשתמש ב-globbing של curl כדי להריץ שאילתות בכמה פרויקטים.
לדוגמה, קטע הקוד הבא מגדיר משתנה שיכיל שני מזהי פרויקט, ואז שולח קריאה ל-API לכל פרויקט כדי לחפש מקרים.
PROJECT_IDS="PROJECT_ID_1,PROJECT_ID_2"
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://containeranalysis.googleapis.com/v1/projects/{$PROJECT_IDS}/occurrences"
כאשר:
- PROJECT_ID_1 הוא מזהה הפרויקט של הפרויקט הראשון שרוצים לבדוק. Google Cloud
- PROJECT_ID_2 הוא מזהה הפרויקט של הפרויקט השני שרוצים לבדוק. Google Cloud
הצגת כל המטא-נתונים של פרויקט
בקשה של כל המופעים שמשויכים למזהה הפרויקט:
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
כאשר:
- PROJECT_ID הוא מזהה הפרויקט. Google Cloud
הפלט כולל מידע על פגיעויות וסוגים נתמכים אחרים של מטא-נתונים שמשויכים לפרויקט. לדוגמה, יכול להיות שבפרויקט שלכם יש פרטי בנייה או אישורים.
בדיקה של חבילה ספציפית בפרויקט
ב-Artifact Analysis נוצרים יחסי תלות של חבילות לארטיפקטים שנסרקו. כדי למצוא את כל הארטיפקטים שיש להם חבילה ספציפית כתלות, אפשר לסנן לפי שם החבילה:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(dependencyPackageName=\"PACKAGE_NAME\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
כאשר:
- PROJECT_ID הוא מזהה הפרויקט. Google Cloud
- PACKAGE_NAME הוא שם החבילה.
הצגת כל המטא-נתונים של חבילה של תמונה
כדי לראות את כל סוגי המטא-נתונים של חבילה לתמונה, משתמשים במסנן kind=PACKAGE_NAME עם מזהה הפרויקט וכתובת ה-URL המלאה של משאב התמונה:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(kind=\"PACKAGE\" AND resourceUrl=\"RESOURCE_URL\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
כאשר:
- PROJECT_ID הוא מזהה הפרויקט. Google Cloud
- RESOURCE_URL היא כתובת ה-URL המלאה של התמונה, בפורמט
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH. המחרוזתhttps://חייבת להופיע בתחילת כתובת ה-URL. אם אתם צריכים למצוא את כתובת ה-URL של תמונה, אתם יכולים להשתמש בקריאה מתוך הצגת כל המטא-נתונים של פרויקט.
הפלט כולל רשימת תלות עם שם התלות, הגרסה ופרטי הרישיון.
שאילתה לגבי מופע ספציפי כדי לראות את כל הפרטים שזמינים
אפשר להריץ שאילתה כדי לקבל פרטים נוספים על מופע. לדוגמה, אם אתם משתמשים ב-Pub/Sub כדי לקבל התראות על מקרים של נקודות חולשה, מערכת Pub/Sub שולחת פרטים בסיסיים שיעזרו לכם לזהות את המקרה שהשתנה ומתי השינוי קרה.
המטען הייעודי (Payload) כולל מזהה של מופע. אפשר להשתמש במזהה המופע כדי לשלוח שאילתה לגבי פרטים שיעזרו לכם לתעדף בעיות ולנקוט פעולה.
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences/OCCURRENCE_ID
כאשר:
- PROJECT_ID הוא מזהה הפרויקט. Google Cloud
הפרמטר OCCURRENCE_ID יכול להיות אחת מהאפשרויות הבאות, בהתאם לפלט של הפקודה מהצגת כל המטא-נתונים של פרויקט:
- ערך מספרי מרשימת מקרים.
- הערך המספרי בסוף כתובת ה-URL מהודעת Pub/Sub.
הפלט כולל מידע כמו סוג החבילה, חומרת נקודת החולשה, ציון CVSS ומידע על תיקונים, אם יש כאלה.
המאמרים הבאים
- מידע נוסף על אפשרויות סינון של מטא-נתונים
- הפעלת סריקה ידנית לפי דרישה
- שיטות מומלצות להגנה על שרשרת אספקת התוכנה