הורדת חבילות Python באמצעות גישה ישירה למאגר

במסלול פרימיום, חבילות Assured OSS מתארחות במאגר Artifact Registry שנוצר בפרויקט שבשליטתכם. כדי לגשת ישירות לחבילות Python ולהוריד אותן, אתם יכולים להתחבר למאגר של Assured OSS ב-Artifact Registry.

המסמך הזה רלוונטי רק למסלול הפרימיום של Assured OSS. בתוכנית בחינם, עיינו במאמר הורדת חבילות Python באמצעות גישה ישירה למאגר בתוכנית בחינם.

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

  1. מבקשים מהאדמין להקצות לכם את התפקיד אדמין של מפתח חשבון שירות (roles/iam.serviceAccountKeyAdmin) ב-IAM בארגון. אתם צריכים את ההרשאה הזו כדי לקבל את המחרוזת בקידוד base64 של מפתח חשבון השירות. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

  2. שילוב של Assured OSS עם Security Command Center

  3. מאמתים את הקישוריות ל-Assured OSS של חשבונות השירות המבוקשים.

  4. מתקינים את הגרסה העדכנית של Google Cloud CLI. אם כבר התקנתם את Google Cloud CLI, ודאו שפועלת אצלכם הגרסה העדכנית ביותר באמצעות הפקודה הבאה:

    gcloud components update
    

מגדירים אימות

כדי לבצע אימות למאגר החבילות של Assured OSS Python, אפשר להשתמש באחת מהשיטות הבאות:

  • אימות באמצעות אוסף מפתחות של Python
  • אימות באמצעות מפתח לחשבון שירות

בקטעים הבאים מוסבר איך להגדיר את שיטות האימות האלה.

אימות באמצעות אוסף מפתחות של Python

כדי להשתמש באוסף המפתחות של Python לאימות ב-Artifact Registry, קראו את המאמרים אימות באמצעות אוסף מפתחות וסדר החיפוש של פרטי הכניסה. מומלץ להשתמש ב-Python keyring לאימות.

כדי להגדיר את אוסף המפתחות של Python לאימות, מבצעים את הפעולות הבאות:

  1. מתקינים את הספרייה keyring:

    pip install keyring
    
  2. מתקינים את הקצה העורפי של Artifact Registry:

    pip install keyrings.google-artifactregistry-auth
    
  3. מציגים את רשימת הקצוות העורפיים כדי לוודא שההתקנה בוצעה:

    keyring --list-backends
    

    הרשימה צריכה לכלול את הפרטים הבאים:

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority:9)
  4. במאמר הגדרת אימות מוסבר איך מגדירים את Application Default Credentials.

    השלב הזה מבטיח שכלי העזר לאישורים של Assured OSS יקבל את המפתח שלכם כשהוא יתחבר למאגרים.

אימות באמצעות מפתח לחשבון שירות

בצעו אימות באמצעות מפתח של חשבון שירות כשהאפליקציה דורשת אימות באמצעות שם משתמש וסיסמה.

מחליפים את כתובת ה-URL של מאגר החבילות https://LOCATION-python.pkg.dev/PROJECT_ID/assuredoss-python/simple בכתובת ה-URL‏ https://_json_key_base64:$BASE64_KEY@LOCATION-python.pkg.dev/PROJECT_ID/assuredoss-python/simple.

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט שבחרתם כשהגדרתם את Assured OSS.

  • ‫LOCATION: אזור נתמך.

התקנת חבילות

ההוראות הבאות מבוססות על ההנחה שאתם משתמשים ב-PyPI וב-requirements.txt כדי להוריד ולנהל את יחסי התלות שלכם. אם אתם משתמשים בתהליך אחר לניהול יחסי תלות, תצטרכו לבצע שלבים אחרים.

התקנת חבילות ב-Assured OSS

