הפעלת Binary Authorization ב-Cloud Run

במדריך הזה מוסבר איך להגדיר את Binary Authorization כדי לאכוף פריסה מבוססת-מדיניות של שירותים ועבודות ב-Cloud Run.

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

מגדירים את Cloud Run ומפעילים את ממשקי ה-API, באופן הבא:

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. התקינו את ה-CLI של Google Cloud.

  6. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  7. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. התקינו את ה-CLI של Google Cloud.

  12. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  13. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init

הפעלת Binary Authorization בשירות Cloud Run קיים

אפשר להפעיל אכיפה של Binary Authorization בשירות קיים. כדי להפעיל את האכיפה אחרי ההפעלה, יכול להיות שתצטרכו לפרוס עדכון או לשנות את התנועה בשירות.

אפשר להפעיל את האכיפה של Binary Authorization בשירות קיים באמצעות מסוף Google Cloud או Google Cloud CLI:

המסוף

  1. נכנסים לדף Cloud Run במסוף Google Cloud .

    כניסה ל-Cloud Run

  2. לוחצים על השירות.

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

  4. כדי להפעיל את האכיפה של Binary Authorization בשירות, לוחצים על הפעלה.

  5. אופציונלי: כדי להגדיר את המדיניות של Binary Authorization, לוחצים על Configure Policy (הגדרת מדיניות).

gcloud

מפעילים את Binary Authorization בשירות ומבצעים פריסה:

gcloud run services update SERVICE_NAME --binary-authorization=default

מחליפים את SERVICE_NAME בשם של השירות.

YAML

  1. אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, אתם צריכים להוריד את הגדרות ה-YAML שלו:

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את ההערה run.googleapis.com/binary-authorization: באופן הבא:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/binary-authorization: POLICY
      name: SERVICE
    spec:
      template:

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

    • SERVICE: השם של Cloud Run
    • POLICY: מוגדר לערך default
  3. מחליפים את השירות בהגדרות החדשות באמצעות הפקודה הבאה:

gcloud run services replace service.yaml

הפעלת Binary Authorization במשימת Cloud Run קיימת

אפשר להפעיל את האכיפה של Binary Authorization במשימה קיימת באמצעות מסוףGoogle Cloud או Google Cloud CLI:

המסוף

  1. נכנסים לדף Cloud Run jobs במסוף Google Cloud .

    כניסה ל-Cloud Run

  2. לוחצים על המשרה כדי לפתוח את פרטי המשרה.

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

  4. בקטע Binary Authorization (אישור בינארי), בוחרים מדיניות מרשימת המדיניות.

  5. לוחצים על אישור כדי להפעיל את האכיפה של Binary Authorization בעבודה.

  6. אופציונלי: כדי להגדיר את מדיניות Binary Authorization, לוחצים על Configure Policy (הגדרת מדיניות).

gcloud

מפעילים את Binary Authorization בעבודה:

gcloud run jobs update JOB_NAME --binary-authorization=POLICY

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

  • JOB_NAME: השם של המשימה.
  • POLICY: המדיניות שרוצים להחיל. משתמשים בערך default כדי להשתמש במדיניות ברירת המחדל.

מומלץ להגדיר מדיניות ארגון כדי לדרוש Binary Authorization ב-Cloud Run. מפתחי Cloud Run יכולים להשבית את Binary Authorization אם המדיניות לא מוגדרת.

צפייה במדיניות

כדי להציג את המדיניות, לוחצים על הצגת המדיניות.

מידע נוסף זמין במאמר בנושא הגדרת מדיניות Binary Authorization.

שגיאה בפריסת שירות או משרה

אם הפריסה של השירות או העבודה נכשלת בגלל הפרה של מדיניות Binary Authorization, יכול להיות שתופיע שגיאה כמו זו שבהמשך:

Revision REVISION_NAME uses an unauthorized container image.
Container image IMAGE_NAME is not authorized by policy.

השגיאה כוללת גם מידע על הסיבה להפרת המדיניות על ידי התמונה. במקרה כזה, אפשר להשתמש ב-breakglass כדי לעקוף את אכיפת המדיניות ולפרוס את התמונה.

הפעלת Binary Authorization בשירות חדש

אפשר להפעיל את Binary Authorization בשירות חדש באמצעות מסוף Google Cloud או Google Cloud CLI:

