בדף הזה מופיע מידע עזר על כללי מדיניות של Binary Authorization, כפי שמצוין בפורמט YAML. כשמגדירים מדיניות באמצעות ממשק שורת הפקודה, עורכים קובץ בפורמט YAML שתואם למפרט הזה. דוגמאות למדיניות בפורמט YAML מופיעות במאמר מדיניות לדוגמה.
קובצי YAML של מדיניות הם בפורמט הבא:
name: projects/<PROJECT_ID>/policy
admissionWhitelistPatterns:
- namePattern: <MATCHING_PATTERN>
- ...
globalPolicyEvaluationMode: <GLOBAL_EVAL_MODE>
defaultAdmissionRule:
<ADMISSION_RULE>
clusterAdmissionRules:
<CLUSTER_SPECIFIER>:
<ADMISSION_RULE>
...
צמתים
פורמט ה-YAML כולל את הצמתים הבאים ברמה העליונה:
| צומת | תיאור | חובה |
|---|---|---|
name |
שם המדיניות. | כן |
admissionWhitelistPatterns |
מציין תמונות של מאגרים שתמיד מותר לפרוס. | לא |
globalPolicyEvaluationMode |
מציינת אם להחיל מדיניות מערכת שפוטרת תמונות מערכת בבעלות Google. | לא |
defaultAdmissionRule |
הכלל שבו המערכת משתמשת כשלא חל כלל ספציפי. | כן |
clusterAdmissionRules |
מציינים כללים שחלים על אשכולות ספציפיים. | לא |
name
צומת name מכיל את שם המדיניות בפורמט הבא:
name: projects/PROJECT_ID/policy
כאשר PROJECT_ID הוא שם הפרויקט ב- Google Cloudשבו מוגדרת המדיניות.
לדוגמה:
name: projects/example-project/policy
admissionWhitelistPatterns
admissionWhitelistPatterns מציינת רשימת היתרים של תמונות קונטיינרים שמוחרגות מאכיפת המדיניות. מציינים את הנתיב לתמונות ב-Container Registry וב-Artifact Registry, במאגר אחר או בהפניה מקומית בצומת המשנה namePattern:
admissionWhitelistPatterns: - namePattern: MATCHING_PATTERN - ...
מחליפים את MATCHING_PATTERN בנתיב לתמונה אחת או בתבנית תואמת שמכילה אחד מסמלי התווים הכלליים לחיפוש (*, **).
חשוב לזכור שתווים כלליים לחיפוש תקפים רק בסוף התבנית. לדוגמה,
gcr.io/my-project/nginx* היא תבנית תקינה, אבל gcr.io/my-project/n*x
לא תקינה. התווים הכלליים * מתאימים רק לתמונות בספרייה שצוינה. לדוגמה, gcr.io/my-project/nginx* תואם ל-gcr.io/my-project/nginx:latest, אבל לא ל-gcr.io/my-project/nginx-images/nginx. התו הכללי לחיפוש ** מתאים לתמונות בספריות משנה. לדוגמה, הנתיב gcr.io/my-project/nginx** תואם ל-gcr.io/my-project/nginx-1.14.2/image:latest.
בדוגמה הבאה מוסיפים לרשימת התמונות שפטורות מהמדיניות מאגרי תמונות שמכילים תמונות נפוצות של Google Kubernetes Engine (GKE), תמונה שנמצאת בכתובת gcr.io/example-project/helloworld והפניה מקומית לתמונה:
admissionWhitelistPatterns: - namePattern: gcr.io/google-containers/* - namePattern: k8s.gcr.io/** - namePattern: gke.gcr.io/** - namePattern: gcr.io/gke-release/asm/* - namePattern: gcr.io/stackdriver-agents/* - namePattern: gcr.io/example-project/helloworld - namePattern: loc-ref
תבניות של רשימת ההיתרים
כדי להוסיף לרשימת ההיתרים את כל קובצי האימג' של הקונטיינרים שהמיקום שלהם במאגר תואם לנתיב שצוין:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/*
כדי להוסיף תמונה ספציפית לרשימת ההיתרים:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld
כדי להוסיף לרשימת ההיתרים גרסה מתויגת נוכחית:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld:latest - namePattern: gcr.io/example-project/helloworld:my-tag - namePattern: gcr.io/example-project/helloworld:v1.*
כדי להוסיף לרשימת ההיתרים גרסה ספציפית של תמונה לפי ה-digest שלה:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c
כדי להוסיף תמונות לרשימת ההיתרים בספריות משנה של נתיב נתון:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/**
globalPolicyEvaluationMode
מצב הערכת מדיניות המערכת הוא הגדרת מדיניות שגורמת ל-Binary Authorization להעריך מדיניות מערכת לפני הערכת המדיניות שאתם מגדירים. מדיניות המערכת מסופקת על ידי Google, והיא מחריגה רשימה של תמונות מערכת שמתוחזקות על ידי Google מהערכה נוספת של המדיניות. כשההגדרה הזו מופעלת, תמונות שנדרשות על ידי GKE לא נחסמות על ידי אכיפת המדיניות. המערכת
מעריכה את מדיניות המערכת לפני ההערכה של מדיניות המשתמשים, וגם בנוסף לה, כולל admissionWhitelistPatterns.
כדי לאפשר את כל תמונות המערכת שמתוחזקות על ידי Google, מגדירים את המאפיין globalPolicyEvaluationMode לערך ENABLE:
globalPolicyEvaluationMode: ENABLE
כדי להשבית את מצב הערכת מדיניות המערכת:
globalPolicyEvaluationMode: DISABLE
defaultAdmissionRule
defaultAdmissionRule מציין את כלל ברירת המחדל של המדיניות. כלל ברירת המחדל מגדיר את המגבלות שחלות על כל האימג'ים של קונטיינרים שלא פטורים, למעט אלה שיש להם כלל ספציפי משלהם לאשכול. כדי לציין את כלל ברירת המחדל, משתמשים באוסף ADMISSION_RULE:
defaultAdmissionRule: ADMISSION_RULE
בדוגמה הבאה מוצג כלל ברירת מחדל שמאפשר פריסה רק של קובצי אימג' של קונטיינרים שאושרו על ידי גורם מאמת (attestor) שצוין. אם לא כל המאשרים הנדרשים אישרו את התמונה, Binary Authorization חוסם את הפריסה וכותב ליומן הביקורת.
defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/example-project/attestors/secure-build
clusterAdmissionRules
clusterAdmissionRules להצהיר על כללים ספציפיים לאשכול עבור המדיניות.
ההגבלות בכללים האלה חלות רק על האשכול שצוין. אם
Binary Authorization מחיל כלל ספציפי לאשכול על פריסה, הכלל שמוגדר כברירת מחדל לא נלקח בחשבון. בדומה לכללי ברירת מחדל, אפשר לציין כללים ספציפיים לאשכול באמצעות הקולקציה ADMISSION_RULE:
clusterAdmissionRules:
CLUSTER_SPECIFIER:
ADMISSION_RULE
כאשר CLUSTER_SPECIFIER הוא מזהה המשאב של האשכול שהכלל חל עליו בפורמט location.name (לדוגמה, us-east1-a.prod-cluster).
בדוגמה הבאה מוצג כלל ספציפי לאשכול שמאפשר פריסה רק של תמונות קונטיינרים שאושרו על ידי המאמתים שצוינו:
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
אוספים של צמתים
ADMISSION_RULE
ADMISSION_RULE הוא אוסף של צמתים שמציינים את האילוצים של הכלל בפורמט הבא:
evaluationMode: EVAL_MODE enforcementMode: ENFORCEMENT_MODE requireAttestationsBy: - ATTESTOR - ...
גם defaultAdmissionRule וגם clusterAdmissionRule מפנים לאוסף הזה.
evaluationMode
המאפיין evaluationMode מציין את הפעולה ש-Binary Authorization מבצע כדי להעריך אם לפרוס קובץ אימג' של קונטיינר. הערכים האפשריים הם:
-
ALWAYS_ALLOW: תמיד לאפשר פריסה של תמונות שנבדקו על ידי הכלל הזה -
ALWAYS_DENY: דחייה תמיד של פריסת תמונות שנבדקו על ידי הכלל הזה -
REQUIRE_ATTESTATION: דרישה שאחד או יותר מהמאשרים יאשרו את השחרור לפני הפריסה
אם evaluationMode הוא REQUIRE_ATTESTATION, עליך לספק הפניה לנותני האישור הנדרשים ב-requireAttestationsBy.
enforcementMode
המאפיין enforcementMode מציין את הפעולה ש-Binary Authorization מבצע אם קובץ אימג' של קונטיינר לא עומד במגבלות שמוגדרות בכלל. הערכים האפשריים הם:
-
ENFORCED_BLOCK_AND_AUDIT_LOG: חוסם את הפריסה וכותב ליומן הביקורת. -
DRYRUN_AUDIT_LOG_ONLY: מאפשר פריסה של תמונות שלא עומדות בדרישות וכותב פרטים על ההפרה ביומן הביקורת.
רוב כללי הייצור משתמשים במצב האכיפה ENFORCED_BLOCK_AND_AUDIT_LOG.
DRYRUN_AUDIT_LOG_ONLY משמש בעיקר לבדיקת מדיניות בסביבה שלכם לפני שהיא נכנסת לתוקף.
requireAttestationsBy
requireAttestationsBy מציינת גורם מאמת (attestor) אחד או יותר שצריכים לאשר את השחרור לפני שאפשר לפרוס קובץ אימג' של קונטיינר. הדבר נדרש רק לכללי REQUIRE_ATTESTATION. הפורמט של הצומת הזה הוא:
requireAttestationsBy: - projects/PROJECT_ID/attestors/ATTESTOR_NAME - ...
כאשר PROJECT_ID הוא שם הפרויקט שבו מוגדרים המאשרים, ו-ATTESTOR_NAME הוא שם המאשר שנדרש לחתום על הגרסה.
בדוגמה הבאה אפשר לראות איך מציינים מאמתים:
requireAttestationsBy: - projects/example-project/attestors/secure-build - projects/example-project/attestors/prod-qualified