בדף הזה מוסבר איך להשתמש ב-breakglass עם Binary Authorization.
לפני שמתחילים
במדריך הזה אנחנו יוצאים מנקודת הנחה שהגדרתם את Binary Authorization.
סקירה כללית
אתם משתמשים ב-breakglass כדי לפרוס קובץ אימג' של קונטיינר ש-Binary Authorization חוסם.
התכונה Breakglass מספקת פתרון חירום שמאפשר לעקוף את האכיפה של מדיניות Binary Authorization כדי לאפשר פריסה של תמונות, גם כאלה שהמדיניות לא מאפשרת.
התכונה הזו מיושמת בהתאם להמלצות במפרט של בקר הכניסה של Kubernetes.
כשמשתמשים ב-breakglass כדי לפרוס תמונה, אירוע breakglass מתועד אוטומטית ביומני ביקורת של Cloud, בלי קשר לשאלה אם הפריסה עומדת בדרישות המדיניות או מפרה אותה. ביומני הביקורת של Cloud, אפשר לבצע ביקורת באופן ידני או להפעיל באופן אוטומטי התראה או אירוע אחר במורד הזרם.
כדי להפעיל את breakglass, מוסיפים שדה label למפרט של ה-Pod עם דגל המדיניות break-glass.
הדגמה של אירוע breakglass
בקטע הזה נסביר איך משתמשים ב-breakglass כדי לפרוס תמונות, כולל תמונות שמפירות את מדיניות Binary Authorization.
עדכון המדיניות של Binary Authorization לדחיית כל הבקשות לפריסה
כדי לעדכן את המדיניות כך שלא תהיה אפשרות לפרוס תמונות, מבצעים את השלבים הבאים:
מסוף Google Cloud
נכנסים לדף Binary Authorization במסוף Google Cloud .
לוחצים על עריכת המדיניות.
בדף Edit policy, בקטע Project default rule, רושמים את מצב ההערכה המקורי ולוחצים על Disallow all images.
לוחצים על שמירת המדיניות.
gcloud
כדי לשמור את המדיניות הקיימת בפרויקט הנוכחי, מריצים את הפקודה הבאה:
gcloud container binauthz policy export > SAVE_POLICY_YAML
מחליפים את SAVE_POLICY_YAML בנתיב של קובץ הייצוא – לדוגמה,
/tmp/save_policy.yaml.יוצרים קובץ מדיניות:
cat > TEST_POLICY_YAML << EOM admissionWhitelistPatterns: defaultAdmissionRule: enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG evaluationMode: ALWAYS_DENY globalPolicyEvaluationMode: DISABLE EOM
מחליפים את TEST_POLICY_YAML בנתיב לקובץ, לדוגמה,
/tmp/policy.yaml.מייבאים את המדיניות:
gcloud container binauthz policy import TEST_POLICY_YAMLמחליפים את TEST_POLICY_YAML בנתיב לקובץ, לדוגמה,
/tmp/policy.yaml.
כברירת מחדל, כל התמונות חסומות עכשיו ואי אפשר לפרוס אותן.
ניסיון לפרוס תמונה
בקטע הזה מנסים לפרוס תמונה. כלל ברירת המחדל של המדיניות מוגדר כך שלא ניתן לפרוס תמונות, ולכן בקשת הפריסה נכשלת.
יוצרים קובץ תצורה בפורמט YAML. הקובץ הזה מכיל את המידע הבסיסי שנדרש ליצירת ה-pod:
cat > /tmp/create_pod.yaml << EOM apiVersion: v1 kind: Pod metadata: name: breakglass-pod spec: containers: - name: container-name image: us-docker.pkg.dev/google-samples/containers/gke/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4 EOMיצירת הפוד באמצעות
kubectl:kubectl create -f /tmp/create_pod.yaml
מוצגת שגיאה שמציינת שהתמונה נחסמה בגלל המדיניות. השגיאה דומה לזו:
Error from server (Forbidden): error when creating "/tmp/create_pod.yaml": pods "breakglass-pod" is forbidden: image policy webhook backend denied one or more images: Image gcr.io/google-samples/hello-app denied by Binary Authorization default admission rule. Denied by always_deny admission rule`.
הפעלת breakglass ופריסה מחדש
בקטע הזה מפעילים את breakglass. למרות שהתכונה breakglass ספציפית ל-Binary Authorization, צריך לעדכן את השדה label במפרט ה-Pod כדי להפעיל אותה.
כדי להפעיל את breakglass, מריצים את הפקודות הבאות:
יוצרים קובץ תצורה בפורמט YAML.
הפקודה הבאה יוצרת את הקובץ שמכיל את התווית
break-glassופרטים אחרים שנדרשים ליצירת ה-Pod:cat > /tmp/create_pod.yaml << EOM apiVersion: v1 kind: Pod metadata: name: pod-name labels: image-policy.k8s.io/break-glass: "true" spec: containers: - name: container-name image: us-docker.pkg.dev/google-samples/containers/gke/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4 EOMיוצרים את הפוד באמצעות
kubectl:kubectl create -f /tmp/create_pod.yaml
שימו לב לפלט:
pod/pod-name created
חיפוש רשומה של breakglass ביומני הביקורת של Cloud
צפייה באירועי Breakglass ביומני ביקורת של Cloud.
קובצי PodSpec ישנים יותר שמציינים annotations: alpha.image-policy.k8s.io/break-glass
גם מפעילים את התכונה 'שבירת זכוכית' ומפיקים רשומות ביומן. השימוש בהערה הזו כבר לא מומלץ, אבל הוא עדיין נתמך כדי לשמור על תאימות לאחור.
הסרת המשאבים
כדי למחוק את ה-Pod ולהשבית את breakglass:
מוחקים את ה-Pod:
kubectl delete -f /tmp/create_pod.yaml
מוודאים שקיבלתם פלט כמו
pod <var>pod-name</var> deleted.מסירים את הבלוק
labelממפרט ה-Pod.איפוס המדיניות:
מסוף Google Cloud
נכנסים לדף Binary Authorization במסוף Google Cloud .
לוחצים על עריכת המדיניות.
בדף Edit policy (עריכת מדיניות), בקטע Project default rule (כלל ברירת המחדל של הפרויקט), מאפסים את מצב ההערכה להגדרה הקודמת.
לוחצים על שמירת המדיניות.
gcloud
מייבאים מחדש את המדיניות המקורית.
gcloud container binauthz policy import SAVE_POLICY_YAMLמחליפים את SAVE_POLICY_YAML בנתיב לקובץ שיצרתם קודם במדריך הזה.
המדיניות שלך תאופס.
המאמרים הבאים
- צפייה באירועי Breakglass ביומני ביקורת של Cloud.