במאמר הזה מוסבר איך להפעיל את Container Scanning API, להעביר קובץ אימג' ל-Artifact Registry ולראות את רשימת נקודות החולשה שנמצאו בקובץ האימג'.
ב-Artifact Analysis, פרטי הפגיעות מאוחסנים כהערות. מופע נוצר לכל מופע של הערה שמשויכת לתמונה. מידע נוסף זמין במאמרים בנושא סקירה כללית ותמחור.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry and Container Scanning APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry and Container Scanning APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - יוצרים מאגר ב-Artifact Registry ומעלים אליו חבילה עם קוד האפליקציה. אם אתם לא מכירים את האופן שבו מנהלים חבילות ב-Artifact Registry, כדאי לעיין בנושאים הבאים:
הפעלת ה-API הזה מפעילה גם סריקה של חבילות שפה ב-Artifact Registry. סוגי החבילות הנתמכים
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להצגת תוצאות הסריקה של חבילות, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- סוכן שירות Container Scanner (
roles/containerscanning.ServiceAgent) - צפייה במקרים של Container Analysis (
roles/containeranalysis.occurrences.viewer) - צפייה בהערות של Container Analysis (
roles/containeranalysis.notes.viewer) - קורא של Artifact Registry (
roles/artifactregistry.reader)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הצגת נקודות החולשה בחבילה
הכלי Artifact Analysis סורק חבילות חדשות כשהן מועלות אל Artifact Registry. בסריקה הזו מופק מידע על החבילה ועל התלות שלה.
אתם יכולים לראות את המקרים של פגיעויות בתמונות שלכם ב-Artifact Registry באמצעות מסוף Google Cloud , Google Cloud CLI או Container Analysis API. אם בתמונה יש נקודות חולשה, אפשר לקבל את הפרטים שלהן.
Artifact Analysis ממשיך לסרוק תמונות וחבילות כל עוד הן נמשכו ב-30 הימים האחרונים. אחרי 30 יום, המטא-נתונים של תמונות וחבילות שנסרקו לא יתעדכנו יותר, והתוצאות יהיו ישנות.
בניתוח ארטיפקטים, מטא-נתונים שלא עודכנו במשך יותר מ-90 יום נשמרים בארכיון. אפשר להעריך את המטא-נתונים האלה רק באמצעות ה-API. כדי לסרוק מחדש תמונה עם מטא-נתונים לא עדכניים או עם מטא-נתונים שנשמרו בארכיון, צריך לשלוף את התמונה. רענון המטא-נתונים יכול להימשך עד 24 שעות. אי אפשר לסרוק מחדש חבילות עם מטא-נתונים לא עדכניים או כאלה שהועברו לארכיון.
צפייה במקרים במסוף Google Cloud
כדי לראות את נקודות החולשה בחבילה:
מקבלים את רשימת המאגרים.
ברשימת המאגרים, לוחצים על מאגר.
ברשימת החבילות, לוחצים על שם החבילה.
הסכומים הכוללים של נקודות החולשה בכל חבילה מוצגים בעמודה Vulnerabilities (נקודות חולשה).

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