כדי לציין את חבילות Assured OSS Python שרוצים להוריד, יוצרים שני קובצי requirements.txt. אלה קובצי הדוגמה:

  • requirements-google.txt

    # Packages present in Google's Artifact Registry
    
    urllib3==1.26.11 --hash=sha256:1cffe1aa066363a75c856f261c8fce62d87f7c40ce0f46453ea12bf652b12a13
    jsonschema==4.13.0 --hash=sha256:29895bfe55b93b75552fbdd1e09aa0c82b7c1c9395d4f267e10c7d43cd31a74e
    
  • requirements-pypi.txt

    # Packages present in Google's Artifact Registry are mentioned here so that pip
    # downloads their dependencies from PyPI.
    
    urllib3==1.26.11
    jsonschema==4.13.0
    
    # Below this comment, add any package version which you need but is NOT
    # present in Google's Artifact Registry and therefore needs to be downloaded from
    # PyPI.
    

כדי להוריד את החבילות, מריצים את הפקודות הבאות:

  • כדי להוריד את החבילות הנדרשות שנמצאות ב-Artifact Registry ל-Assured OSS, מריצים את הפקודה הבאה:

     pip install --require-hashes --requirement=requirements-google.txt \
         --index-url https://_json_key_base64:$BASE64_KEY@LOCATION-python.pkg.dev/PROJECT_ID/assuredoss-python repo/simple -v \
         --no-deps
    

    כמה נקודות שכדאי לחשוב עליהן:

    • --require-hashes הוא אופציונלי. אם הם נכללים, ערכי ה-Hash מצוינים לכל החבילות ולכל גרסאות החבילות בקובץ requirements.txt. כדי להבטיח אבטחה ויכולת שחזור, מומלץ להצמיד יחסי תלות עם גיבובי SHA-256 בקובץ requirements.txt.
    • -v הוא אופציונלי. אם מציינים את הדגל, הפקודה מחזירה יותר פלט.
    • מחליפים את LOCATION באזור נתמך.
  • כדי להוריד את החבילות הנדרשות שלא נמצאות ב-Artifact Registry ל-Assured OSS, מריצים את הפקודה הבאה:

     pip install --requirement=requirements-pypi.txt --index-url https://pypi.org/simple -v
    

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

הצגת רשימה של כל חבילות Python שזמינות ב-Assured OSS

כדי להשתמש ב-API כדי לקבל רשימה של כל חבילות Python במאגר Artifact Registry, קראו את המאמר הצגת רשימה של כל חבילות Python שזמינות ב-Assured OSS.

המערכת יוצרת את הקובץ requirements-google.txt

בקטע הזה מוסבר איך ליצור את הקובץ requirements-google.txt שצריך כדי להוריד את חבילות Python. כדי להוריד את ה-hash וליצור את הקובץ requirements-google.txt לסביבה שלכם, אתם יכולים להשתמש באחת משתי האפשרויות הבאות:

  • משתמשים בסקריפט כדי ליצור קובץ דרישות אחד לכל פריטי המידע שנוצרו בתהליך הפיתוח.

  • מורידים קובץ דרישות נפרד לכל פריט מידע שנוצר בתהליך הפיתוח.

בקטעים הבאים מוסבר בהרחבה על האפשרויות האלה.

אפשרות 1: שימוש בסקריפט כדי ליצור קובץ דרישות אחד לכל פריטי המידע שנוצרו בתהליך הפיתוח (Artifact)

משתמשים בסקריפט generator.sh כדי ליצור קובץ requirements-google.txt יחיד לכל חבילות Python (יחד עם הגיבובים שלהן) שזמינות עם Assured OSS למערכת ההפעלה Linux. החבילות צריכות לעמוד במגבלות כמו גרסת Python, ארכיטקטורת המכונה ומערכת ההפעלה. אחר כך תוכלו למחוק את גרסאות החבילה שאתם לא צריכים ולהשתמש בקובץ שנוצר.

