הגדרת מדיניות באמצעות ה-CLI של gcloud

בדף הזה מוסבר איך להגדיר מדיניות של Binary Authorization באמצעות Google Cloud CLI. אפשר גם לבצע את המשימות האלה באמצעות מסוףGoogle Cloud או API בארכיטקטורת REST. השלב הזה הוא חלק מהגדרת Binary Authorization.

כדי להגדיר מדיניות באמצעות כלי שורת הפקודה, מייצאים את המדיניות הקיימת כקובץ YAML. אחרי שמשנים את הקובץ, אפשר לייבא אותו כדי לעדכן את המדיניות, כמו שמתואר בהמשך המדריך הזה. מידע נוסף על פורמט ה-YAML של המדיניות זמין במאמר הפניה ל-YAML של מדיניות.

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

  1. מפעילים את Binary Authorization.
  2. יצירת אשכול
  3. אם אתם מתכוונים להשתמש באישורים, מומלץ ליצור מאשרי אישורים לפני שמגדירים את המדיניות. אפשר ליצור מאמתים באמצעות כלי שורת פקודה או דרך מסוףGoogle Cloud .
  4. מגדירים את מזהה הפרויקט לפרויקט שבו הפעלתם את Binary Authorization:

    PROJECT_ID=PROJECT_ID
    gcloud config set project ${PROJECT_ID}
    

ייצוא קובץ ה-YAML של המדיניות

החלק הזה רלוונטי ל-GKE,‏ Distributed Cloud,‏ Cloud Run ו-Cloud Service Mesh.

כדי לעדכן את המדיניות, קודם מייצאים אותה לקובץ YAML מקומי, באופן הבא:

gcloud container binauthz policy export > /tmp/policy.yaml

כברירת מחדל, התוכן של הקובץ נראה כך:

defaultAdmissionRule:
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  evaluationMode: ALWAYS_ALLOW
globalPolicyEvaluationMode: ENABLE
name: projects/PROJECT_ID/policy

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

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

admissionWhitelistPatterns:
  - namePattern: EXEMPT_IMAGE_PATH

מחליפים את EXEMPT_IMAGE_PATH בנתיב לתמונה שרוצים להחריג. כדי להחריג תמונות נוספות, מוסיפים עוד רשומות של - namePattern. מידע נוסף על admissionWhitelistPatterns

הגדרת כלל ברירת המחדל

החלק הזה רלוונטי ל-GKE,‏ Distributed Cloud,‏ Cloud Run ו-Cloud Service Mesh.

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

כלל ברירת המחדל מוגדר בצומת defaultAdmissionRule בקובץ ה-YAML של המדיניות. מידע נוסף על החלקים של הכלל הזה זמין במאמר ADMISSION_RULE בהפניה ל-YAML של המדיניות. דוגמאות לכללי ברירת מחדל מופיעות במאמר דוגמאות לכללי מדיניות.

כדי להגדיר את כלל ברירת המחדל, עורכים את הצומת defaultAdmissionRule בקובץ policy.yaml לפי הצורך:

defaultAdmissionRule:
  evaluationMode: EVALUATION_MODE
  enforcementMode: ENFORCEMENT_MODE
  requireAttestationsBy:
  - ATTESTOR
  - ...

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

  • EVALUATION_MODE: מצב ההערכה מציין את סוג האילוץ שמנגנון האכיפה של Binary Authorization אוכף בזמן הפריסה. מחליפים את EVALUATION_MODE באחת מהאפשרויות הבאות:

    • ALWAYS_ALLOW: מאפשר פריסה של כל התמונות.
    • ALWAYS_DENY: לא מאפשרת פריסה של תמונות.
    • REQUIRE_ATTESTATION: מאפשר פריסה של תמונה אם יש לה אישור אחד או יותר שאפשר לאמת באמצעות כל המאמתים שמוסיפים לכלל הזה. בזמן הפריסה, האוכף מאמת את האישור באמצעות המאמתים שמוסיפים לרשימת ATTESTOR בכלל הזה. במאמר יצירת מאמתים מוסבר איך ליצור מאמתים. אם מציינים את הערך REQUIRE_ATTESTATION, צריך להוסיף גם בלוק requireAttestationsBy שמכיל לפחות גורם מאמת (attestor) אחד. במאמר יצירת מאמתים מוסבר איך ליצור מאמתים.
  • ENFORCEMENT_MODE: מצב האכיפה מציין איך הכלי לאכיפת הכללים מגיב כשבתמונה יש הפרה של כלל. מחליפים את ENFORCEMENT_MODE באחד מהערכים הבאים:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: חסימת תמונות שמפירות את הכלל ורישום מידע על ההפרה ביומני הביקורת של Cloud (ברירת מחדל).
    • DRYRUN_AUDIT_LOG_ONLY: מאפשר פריסה של כל התמונות, אבל רושם ביומני הביקורת של Cloud את פרטי האכיפה, כולל פרטים על הפרות.
  • ATTESTOR: אם מגדירים את EVALUATION_MODE לערך REQUIRE_ATTESTATION, צריך להוסיף גם בלוק requireAttesationsBy. בבלוק, מפרטים מאמת אחד או יותר לפי מזהה המשאב. מזהה המשאב הוא בפורמט הבא:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    מידע נוסף על יצירת מאמתים זמין במאמר בנושא יצירת מאמתים.

ניהול תמונות מוחרגות

החלק הזה רלוונטי ל-GKE,‏ Distributed Cloud,‏ Cloud Run ו-Cloud Service Mesh.

תמונה שפטורה היא תמונה שפטורה מכללי המדיניות. Binary Authorization תמיד מאפשרת פריסה של תמונות שפטורות מהאיסור.

כדי לציין תמונות שפטורות מהדרישה, צריך לרשום את נתיבי הרישום שלהן בadmissionWhitelistPatterns. הנתיב מתייחס ל-Container Registry או למאגר תמונות אחר. בזמן הפריסה, Binary Authorization מחריג את רשימת התמונות שצוינה על ידי admissionWhitelistPatterns אחרי התמונות שצוינו על ידי מדיניות המערכת.

כדי להוסיף תמונה שפטורה מאימות, מוסיפים צומת namePattern מתחת לרשימה admissionWhitelistPatterns בקובץ policy.yaml:

admissionWhitelistPatterns:
- namePattern: MATCHING_PATTERN

מחליפים את MATCHING_PATTERN בנתיב לתמונה אחת במאגר על ידי התאמה מדויקת, או לכל התמונות שתואמות לדפוס באמצעות התו הכללי לחיפוש (*, **).

Cloud Run

הקטע הזה רלוונטי ל-Cloud Run.

אי אפשר לציין ישירות שמות של תמונות שמכילים תג. לדוגמה, אי אפשר לציין את הערך IMAGE_PATH:latest.

אם רוצים לציין שמות של תמונות שמכילים תגים, צריך לציין את שם התמונה באמצעות תו כללי לחיפוש באופן הבא:

  • * לכל הגרסאות של תמונה אחת. לדוגמה, us-docker.pkg.dev/myproject/container/hello@*
  • ** לכל התמונות בפרויקט, למשל us-docker.pkg.dev/myproject/**

אפשר להשתמש בשמות נתיבים כדי לציין תקציר בפורמט IMAGE_PATH@