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

אחרי שמשלבים את Assured OSS עם Security Command Center, חבילות של Assured Open Source Software מתארחות במאגר של Artifact Registry שנוצר בפרויקט שאתם שולטים בו.

בדף הזה מוסבר איך להתחבר למאגר של Artifact Registry בשביל Assured OSS כדי לגשת ישירות לחבילות Python ולהוריד אותן.

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

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

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

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

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

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

    gcloud components update
    

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

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

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

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

אימות באמצעות Python keyring

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

כדי להגדיר את מחזיק המפתחות של Python לאימות:

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

    pip install keyring
    
  2. מתקינים את ה-backend של 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://us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple בכתובת ה-URL https://_json_key_base64:$BASE64_KEY@us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple

מחליפים את PROJECT_ID במזהה הפרויקט שנבחר כשמגדירים את Assured Open Source Software.

התקנת חבילות

ההוראות הבאות מבוססות על ההנחה שאתם משתמשים ב-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@us-python.pkg.dev/PROJECT_ID/assuredoss-python repo/simple -v \
         --no-deps
    

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

    • הערך --require-hashes הוא אופציונלי. אם הם כלולים, הגיבובים מצוינים לכל החבילות ולכל גרסאות החבילות בקובץ requirements.txt. מומלץ להצמיד תלויות עם גיבובי SHA-256 בקובץ requirements.txt כדי להבטיח אבטחה ושחזור.
    • הערך -v הוא אופציונלי. אם מציינים את האפשרות הזו, הפקודה מחזירה פלט נוסף.
  • כדי להוריד את החבילות הנדרשות שלא נמצאות ב-Artifact Registry for 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. כדי להוריד את הגיבוב וליצור את קובץ requirements-google.txt לסביבה שלכם, אתם יכולים להשתמש באחת משתי האפשרויות הבאות:

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

  • מורידים קובץ דרישות נפרד לכל ארטיפקט.

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

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

אפשר להשתמש בסקריפט 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 (שמכיל את הגיבוב) נפרד לכל ארטיפקט של Python, ואז לשלב אותם בקובץ requirements.txt אחד.

הגיבובים של הארטיפקטים זמינים בקטגוריה של Cloud Storage שאפשר להוריד באמצעות ה-CLI של gcloud. הגיבובים של כל חבילה וגרסה נמצאים במיקום הקטגוריה של 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 אחד.

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