בדף הזה מוסבר איך להגדיר מדיניות של Binary Authorization באמצעות Google Cloud CLI. אפשר גם לבצע את המשימות האלה באמצעות מסוףGoogle Cloud או API בארכיטקטורת REST. השלב הזה הוא חלק מהגדרת Binary Authorization.
כדי להגדיר מדיניות באמצעות כלי שורת הפקודה, מייצאים את המדיניות הקיימת כקובץ YAML. אחרי שמשנים את הקובץ, אפשר לייבא אותו כדי לעדכן את המדיניות, כמו שמתואר בהמשך המדריך הזה. מידע נוסף על פורמט ה-YAML של המדיניות זמין במאמר הפניה ל-YAML של מדיניות.
לפני שמתחילים
- מפעילים את Binary Authorization.
- יצירת אשכול
- אם אתם מתכוונים להשתמש באישורים, מומלץ ליצור מאשרי אישורים לפני שמגדירים את המדיניות. אפשר ליצור מאמתים באמצעות כלי שורת פקודה או דרך מסוףGoogle Cloud .
מגדירים את מזהה הפרויקט לפרויקט שבו הפעלתם את 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@