בטבלת נקודות החולשה מפורטים השם של נקודת החולשה וחשיפה נפוצה (CVE) לכל נקודת חולשה שנמצאה, רמת החומרה האפקטיבית, הציון של Common Vulnerability Scoring System (CVSS), תיקונים (אם יש), שם החבילה שמכילה את נקודת החולשה וסוג החבילה. אפשר לסנן ולמיין את הקבצים האלה כדי לבדוק קובץ ספציפי, ספרייה או סוג קובץ לפי סיומת הקובץ. Google Cloud בטבלה הזו מוצגות עד 1,200 נקודות פגיעות בכל דף.
כדי לראות פרטים על CVE ספציפי, לוחצים על שם ה-CVE.
כדי לראות פרטים על המקרים שבהם נמצאה פגיעות, כמו מספר הגרסה והמיקום שנפגע, לוחצים על הצגה או על הצגת הפגיעות שתוקנה בשורה עם שם הפגיעות. טקסט הקישור הוא View (הצגה) עבור נקודות חולשה ללא תיקון, ו-View Fixed (הצגת התיקון) עבור נקודות חולשה שבהן הוחל תיקון.
צפייה במקרים באמצעות gcloud
כדי לראות את המופעים של חבילות ב-Artifact Registry, מריצים את הפקודה gcloud artifacts versions describe:
gcloud artifacts versions describe VERSION \
--location=LOCATION --repository=REPOSITORY --package=PACKAGE --show-package-vulnerability
כאשר:
- VERSION היא הגרסה של החבילה שאת המופעים שלה אתם רואים.
- LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.
- REPOSITORY הוא שם המאגר שבו מאוחסנת החבילה.
- PACKAGE הוא שם החבילה במאגר. אי אפשר לציין תג חבילה באמצעות הפקודה הזו.
צפייה במופעים באמצעות ה-API
כדי לקבל רשימה של מקרים בפרויקט:
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
כדי לקבל סיכום של נקודות חולשה בפרויקט:
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:vulnerabilitySummary
כדי לקבל פרטים על מופע ספציפי:
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
סינון מופעים
אפשר להשתמש במחרוזות סינון בפקודות gcloud וב-Artifact Analysis API כדי לסנן מקרים לפני הצגתם. בקטעים הבאים מתוארים מסנני החיפוש הנתמכים.
צפייה במקרים מסוג מסוים
אפשר להשתמש בערך kind כדי לסנן לפי סוג המופע. אפשר לראות את הסוגים הזמינים.
בדוגמאות הבאות מוסבר איך לסנן מקרים של פגיעות בחבילות:
gcloud
ב-Google Cloud CLI אין תמיכה בסינון מקרים בסריקה מבוססת-חבילות.
API
בשאילתת ה-API, משתמשים בביטוי המסנן הבא:
kind="PACKAGE_VULNERABILITY" AND resourceUrl="RESOURCE_URL"
כאשר:
-
PACKAGE_VULNERABILITYהוא סוג המופע. - RESOURCE_URL היא כתובת ה-URL המלאה של החבילה בפורמט
projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/packages/PACKAGE_ID/PACKAGE_TYPE/VERSION_ID:- PROJECT_ID הוא Google Cloud מזהה הפרויקטבמסוף.
- LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.
- REPOSITORY הוא שם המאגר שבו מאוחסן האימג'.
- PACKAGE_ID הוא שם החבילה שבה התמונה מאוחסנת.
- PACKAGE_TYPE הוא סוג חבילת השפה של האפליקציה.
הסוגים הזמינים הם:
pythonPackages,mavenArtifactsו-npmPackages. - VERSION הוא מספר הגרסה של החבילה.
אפשר להשתמש בפונקציה hasPrefix כדי לסנן עם היקף רחב יותר.
לדוגמה, המסננים הבאים מיועדים למקרים של סוג ספציפי בכמה גרסאות של אותו חבילה:
kind="NOTE_KIND" AND has_prefix(resourceUrl, "RESOURCE_URL_PREFIX")
כאשר:
- RESOURCE_URL_PREFIX מציין מחרוזת משנה מכתובת URL של משאב.
- כדי לסנן את כל הגרסאות של חבילה, משמיטים את הגרסה. משתמשים בפורמט:
projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID - כדי לסנן את כל החבילות בפרויקט, מציינים רק את מיקום המשאב ואת הפרויקט. משתמשים בפורמט:
projects/PROJECT_ID/locations/LOCATION
- כדי לסנן את כל הגרסאות של חבילה, משמיטים את הגרסה. משתמשים בפורמט:
צפייה במקרים של נקודות חולשה
אפשר לראות רשימות של מקרים של פגיעויות באמצעות gcloud CLI או Artifact Analysis API.
gcloud
כדי לאחזר רשימה של מקרים של פגיעות בחבילה, משתמשים בדגל --show-package-vulnerability:
gcloud artifacts versions describe VERSION_ID --repository=REPOSITORY_ID
--package=GROUP_ID:ARTIFACT_ID --show-package-vulnerability
כאשר:
- VERSION הוא מספר הגרסה של החבילה.
- REPOSITORY הוא שם המאגר שבו מאוחסנת החבילה.
- GROUP_ID הוא מזהה הקבוצה של החבילה.
- ARTIFACT_ID הוא מזהה הארטיפקט של החבילה.
API
בשאילתת ה-API, משתמשים בביטוי המסנן הבא:
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=kind%3D%22VULNERABILITY%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22
כאשר:
- ENCODED_RESOURCE_URL הוא הנתיב המקודד לתמונה. מידע על קידוד זמין במאמר בנושא קידוד כתובות URL.
מידע נוסף על השימוש ב-API זמין במאמר projects.occurrences.get.
הצגת תמונות שמשויכות לפתק ספציפי
אפשר לאחזר רשימה של משאבים שמשויכים למזהה הערה ספציפי. לדוגמה, אתם יכולים להציג רשימה של תמונות עם נקודת תורפה ספציפית של CVE.
כדי להציג רשימה של כל התמונות בפרויקט שמשויכות להערה מסוימת, משתמשים במסנן הבא:
gcloud
ב-Google Cloud CLI אין תמיכה בסינון מקרים בסריקה מבוססת-חבילות.
API
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=noteProjectId%3D%22goog-vulnz%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22%20AND%20noteId%3D%22NOTE_ID%22
כאשר:
-
goog-vulnzהואPROVIDER_PROJECT_IDלניתוח פגיעויות ב-Artifact Analysis. אם אתם משתמשים ב-Artifact Analysis בפרויקט מותאם אישית, אתם יכולים להחליף את הערך הזה במזהה פרויקט הספק שלכם. - ENCODED_RESOURCE_URL הוא הנתיב המקודד לתמונה. מידע על קידוד זמין במאמר בנושא קידוד כתובות URL.
- NOTE_ID הוא המזהה של ההערה. לדוגמה, כשרואים נקודת חולשה בתוצאות הסריקה של Artifact Analysis, בדרך כלל נעשה שימוש בפורמט של מזהה CVE שדומה ל-
CVE-2019-12345.
כדי לבדוק אם יש הערה ספציפית בתמונה מסוימת, משתמשים במסנן הבא:
gcloud
ב-Google Cloud CLI אין תמיכה בסינון מקרים בסריקה מבוססת-חבילות.
API
בשילתת ה-API, מוסיפים את ביטוי הסינון הבא:
resourceUrl="RESOURCE_URL" AND noteProjectId="goog-vulnz" \ AND noteId="NOTE_ID"
כאשר:
- RESOURCE_URL היא כתובת ה-URL המלאה של החבילה בפורמט
projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/packages/PACKAGE_ID/PACKAGE_TYPE/VERSION_ID. -
goog-vulnzהואPROVIDER_PROJECT_IDלניתוח פגיעויות ב-Artifact Analysis. - NOTE_ID הוא המזהה של ההערה. הערות שקשורות לאבטחה מופיעות בדרך כלל בפורמט
CVE-2019-12345.
המאמרים הבאים
- שימוש בהתראות Pub/Sub כדי לקבל התראות על פגיעויות ומטא-נתונים אחרים.