הסקריפט generator.sh עוזר בשתי דרכים:

  • יוצרת את הרשימה העדכנית ביותר של גרסאות חבילות Python שזמינות עם Assured OSS, שאפשר להתקין במערכת.
  • יוצר את הקובץ requirements-google.txt יחד עם כל הגיבובים.

הסקריפט הנדרש וקובץ ה-README.md שלו זמינים בקטגוריה של Cloud Storage (gs://cloud-aoss/utils/python-requirements-txt/v1.0), ואפשר להוריד אותם באמצעות Google Cloud CLI.

כדי להוריד את הסקריפט ואת קובץ ה-README.md:

  1. כדי לגשת לקטגוריה של Cloud Storage, מאמתים את חשבון השירות באמצעות הפקודה הבאה:

    gcloud auth activate-service-account --key-file KEY_FILE
    

    מחליפים את KEY_FILE בנתיב לקובץ שמכיל את פרטי הכניסה של חשבון השירות שסופקו במהלך ההגדרה.

  2. מורידים את generator.sh למכונה באמצעות הפקודה הבאה:

    gcloud storage cp gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh PATH_TO_LOCAL_STORE --recursive
    

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

  3. מורידים את הקובץ README.md באמצעות הפקודה הבאה:

    gcloud storage cp gs://cloud-aoss/utils/python-requirements-txt/v1.0/README.md PATH_TO_LOCAL_STORE --recursive
    

    מחליפים את PATH_TO_LOCAL_STORE בנתיב המקומי שבו רוצים לשמור את הקובץ שהורדתם. הקובץ README.md מכיל הוראות לשימוש בסקריפט.

כדי להריץ את הסקריפט, משתמשים בפקודות הבאות:

  • כדי ליצור את הקובץ requirements-google.txt, מריצים את הפקודה הבאה:

     chmod +x generator.sh
     ./generator.sh
    
  • כדי לקבל את פרטי החבילה בקובץ CSV, מריצים את הפקודה הבאה:

    chmod +x generator.sh
    ./generator.sh -i
    

אפשרות 2: הורדת requirements.txt לכל פריט מידע נדרש

אפשר גם להוריד קובץ requirements.txt נפרד (שמכיל את ה-hash) לכל פריט מידע שנוצר ב-Python, ואז לשלב אותם לקובץ requirements.txt אחד.

ערכי ה-hash של פריטי המידע זמינים בקטגוריה של Cloud Storage, ואפשר להוריד אותם באמצעות ה-CLI של gcloud. ערכי ה-Hash של כל חבילה וגרסה נמצאים במיקום של קטגוריה של Cloud Storage gs://cloud-aoss/python/PACKAGE_NAME/VERSION.

כדי להוריד את הקובץ requirements.txt:

  1. כדי לגשת לקטגוריה של Cloud Storage, מאמתים את חשבון השירות באמצעות הפקודה הבאה:

    gcloud auth activate-service-account --key-file KEY_FILE
    

    מחליפים את KEY_FILE בנתיב לקובץ שמכיל את פרטי כניסה לחשבון השירות.

  2. מורידים את requirements.txt של חבילה וגרסה ספציפיות למחשב המקומי באמצעות הפקודה הבאה:

    gcloud storage cp gs://cloud-aoss/python/PACKAGE_NAME/VERSION PATH_TO_LOCAL_STORE --recursive
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PACKAGE_NAME: שם החבילה
    • ‫VERSION: גרסת החבילה
    • ‫PATH_TO_LOCAL_STORE: הנתיב המקומי שאליו רוצים להוריד את הקובץ

    פקודה לדוגמה:

    gcloud storage cp gs://cloud-aoss/python/bleach/5.0.0 /tmp/bleach --recursive

    קובץ requirements.txt לדוגמה:

    bleach==5.0.0 \
     --hash=sha256:6d286e765bfd3e309209cfa1d063e4d46afa966dea8cb97431c02b1e3067d812
    

    אפשר לשלב את התוכן של כל קובץ requirements.txt כזה בקובץ requirements-google.txt אחד.

המאמרים הבאים