ב-Assured OSS מסופקים מטא-נתונים של אבטחה לכל חבילה זמינה. לכל גרסה של החבילה יש מטא-נתונים משלה. בדף הזה מוסבר איזה מידע מסופק כחלק מהמטא-נתונים ואיך אפשר לגשת למטא-נתונים האלה.
אפשר לגשת למטא-נתוני האבטחה באמצעות אחת מהאפשרויות הבאות:
- Artifact Analysis API
- Cloud Storage
הדף הזה רלוונטי רק לתוכנית החינמית.
קובצי מטא-נתונים של אבטחה
מטא-נתוני האבטחה של כל גרסה של חבילת Assured OSS מפוזרים בין ארבעת הקבצים הבאים בקטגוריה של Cloud Storage:
-
buildinfo.zip: הקובץ הזה מכיל מטא-נתונים על פרטי הגרסה של חבילה. המטא-נתונים האלה ישתנו בתרחישים נדירים מאוד, כמו בנייה מחדש של חבילה, החלפה של אישור והוספה של שדות חדשים. -
vexinfo.zip: הקובץ הזה מכיל את פרטי הפגיעות של חבילה בפורמט CycloneDX 1.4. הערך הזה צפוי להשתנות בכל פעם שיש מידע על פגיעות בחבילה. -
healthinfo.zip: הקובץ הזה מכיל פרטים על הבדיקות שבוצעו בחבילה. הערך הזה יכול להשתנות אם סטטוס הבדיקה של חבילה משתנה. לדוגמה, אם מתבצעת בדיקת אבטחה חדשה או אם תוצאת הכיסוי משתנה. -
licenseinfo.zip: הקובץ הזה מכיל מטא-נתונים שקשורים לפרטי הרישיון של חבילה. פרטי הרישיון של חבילה יכולים להשתנות אם המוציא לאור של החבילה משנה את הפרטים.
כל קובץ ZIP מכיל את שני הקבצים הבאים:
- קובץ JSON שמכיל נתונים.
- קובץ
signature.zipשמכיל את החתימה של הנתונים האלה.
מבנה קובץ JSON
המבנה של קובצי ה-JSON מתואר בקטע הבא:
buildInfo.json
-
creationTime: שעת היצירה של המסמך בפורמט מחרוזת RFC 3339. creator: הבעלים של המסמך. הפרטים הבאים מסופקים:-
name: שם הארגון שיצר את המסמך הזה. -
email: כתובת האימייל של הארגון למקרה של שאלה או תלונה.
-
-
buildDetails: הפרטים שקשורים ליצירת הקובץ הבינארי. הפרטים הבאים מסופקים:-
packageFileName: השם של הקובץ שאליו מתייחסים פרטי הבנייה. -
buildProvenance: מחרוזת שמייצגת את אישור המקור של Build של החבילה בפורמט SLSA v0.2. הוא נוצר על ידי Cloud Build. -
envelope: מחרוזת שמייצגת מעטפת DSSE שאפשר להשתמש בה כדי לאמת את השלמות של מסמך המקור. הוא נוצר גם על ידי Cloud Build. -
slsaLevel: מציין את רמת ה-SLSA שהמערכת שמבצעת את ה-build עומדת בה. -
buildTool: השם של הכלי שמשמש ליצירת החבילה, שהוא Cloud Build. מידע נוסף זמין במאמר בנושא Cloud Build. -
transitiveClosureState: זהו ENUM שמציין אם כל התלויות ב-build של החבילה (ישירות או עקיפות) קיימות גם בפורטפוליו של Assured OSS או לא. הערך של המאפיין הזה יכול להיות אחד משני הערכים הבאים:-
OPEN: אם Assured OSS תומך באפס או רק בחלק מהתלות הטרנזיטיבית. -
CLOSED: אם כל התלויות הטרנזיטיביות נתמכות על ידי Assured OSS.
-
-
-
sourceInfo: המידע על קוד המקור ששימש לבניית החבילה. הפרטים הבאים מסופקים:-
sourceUrl: מחרוזת כתובת ה-URL של GitHub. -
commitHash: מחרוזת של גיבוב (hash) של קומיט שמצורפת לגרסה. -
tag: תג הגרסה שמשויך לגרסת החבילה. -
host: שם המערכת שמארחת את קוד המקור ב-GitHub. -
commitTime: השעה של ביצוע commit בפורמט מחרוזת RFC 3339.
-
-
sbom– מחרוזת SBOM בפורמט SPDX 2.3.
vexInfo.json
-
creationTime: שעת היצירה של המסמך בפורמט מחרוזת RFC 3339. creator: הבעלים של המסמך. הפרטים הבאים מסופקים:-
name: שם הארגון שיצר את המסמך הזה. -
email: כתובת האימייל של הארגון למקרה של שאלה או תלונה.
-
-
vexData: מחרוזת של Vulnerability Exploitability eXchange (VEX) בפורמט CycloneDX 1.4.
healthInfo.json
-
creationTime: שעת היצירה של המסמך בפורמט מחרוזת RFC 3339. creator: הבעלים של המסמך. הפרטים הבאים מסופקים:-
name: שם הארגון שיצר את המסמך הזה. -
email: כתובת האימייל של הארגון למקרה של שאלה או תלונה.
-
-
testingData: הפרטים על בדיקות האבטחה שבוצעו בחבילה. הפרטים הבאים מסופקים:-
testType: סוג הבדיקה שבוצעה. לדוגמה,FUZZ. -
tool: השם של הכלי ששימש לביצוע הבדיקה. -
testStatus: הסטטוס של הבדיקה. הסטטוס יכול להיות אחד מהבאים:-
TESTED: הבדיקה בוצעה. -
NOT_REQUIRED: לא נדרש לבצע בדיקה לחבילה. לדוגמה, לא נדרשת בדיקת fuzzing בחבילה שמכילה רק ממשקים. -
UNTESTED: החבילה לא נבדקה.
-
-
licenseInfo.json
-
package_name: השם של החבילה בפורמט מחרוזת. -
package_version: הגרסה של החבילה. -
license_info: הרישיון שמשויך לחבילה.
גישה למטא-נתונים של אבטחה מ-Cloud Storage
כדי לגשת למטא-נתונים של האבטחה מ-Cloud Storage, פועלים לפי השלבים הבאים:
שלב 1 – הגדרת אימות
למידע על הגדרת אימות, ראו הגדרת אימות.
שלב 2 – בניית כתובת ה-URL
אפשר להשתמש בפקודות gcloud storage או curl כדי להוריד את המטא-נתונים.
כדי לבנות את כתובת ה-URL לשני המקרים, משתמשים בפרטים הבאים:
- שפה:
javaאוpython. הערך חייב להיות באותיות קטנות. - Package_ID: ב-Java, זה groupId:artifactId וב-Python, זה packageName. הערך חייב להיות באותיות קטנות.
- גרסה: גרסת החבילה.
- Metadata_Type: בוחרים בין
buildinfo.zip,vexinfo.zipו-healthinfo.zip.
כתובת ה-URL צריכה להיות בפורמט הבא:
gcloud
gs://cloud-aoss-metadata/<language>/<package_id>/<version>/<metadata_type>
שימו לב שכתובת ה-URL צריכה להיות באותיות קטנות.
כתובת URL לדוגמה ב-Python: gs://cloud-aoss-metadata/python/cryptography/37.0.4/buildinfo.zip
כתובת URL לדוגמה ב-Java: gs://cloud-aoss-metadata/java/com.google.errorprone:error_prone_annotations/2.15.0/buildinfo.zip
curl
https://storage.googleapis.com/cloud-aoss-metadata/<language>/<package_id>/<version>/<metadata_type>
שימו לב שכתובת ה-URL צריכה להיות באותיות קטנות.
כתובת URL לדוגמה ב-Python: https://storage.googleapis.com/cloud-aoss-metadata/python/cryptography/37.0.4/buildinfo.zip
כתובת URL לדוגמה ב-Java: https://storage.googleapis.com/cloud-aoss-metadata/java/com.google.errorprone:error_prone_annotations/2.15.0/buildinfo.zip
שלב 3 – הורדת המטא-נתונים
משתמשים בפקודות הבאות כדי להוריד את המטא-נתונים:
gcloud
gcloud storage cp "gs://cloud-aoss-metadata/<language>/<package_id>/<version>/<metadata_type>" outputFolderLocation
כדי להוריד את כל סוגי המטא-נתונים, כמו פרטי הבנייה, פרטי הבריאות ופרטי VEX, יחד עבור חבילה וגרסה מסוימות, משתמשים בפקודה הבאה:
gcloud storage cp "gs://cloud-aoss-metadata/<language>/<package_id>/<version>" outputFolderLocation --recursive
המטא-נתונים מפוזרים בין שלושה קובצי ZIP (buildinfo.zip, healthinfo.zip, vexinfo.zip) ומורדים לתיקיית הפלט.
curl
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -L https://storage.googleapis.com/cloud-aoss-metadata/<language>/<package_id>/<version>/<metadata_type> -o output.zip
שלב 4 – חילוץ המטא-נתונים
מחלצים את קובץ ה-ZIP. ב-macOS או ב-Linux, משתמשים בפקודה unzip: unzip input.zip -d outputFolder.
כל קובץ ZIP מכיל קובץ JSON וקובץ signature.zip. קובץ ה-JSON מכיל את המטא-נתונים של האבטחה, וקובץ signature.zip מכיל קבצים לאימות החתימה של Google בקובץ ה-JSON.
הורדת פרטי הרישיון
מידע הרישיון של כל חבילות ה-Assured OSS זמין בקובץ JSON יחיד. כדי להוריד את הקובץ הזה, מריצים את הפקודה הבאה:
gcloud
gcloud storage cp "gs://cloud-aoss/info/LicenseInfo.json" outputFolderLocation
curl
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -L https://storage.googleapis.com/cloud-aoss/info/LicenseInfo.json
כדי להוריד את החתימה של קובץ המטא-נתונים של הרישיון, מריצים את הפקודה הבאה:
gcloud
gcloud storage cp "gs://cloud-aoss/info/LicenseInfo.json-sig.zip" outputFolderLocation
curl
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -L https://storage.googleapis.com/cloud-aoss/info/LicenseInfo.json-sig.zip -o output.zip
המאמרים הבאים
- גישה למטא-נתונים של אבטחת גישה באמצעות Artifact Analysis API
- הרשמה לקבלת התראות
- סקירה כללית של חתימות ארטיפקטים
- אימות חתימות
- אימות מקור הבנייה