מדיניות לדוגמה

בדף הזה מוצגות דוגמאות למדיניות של Binary Authorization שצוינו בפורמט YAML. הוראות להגדרת מדיניות ב-Binary Authorization זמינות במאמרים הגדרת מדיניות באמצעות Google Cloud CLI והגדרת מדיניות באמצעות מסוף Google Cloud .

התרת כל הפריסות

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

name: projects/example-project/policy
defaultAdmissionRule:
  evaluationMode: ALWAYS_ALLOW
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG

במקרה הזה, כלל ברירת המחדל הוא evaluationMode עם ערך של ALWAYS_ALLOW, ולכן Binary Authorization מאפשר פריסה של כל קובצי האימג' של הקונטיינרים. ערך ברירת המחדל של enforcementMode הוא ENFORCED_BLOCK_AND_AUDIT_LOG, אבל מכיוון שכל הפריסות מורשות, הפעולה הזו אף פעם לא מתבצעת.

חסימה של (כמעט) כל הפריסות

בדוגמה הבאה מוצג איך לחסום את הפריסה של כל קובצי האימג' בקונטיינרים, ולאפשר שימוש בקובצי אימג' של מערכת שמתוחזקים על ידי Google. תמונות הקונטיינרים האלה נדרשות כדי להפעיל בהצלחה את רוב האשכולות של Google Kubernetes Engine‏ (GKE).

name: projects/example-project/policy
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: ALWAYS_DENY
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG

כאן, globalPolicyEvaluationMode מופעל כדי שתמונות שנדרשות על ידי GKE לא ייחסמו על ידי אכיפת המדיניות. כלל ברירת המחדל כולל evaluationMode עם הערך ALWAYS_DENY, ולכן Binary Authorization דוחה את הפריסה של כל תמונות הקונטיינרים. הערך של enforcementMode מוגדר ל-ENFORCED_BLOCK_AND_AUDIT_LOG, ולכן Binary Authorization חוסם את הפריסה וכותב ליומן הביקורת.

דרישה שהמאשרים יחתמו לפני הפריסה

בדוגמה הבאה מוצג איך לדרוש גורמים מאמתים (attestors) לאשר הפצה לפני שאפשר לפרוס קובץ אימג' של קונטיינר. הפריסה נחסמת אם כל המאמתים לא חתמו.

name: projects/example-project/policy
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: REQUIRE_ATTESTATION
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  requireAttestationsBy:
  - projects/example-project/attestors/secure-build

במקרה הזה, לכלל ברירת המחדל יש evaluationMode עם ערך REQUIRE_ATTESTATION, ולכן Binary Authorization מאפשר פריסה רק של תמונות שאושרו על ידי המאמתים הנדרשים ב-requireAttestationsBy.

אפשרות לפריסות במצב פרימטר לבדיקות

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

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

name: projects/example-project/policy
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: REQUIRE_ATTESTATION
  enforcementMode: DRYRUN_AUDIT_LOG_ONLY
  requireAttestationsBy:
  - projects/example-project/attestors/secure-build

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

שימוש בכלל ספציפי לאשכול

בדוגמה הבאה מוצג כלל ספציפי לאשכול שמאפשר פריסה רק של קובצי אימג' בקונטיינר שאושרו על ידי הגורמים המעידים שצוינו:

name: projects/example-project/policy
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: ALWAYS_DENY
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
clusterAdmissionRules:
  us-east1-a.prod-cluster:
    evaluationMode: REQUIRE_ATTESTATION
    enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
    requireAttestationsBy:
    - projects/example-project/attestors/secure-build
    - projects/example-project/attestors/prod-qualified

במקרה הזה, הכלל הספציפי לקלאסטר חל רק על תמונות המאגר שנפרסו ב-us-east1-a.prod-cluster. הכלל מחייב אישור של שני מאשרים לפני שאפשר לפרוס תמונה.

הוספת תמונות שפטורות מהכלל

בדוגמה הבאה מוסבר איך להוסיף נתיבים נוספים ב-Container Registry או במאגר אחר לרשימת התמונות שלא חלה עליהן המדיניות:

name: projects/example-project/policy
globalPolicyEvaluationMode: ENABLE
admissionWhitelistPatterns:
- namePattern: gcr.io/example-project-1/*
- namePattern: gcr.io/example-project-2/my-app
defaultAdmissionRule:
  evaluationMode: ALWAYS_DENY
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG

בדוגמה הזו, התבניות התואמות לתמונות נוספות שפטורות הן gcr.io/example-project-1/* ו-gcr.io/example-project-2/my-app.