שימוש בטביעות אצבע כדי לאמת את הזהויות של גרסאות החבילות

אתם יכולים להשתמש בטביעות אצבע של ארטיפקטים כדי לזהות באופן ייחודי חבילות במאגרי Artifact Registry.

כשמעלים חבילה למאגר, מערכת Artifact Registry מחשבת טביעת אצבע לגרסה של החבילה. טביעת האצבע היא הפניה קריפטוגרפית שלא ניתן לשנות, ואפשר להשתמש בה כדי לוודא שהחבילה לא שונתה כשמעבירים אותה בין מערכות שונות, כמו Compute Engine ו-Cloud Build. Google Cloudאחרי שמקבלים את טביעת האצבע של החבילה, אפשר להשתמש בה כדי לוודא שהחבילה תקפה במהלך בקשות מסוימות ל-Artifact Registry API. אפשר גם לאמת עותקים מקומיים ועותקים במאגר של אותו חבילה על ידי חישוב טביעת האצבע המקומית באופן ידני והשוואה שלה לטביעת האצבע במאגר.

לפני שמתחילים

  1. מפעילים את Artifact Registry, כולל הפעלת Artifact Registry API והתקנת Google Cloud CLI.
  2. (אופציונלי) הגדרת ברירות מחדל לפקודות gcloud.

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות להצגת טביעות אצבע של גרסאות חבילות במאגרי Artifact Registry, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Artifact Registry Reader (roles/artifactregistry.reader) בפרויקט Google Cloud . להסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

שליפת טביעת האצבע של גרסת חבילה במאגר

טביעות האצבעות בנויות כך:

VERSION@DIRSUM_SHA256:HASH_VALUE

כדי לאחזר את טביעת האצבע של גרסת חבילה במאגר של Artifact Registry, מזינים את הפקודה הבאה ב-Google Cloud CLI:

gcloud artifacts versions describe VERSION --repository=REPOSITORY --location=LOCATION --package=PACKAGE_NAME

כאשר:

  • VERSION היא הגרסה של החבילה, למשל 1.0543.
  • REPOSITORY הוא המאגר שמכיל את החבילה שאתם מעריכים
  • LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר. אפשר להשמיט את הדגל הזה אם מגדירים מיקום ברירת מחדל.
  • PACKAGE_NAME הוא שם החבילה.

התגובה אמורה להיראות כך:

fingerprints:
- type: DIRSUM_SHA256
  value: 7c07b910c6dd6df6984a5591d00ad0074fe24cd81145d2c681cdfda3b3d65a04
name: projects/test-project/locations/us-west1/repositories/test-repo/packages/test-pkg/versions/v1
updateTime: '2025-08-15T00:03:41.809228Z'

הכתובת המלאה של טביעת האצבע היא גרסת החבילה, ואחריה סוג טביעת האצבע ואז ערך הגיבוב. בדוגמה הזו, כתובת טביעת האצבע היא VERSION@DIRSUM_SHA256:7c07b910c6dd6df6984a5591d00ad0074fe24cd81145d2c681cdfda3b3d65a04.

אימות טביעות אצבע כהפניות שלא ניתן לשנות ב-Artifact Registry API

חלק מהבקשות ל-Artifact Registry API יאמתו חבילה מהמאגר שלכם אם טביעת האצבע של החבילה הזו תהיה בפורמט הבא:

VERSION@DIRSUM_SHA256:HASH_VALUE

לדוגמה, אתם רוצים ליצור קובץ מצורף בחבילה במאגר. בפקודה הבאה, החבילה שמוגדרת ל-target מעוצבת כך ש-Artifact Registry יאמת גם את טביעת האצבע של החבילה:

  gcloud artifacts attachments create my-attachment --target='projects/test-project/locations/us-west1/repositories/test-repo/packages/test-pkg/versions/v1@dirsum_sha256:30330c6b65a26ebf1a13e1b9ded4068b4c36d72ed3b62226e3243b5bee18fd31' --attachment-type="application/vnd.in-toto+json" --attachment-namespace="mynamespace.com" --files=att.txt

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

הבקשות הבאות יאמתו את טביעות האצבע שסופקו כשהן מועברות באמצעות ספריות API,‏ Google Cloud CLI ו-curl:

טביעות האצבע יאומתו בבקשות הבאות כשהן יועברו באמצעות ספריות API ו-curl:

בדיקה שהעותקים המקומיים והעותקים במאגר של חבילה זהים

כדי לוודא שחבילה לא שונתה בזמן ההעברה בין מערכותGoogle Cloud , מחשבים ידנית את טביעת האצבע של מופע של החבילה מחוץ למאגר.

כדי לחשב טביעת אצבע באופן ידני:

  1. מוצאים את טביעת האצבע של החבילה ב-Artifact Registry כמו שמתואר במאמר איך צופים בטביעת האצבע של חבילה במאגר.

  2. מחשבים ידנית את טביעת האצבע של החבילה החיצונית:

    1. משיגים את שם הקובץ הקצר ואת גיבוב SHA256 של כל קובץ בחבילה:

      1. פותחים את הדף Repositories במסוף Google Cloud :

        פתיחת הדף Repositories

      2. בוחרים את המאגר ואז בוחרים את התמונה שמכילה את גרסת החבילה שרוצים לאמת.

      3. לוחצים על הכרטיסייה קבצים.

      4. מזהים את שם הקובץ הקצר ואת גיבוב SHA256 של כל קובץ שמוצג בדף. השם הקצר של הקובץ הוא המחרוזת הסופית אחרי מיקום הקובץ. לדוגמה, בצילום המסך הבא מוצגים שישה קבצים של Version 5.0 של חבילה במאגר Maven. כל שם קובץ מתחיל ב-my-app-5.0. ערך הגיבוב של כל קובץ מוצג בעמודה Hashes:

        דוגמה לכרטיסייה **Files** בגרסה 5.0 של חבילת Maven.

    2. ממיינים את הקבצים לפי סדר אלפביתי לפי שם הקובץ הקצר.

    3. לכל רשומה בקובץ הממוין, משלבים את פרטי הקובץ במחרוזת המקוצרת הבאה, מוסיפים שני רווחים בין ערך הגיבוב לשם הקובץ ומסיימים בבייט null:

      HASH_VALUE FILE_NAME/0

    4. לוקחים כל מחרוזת מקוצרת ומשלבים אותן לרצף מלא אחד, בלי רווחים או תווים בין המחרוזות.

    5. מחשבים את ערך הגיבוב (hash) מסוג SHA256 של הרצף המלא. ערך הגיבוב (hash) הסופי לפי SHA256 הוא dirsum_sha256 של החבילה החיצונית.

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