המסוף

  1. עוברים לדף Cloud Run:

    כניסה ל-Cloud Run

  2. לוחצים על יצירת שירות.

  3. בטופס Create service :

    1. בוחרים ב-Cloud Run כפלטפורמת הפיתוח.
    2. בוחרים את האזור שבו רוצים למקם את השירות.
    3. מזינים את שם השירות.
    4. לוחצים על הבא כדי להמשיך לדף הגדרת הגרסה הראשונה של השירות.
    5. בוחרים באפשרות Deploy one revision from an existing container image (פריסת גרסה אחת מקובץ אימג' של קונטיינר קיים).
    6. מזינים או בוחרים את התמונה לפריסה.
    7. מרחיבים את הקטע הגדרות מתקדמות.
    8. לוחצים על הכרטיסייה אבטחה.
    9. מסמנים את תיבת הסימון Verify container deployment with Binary Authorization (אימות פריסת קונטיינר באמצעות Binary Authorization).

    10. אופציונלי: לוחצים על Configure policy (הגדרת מדיניות) כדי להגדיר את מדיניות Binary Authorization. מידע נוסף על הגדרת מדיניות זמין במאמר הגדרת מדיניות.

    11. פורסים את השירות.

gcloud

מפעילים את Binary Authorization בשירות ומבצעים פריסה:

  gcloud run deploy SERVICE_NAME --image=IMAGE_URL --binary-authorization=default --region=REGION

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

  • SERVICE_NAME: שם לשירות.
  • IMAGE_URL: התמונה שרוצים לפרוס.
  • REGION: האזור שבו רוצים לפרוס את השירות.

הפעלת Binary Authorization בעבודה חדשה

אפשר להפעיל Binary Authorization בעבודה חדשה באחת מהדרכים הבאות:

המסוף

  1. נכנסים לדף Cloud Run jobs:

    כניסה לדף Cloud Run jobs

  2. לוחצים על Create Job (יצירת משימה) כדי להציג את הטופס Create job (יצירת משימה).

    1. בטופס, מציינים את קובץ אימג' של קונטיינר שמכיל את קוד המשימה או בוחרים מתוך רשימת קונטיינרים שנפרסו בעבר.
    2. שם המשימה נוצר אוטומטית מקובץ האימג' בקונטיינר. אפשר לערוך או לשנות את שם המשרה לפי הצורך. אי אפשר לשנות את שם המשרה אחרי שיוצרים אותה.
    3. בוחרים את האזור שבו רוצים שהמשרה תמוקם.
    4. מציינים את מספר המשימות שרוצים להפעיל בעבודה. כדי שהעבודה תצליח, כל המשימות צריכות להצליח. כברירת מחדל, המשימות מבוצעות במקביל.
  3. לוחצים על Container, Variables & Secrets, Connections, Security כדי להגדיר מאפיינים נוספים של העבודה.

    • לוחצים על הכרטיסייה הגדרות. בקטע Resources (משאבים), מגדירים את האפשרויות הבאות:

      1. בתפריט זיכרון, מציינים את כמות הזיכרון הנדרשת. ברירת המחדל היא המינימום הנדרש, 512MiB.
      2. בתפריט CPU, מציינים את כמות המעבד הנדרשת. ברירת המחדל היא המינימום הנדרש, מעבד אחד.
    • בקטע Task capacity (קיבולת המשימות):

      1. בשדה Task timeout (זמן קצוב לתפוגה של משימה), מציינים את משך הזמן המקסימלי בשניות שהמשימה יכולה לפעול, עד 168 שעות (7 ימים). כל משימה צריכה להסתיים בתוך הזמן שצוין. ברירת המחדל היא 10 דקות.

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

    • בקטע מקביליות:

      1. ברוב המקרים אפשר לבחור באפשרות הפעלת כמה שיותר משימות בו-זמנית.
      2. אם אתם צריכים להגדיר מגבלה נמוכה יותר בגלל מגבלות על הרחבת המשאבים שהעבודה שלכם ניגשת אליהם, אתם צריכים לבחור באפשרות הגבלת המספר המקסימלי של משימות מקבילות ולהזין את מספר המשימות המקבילות בשדה מגבלת מקביליות בהתאמה אישית.
  4. כשמסיימים להגדיר את העבודה, לוחצים על יצירה כדי ליצור את העבודה ב-Cloud Run.

  5. הוראות להרצת העבודה מופיעות במאמרים בנושא הרצת עבודות או הרצת עבודות לפי לוח זמנים.

gcloud

  1. יוצרים משימה חדשה עם Binary Authorization מופעל:

    gcloud run jobs create JOB_NAME \
      --image IMAGE_URL OPTIONS \
      --binary-authorization=POLICY \
      --region=REGION

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

    • JOB_NAME: השם של המשימה שרוצים ליצור. אפשר להשמיט את הפרמטר הזה, אבל אם תשמיטו אותו תתבקשו לציין את שם המשרה.
    • POLICY: המדיניות שרוצים להחיל. משתמשים בערך default כדי להשתמש במדיניות ברירת המחדל.
    • IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה us-docker.pkg.dev/cloudrun/container/job:latest.
    • REGION: האזור שבו תופעל המשימה.
    • OPTIONS: כל אחת מהאפשרויות הזמינות שמתוארות בדף יצירת המשימות ב-Cloud Run.
  2. מחכים עד ליצירת המשימה. בסיום התהליך בהצלחה, תוצג הודעה במסוף.

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

כשיוצרים משימה חדשה, סוכן השירות של Cloud Run צריך להיות מסוגל לגשת לקונטיינר, וזה המצב כברירת מחדל.

YAML

  1. יוצרים קובץ job.yaml חדש עם התוכן הזה:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
      annotations:
        run.googleapis.com/binary-authorization: POLICY
    spec:
      template:
        spec:
          containers:
          - image: IMAGE

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

    • JOB: השם של המשימה ב-Cloud Run
    • IMAGE: כתובת ה-URL של קובץ אימג' של קונטיינר
    • POLICY: מוגדר לערך default
  2. מפעילים את הג'וב החדש באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml

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