בדף הזה מוסבר איך לאמת את החתימה על ארטיפקטים של Assured OSS.
הדף הזה רלוונטי רק לתוכנית החינמית. במאמר גישה למטא-נתוני אבטחה ואימות חבילות מוסבר על רמת הפרימיום.
אימות חבילה
חתימות של חבילות מאוחסנות בנפרד מהחבילה בקטגוריה של Cloud Storage בפורמט ZIP.
אפשר לאמת חתימות באמצעות הכלי לאימות Assured OSS (aoss-verifier) או באמצעות סקריפט אימות.
שימוש בכלי aoss-verifier
לפני שמשתמשים בכלי הזה, צריך לוודא ש-Go מותקן במערכת. אם Go לא מותקנת, מתקינים אותה מהאתר של Go.
כדי לאמת את האותנטיות והשלמות של חבילות תוכנה בקוד פתוח, צריך להתקין את הכלי aoss-verifier.
מייצאים את
$(go env GOPATH)/binומריצים את הפקודהaoss-verifier verify-package.aoss-verifier verify-package \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ --artifact_path ARTIFACT_PATH \ [--disable_certificate_verification] \ [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \ [--disable_deletes]מחליפים את מה שכתוב בשדות הבאים:
- LANGUAGE: שפת חבילת התכנות,
javaאוpython. הערך חייב להיות באותיות קטנות. - PACKAGE_ID: ב-Java, זה groupId:artifactId, וב-Python, זה packageName. הערך חייב להיות באותיות קטנות.
- VERSION: הגרסה של החבילה.
- ARTIFACT_PATH: הנתיב לקובץ הנתונים בספרייה המקומית שרוצים לאמת. משתמשים בסיומות הבאות של שמות קבצים:
- סיומת הקובץ
jarלחבילת Java - סיומת הקובץ
whlלחבילת Python
- סיומת הקובץ
--disable_certificate_verificationהוא דגל אופציונלי שמאפשר לדלג על התאמה של אישור עלים לאישור הבסיס דרך שרשרת האישורים, אם משתמשים בו.
--temp_downloads_pathהוא דגל אופציונלי להגדרת הנתיב שבו רוצים להוריד את הקבצים. (מחליפים את TEMP_DOWNLOADS_DIR_PATH). אם לא מגדירים את הדגל הזה, הקבצים יורדים לתיקייה TEMP_DOWNLOADS_DIR_PATH בספרייה הנוכחית.tmp_downloads
--disable_deletesהוא דגל אופציונלי ששומר את הקבצים שהורדו. כברירת מחדל, הכלי מנקה את כל הקבצים שהורדו.- LANGUAGE: שפת חבילת התכנות,
מידע נוסף זמין בREADME.
שימוש בסקריפט אימות
בקטע הזה מוסבר איך להשתמש בסקריפט אימות כדי לאמת את החתימות של חבילות שהורדו.
שלב 1: מקבלים את כתובת ה-URL של החתימה
כתובת ה-URL של קובץ ה-ZIP זמינה במטא-נתוני האבטחה של כל חבילה. הדוגמה הבאה היא דוגמה מתוך המטא-נתונים של Container Analysis.
כמו שרואים בדוגמה הבאה, אפשר למצוא את כתובת ה-URL של קובץ ה-ZIP של החתימה בשדה description: digestUrl.
package {
distribution {
cpe_uri: "cpe:2.3:a:JAVA::com.fasterxml.jackson.core:jackson-databind:2.13.3:*:*:*:*:*:*:*"
maintainer: "<nil>"
url: "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/fasterxml/jackson/core/jackson-databind/2.13.3/jackson-databind-2.13.3.jar"
description: "{\n \"artifactMetadataList\": [\n {\n \"digestUrl\": \"gs://cloud-aoss/java/com.fasterxml.jackson.core:jackson-databind/2.13.3/jackson-databind-2.13.3_binary_2022-10-12T06:54:05Z.zip\"\n }\n ]\n}"
}
distribution {
cpe_uri: "cpe:2.3:a:JAVA::com.fasterxml.jackson.core:jackson-databind:2.13.3:*:*:*:*:*:*:*"
url: "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/fasterxml/jackson/core/jackson-databind/2.13.3/jackson-databind-2.13.3-sources.jar"
description: "{\n \"digestUrl\": \"gs://cloud-aoss/java/com.fasterxml.jackson.core:jackson-databind/2.13.3/jackson-databind-2.13.3-sources_source_2022-10-12T06:54:05Z.zip\"\n}"
}
}
דוגמה מתוך המטא-נתונים של Cloud Storage (buildInfo.json file). כמו שרואים בדוגמה הבאה, אפשר לקבל את כתובת ה-URL של קובץ ה-ZIP של החתימה מהשדה externalRefs : referenceLocator.
"packages": [
{
"SPDXID": "SPDXRef-Package-logback-core-1.2.11.jar",
"checksums": [
{
"algorithm": "SHA256",
"checksumValue": "c847e0e310acda8bc1347c9d9cc051e91210b9f943e131fceb5034c2f0c9a5d8"
}
],
"downloadLocation": "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/ch/qos/logback/logback-core/1.2.11/logback-core-1.2.11.jar",
"externalRefs": [
{
"referenceCategory": "SECURITY",
"referenceLocator": "cpe:2.3:a:*:JAVA\\:\\:ch\\.qos\\.logback\\:logback\\-core:1\\.2\\.11:*:*:*:*:*:*:*",
"referenceType": "cpe23Type"
},
{
"referenceCategory": "OTHER",
"referenceLocator": "gs://cloud-aoss/java/ch.qos.logback:logback-core/1.2.11/logback-core-1.2.11_binary_2022-10-12T14:19:11Z.zip",
"referenceType": "digestURL"
}
],
אפשר להשתמש בקובץ ה-zip של החתימה המקומית לאימות ידני, או בכתובת ה-URL של Cloud Storage ישירות כדי להשתמש בסקריפט האימות. כדי להוריד את הקובץ signature.zip:
מגדירים אימות באמצעות Application Default Credentials (ADC).
מורידים את
signature.zipבאמצעות הפקודה הבאה:gcloud storage cp SIGNATURE_ZIP_URL PATH_TO_LOCAL_STORE --recursiveמחליפים את מה שכתוב בשדות הבאים:
- SIGNATURE_ZIP_URL: כתובת ה-URL של קובץ ה-ZIP של החתימה.
- PATH_TO_LOCAL_STORE: הנתיב המקומי שבו רוצים להוריד את הקובץ.
שלב 2: מקבלים את אישור הבסיס
כדי לגשת לאישור הבסיס, משתמשים בכתובת ה-URL הבאה:
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
אפשר להוריד את האישור באופן מקומי או להשתמש ישירות בקישור לאישור. כדי להוריד את האישור, מריצים את הפקודה הבאה:
curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
מחליפים את PATH_TO_LOCAL_STORE בנתיב המקומי שבו רוצים להוריד את האישור.
שלב 3: מאתרים את קובץ החבילה
הקובץ שנאמת הוא קובץ ה-jar לחבילות Java וקובץ ה-wheel לחבילות Python. הקובץ הזה יהיה PATH_TO_DATA_FILE לצורך אימות.
שלב 4: אימות
אפשר לאמת ידנית את קובץ ה-ZIP של החתימה באמצעות השלבים שמופיעים במאמר בנושא אימות חתימה ידני, או להשתמש בסקריפט האימות.
כדי לבצע אימות באמצעות סקריפט אימות, מריצים את הפקודות הבאות:
מורידים את סקריפט האימות ומעניקים הרשאות.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.shמריצים את סקריפט האימות ומאמתים. אפשר להשתמש בכתובות URL מרוחקות או בנתיבים מקומיים עבור קובץ ה-zip של החתימה ואישור הבסיס.
./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url SIGNATURE_ZIP_URL --root_cert_url ROOT_CERT_URLמחליפים את מה שכתוב בשדות הבאים:
- PATH_TO_DATA_FILE עם הנתיב לקובץ החבילה שצוין בשלב 3
- SIGNATURE_ZIP_URL בכתובת ה-URL של קובץ ה-ZIP של החתימה שהתקבלה בשלב 1.
- ROOT_CERT_URL בכתובת ה-URL של אישור הבסיס שהתקבלה בשלב 2.
אימות מטא-נתונים
בקטע הזה מוסבר איך אפשר לאמת את החתימה במטא-נתונים של Assured OSS שאליהם ניגשים באמצעות Cloud Storage.
שימוש בכלי aoss-verifier
אפשר להשתמש בכלי aoss-verifier כדי לבדוק את המטא-נתונים.
לפני שמשתמשים בכלי הזה, צריך להתקין את Go.
מתקינים את הכלי aoss-verifier.
מייצאים את
$(go env GOPATH)/binומריצים את הפקודהaoss-verifier verify-metadata.aoss-verifier verify-metadata \ --metadata_type TYPE \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ [--disable_certificate_verification] \ [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \ [--disable_deletes]מחליפים את מה שכתוב בשדות הבאים:
- TYPE: הערכים האפשריים הם
buildinfo,vexinfoו-healthinfo. - LANGUAGE: שפת חבילת התכנות,
javaאוpython. הערך חייב להיות באותיות קטנות. - PACKAGE_ID: ב-Java, הפורמט הוא groupId:artifactId. ב-Python, הפורמט הוא packageName. הערך חייב להיות באותיות קטנות.
- VERSION: הגרסה של החבילה.
--disable_certificate_verificationהוא דגל אופציונלי שמאפשר לדלג על ההתאמה בין אישור הקצה לאישור הבסיס דרך שרשרת האישורים, אם משתמשים בו.
--temp_downloads_pathהוא דגל אופציונלי להגדרת הנתיב שבו רוצים להוריד את הקבצים (צריך להחליף את TEMP_DOWNLOADS_DIR_PATH). אם הדגל הזה לא מוגדר, הקבצים יורדים לתיקייהtmp_downloadsבספרייה הנוכחית.
--disable_deletesהוא דגל אופציונלי ששומר את הקבצים שהורדו. כברירת מחדל, הכלי מנקה את כל הקבצים שהורדו.- TYPE: הערכים האפשריים הם
מידע נוסף זמין בREADME.
שימוש בסקריפט אימות
בקטע הזה מוסבר איך להשתמש בסקריפט אימות כדי לאמת את קובץ המטא-נתונים של האבטחה.
שלב 1: מקבלים את קובץ ה-ZIP של החתימה ואת קובץ המטא-נתונים
אנחנו יכולים לגשת למטא-נתונים כמו שמתואר בקטע גישה למטא-נתונים. קובץ המטא-נתונים יופיע עם קובץ ה-signature.zip.
דוגמה – התוכן של buildInfo.zip
buildInfo.json
signature.zip
buildInfo.json הוא קובץ המטא-נתונים שנדרש לאימות, ו-signature.zip הוא קובץ ה-ZIP של החתימה.
שלב 2: מקבלים את אישור הבסיס
כדי להוריד את אישור הבסיס, משתמשים בקישור הבא לכתובת ה-URL:
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
אפשר להוריד את האישור באופן מקומי או להשתמש ישירות בקישור לאישור. כדי להוריד את האישור, מריצים את הפקודה הבאה:
curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
מחליפים את PATH_TO_LOCAL_STORE בנתיב המקומי שבו רוצים להוריד את האישור.
שלב 3: אימות
אפשר לאמת את signature.zip באמצעות אימות ידני או באמצעות סקריפט האימות.
כדי לבצע אימות באמצעות סקריפט אימות, מריצים את הפקודות הבאות:
מורידים את סקריפט האימות ומעניקים הרשאות.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.shמריצים את סקריפט האימות ומאמתים. צריך להשתמש בנתיב המקומי של קובץ ה-ZIP של החתימה. לגבי אישור הבסיס, אפשר להשתמש בכתובת ה-URL או בנתיב המקומי. קובץ הנתונים יהיה קובץ המטא-נתונים שאנחנו בודקים –
buildInfo.json,vexInfo.jsonאוhealthInfo.json../signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_local_path SIGNATURE_LOCAL_PATH --root_cert_url ROOT_CERT_URLמחליפים את מה שכתוב בשדות הבאים:
PATH_TO_DATA_FILE עם קובץ המטא-נתונים שאנחנו מאמתים, כפי שצוין בשלב 1.
SIGNATURE_LOCAL_PATH בכתובת ה-URL של קובץ ה-ZIP של החתימה שהתקבלה בשלב 1.
ROOT_CERT_URL בכתובת ה-URL של אישור הבסיס שהתקבלה בשלב 2.
אם רוצים להשתמש באישור מקומי שכבר הורד, צריך להשתמש באפשרות הזו במקום:
--root_cert_local ROOT_CERT_LOCALמחליפים את ROOT_CERT_LOCAL בנתיב של האישור המקומי.
אימות סקריפט של כלי
Assured OSS מספקת שלושה סקריפטים של כלי עזר. בקטע הזה מוסבר איך מאמתים את החתימה בסקריפטים האלה.
מחולל Python Requirements.txt
אפשר לגשת לחתימה של הקובץ הזה בכתובת
gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator-sig.zip. אפשר לאמת את signature.zip באמצעות אימות ידני או באמצעות סקריפט האימות.
כדי לאמת במהירות את החתימה באמצעות סקריפט האימות, פועלים לפי השלבים הבאים:
אם עדיין לא הורדתם את קובץ הסקריפט של מחולל
requirements.txt, הורידו את הקובץ.gcloud storage cp "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh" . --recursiveמאחזרים את אישור הבסיס. כתובת ה-URL של הקישור היא
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtאפשר להוריד את האישור באופן מקומי או להשתמש בקישור לאישור ישירות. כדי להוריד את האישור, מריצים את הפקודה הבאה:curl -o PATH_TO_LOCAL_STORE/ca.crt "https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt"מחליפים את PATH_TO_LOCAL_STORE בנתיב המקומי שבו רוצים להוריד את האישור.
מורידים את סקריפט האימות, אם עדיין לא עשיתם זאת.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.shמריצים את סקריפט האימות ומאמתים.
./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator-sig.zip" --root_cert_url ROOT_CERT_URLמחליפים את מה שכתוב בשדות הבאים:
- PATH_TO_DATA_FILE עם הנתיב המקומי של סקריפט
generator.shשרוצים לאמת, כפי שצוין בשלב 2. - ROOT_CERT_URL עם כתובת ה-URL של אישור הבסיס. אם רוצים להשתמש באישור מקומי שכבר הורד, מריצים את הפקודה הבאה:
–root_cert_local ROOT_CERT_LOCALמחליפים את ROOT_CERT_LOCAL בנתיב המקומי של אישור הבסיס.
- PATH_TO_DATA_FILE עם הנתיב המקומי של סקריפט
סקריפט לאימות חתימה
אפשר לגשת לחתימה של הקובץ הזה בכתובת gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip. אפשר לאמת את signature.zip באמצעות אימות ידני או באמצעות סקריפט האימות.
כדי לאמת במהירות את החתימה באמצעות סקריפט האימות, פועלים לפי השלבים הבאים:
אם עדיין לא הורדתם את קובץ הסקריפט של אימות החתימה, הורידו אותו.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.shמאחזרים את אישור הבסיס. כתובת ה-URL של הקישור היא
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtאפשר להוריד את האישור באופן מקומי או להשתמש בקישור לאישור ישירות. הפקודה להורדת האישור:curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtמחליפים את PATH_TO_LOCAL_STORE בנתיב המקומי שבו רוצים להוריד את האישור.
מריצים את סקריפט האימות ומאמתים.
./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip" --root_cert_url ROOT_CERT_URLמחליפים את מה שכתוב בשדות הבאים:
PATH_TO_DATA_FILE עם הנתיב המקומי של סקריפט האימות שרוצים לאמת, כפי שהתקבל בשלב 2. ROOT_CERT_URL עם כתובת ה-URL של אישור הבסיס. אם רוצים להשתמש באישור מקומי שכבר הורד, צריך להשתמש באפשרות הזו:
–root_cert_local ROOT_CERT_LOCALמחליפים את ROOT_CERT_LOCAL בנתיב המקומי של אישור הבסיס.
הורדת סקריפט של מטא-נתונים
אפשר לגשת לחתימה של הקובץ הזה בכתובת gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata-sig.zip. אפשר לאמת את signature.zip באמצעות אימות ידני או באמצעות סקריפט האימות.
כדי לאמת במהירות את החתימה באמצעות סקריפט האימות, פועלים לפי השלבים הבאים:
אם עדיין לא הורדתם את קובץ הסקריפט
download_metadata.py, הורידו אותו.gcloud storage cp "gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata.py" . --recursiveמאחזרים את אישור הבסיס. כתובת ה-URL של הקישור היא
https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtאפשר להוריד את האישור באופן מקומי או להשתמש בקישור לאישור ישירות.כדי להוריד את האישור, מריצים את הפקודה הבאה:
curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtמחליפים את PATH_TO_LOCAL_STORE בנתיב המקומי שבו רוצים להוריד את האישור.
מורידים את סקריפט האימות.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.shמריצים את סקריפט האימות ומאמתים.
./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata-sig.zip --root_cert_url ROOT_CERT_URLמחליפים את מה שכתוב בשדות הבאים:
- PATH_TO_DATA_FILE עם הנתיב המקומי של סקריפט
download_metadata.pyשרוצים לאמת, כפי שצוין בשלב 2. - ROOT_CERT_URL עם כתובת ה-URL של אישור הבסיס. אם רוצים להשתמש באישור מקומי שכבר הורד, מריצים את הפקודה הבאה:
–root_cert_local ROOT_CERT_LOCALמחליפים את ROOT_CERT_LOCAL בנתיב המקומי של אישור הבסיס.
- PATH_TO_DATA_FILE עם הנתיב המקומי של סקריפט