בדף הזה מוצגות דוגמאות למדיניות של 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.