בדף הזה מוסבר איך להשתמש בשירות Organization Policy כדי לדרוש שבאשכולות GKE ייעשה שימוש במדיניות פלטפורמה אחת או יותר שמבוססת על בדיקות אימות רציף (CV). מציינים את מדיניות הפלטפורמה הנדרשת שמבוססת על בדיקות באילוצים בהתאמה אישית. לאחר מכן אוכפים את האילוצים המותאמים אישית במדיניות הארגון.
עלויות
במדריך הזה נעשה שימוש בשירותים הבאים: Google Cloud
- Binary Authorization, אבל CV זמין בחינם במהלך שלב התצוגה המקדימה
- מדיניות הארגון והמגבלות מוצעות ללא תשלום.
לפני שמתחילים
- מפעילים את Binary Authorization.
- הגדרת CV עם כללי מדיניות של פלטפורמה שמבוססים על בדיקות ולפחות כלל מדיניות אחד של פלטפורמה שמבוסס על בדיקות CV.
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות ליצירת אילוצים ולאכיפה של מדיניות הארגון, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM Organization Policy Administrator (roles/orgpolicy.policyAdmin) בארגון Google Cloud .
להסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירת אילוץ מותאם אישית של CV
המסוף
במסוף Google Cloud , נכנסים לדף מדיניות הארגון.
בדף מדיניות הארגון, לוחצים על אילוץ בהתאמה אישית.
אם מוצגת בקשה, לוחצים על מעבר לארגון האב. מידע נוסף על ארגונים
בקטע פרטי ההגבלה, מזינים את הפרטים הבאים בשדות:
השם המוצג: שם מוצג לאילוץ, כמו
Require a Binary Authorization continuous validation policy for all GKE clusters. אחרי ששומרים את האילוץ, אפשר לחפש אותו לפי השם לתצוגה. האורך המקסימלי של השדה 'שם מוצג' הוא 200 תוויםמזהה אילוץ: מזהה האילוץ שלכם, לדוגמה,
RequireBinAuthzCVPolicy.תיאור (אופציונלי): תיאור ידידותי למשתמש של האילוץ שיוצג כהודעת שגיאה אם המדיניות תופר. האורך המקסימלי של שדה התיאור הוא 2,000 תווים.
בקטע Enforcement:
בשדה Resource types (סוגי משאבים), מזינים
container.googleaips.com/Cluster.בקטע שיטת אכיפה, בוחרים באפשרות אכיפה בעת יצירה ועדכון.
מזינים ביטוי בשדה תנאי. האורך המקסימלי של השדה הוא 1,000 תווים. האילוץ המותאם אישית נאכף כשהתנאי מקבל את הערך
true. התנאי הוא ביטוי בתחביר של Common Expression Language (CEL). אפשר לשלב ביטויים עם and (&&) ו-or (||) כדי ליצור תנאי מורכב. CEL היא שפת ביטויים שדומה ל-C. מידע נוסף על התחביר והסמנטיקה של CEL זמין בכתובת https://github.com/google/cel-spec. כדי להזין את התנאי:לוחצים על עריכת התנאי.
מזינים ביטוי כדי לבדוק אם קיימת מדיניות פלטפורמה של CV. התנאי הבא מחייב שיהיה קישור למדיניות של פלטפורמת CV וששם המדיניות של הפלטפורמה יהיה שם ספציפי:
resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט של מדיניות הפלטפורמה. הפרויקט צריך להיות באותו ארגון. -
POLICY_ID: מזהה המדיניות של מדיניות הפלטפורמה.
התנאי הבא מחייב שיהיו שני קשרים למדיניות בפלטפורמה של CV, ושלכל אחד מהם יהיה שם מדיניות ספציפי בפלטפורמה.
resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")-
PROJECT_ID1: מזהה הפרויקט של מדיניות הפלטפורמה הראשונה. הפרויקט צריך להיות באותו ארגון. -
POLICY_ID1: מזהה המדיניות של המדיניות הראשונה של הפלטפורמה. -
PROJECT_ID2: מזהה הפרויקט של מדיניות הפלטפורמה השנייה. -
POLICY_ID2: מזהה המדיניות של מדיניות הפלטפורמה השנייה. לוחצים על Save.
-
בקטע פעולה, בוחרים באפשרות אישור.
כדי ליצור אילוץ מותאם אישית, לוחצים על יצירת אילוץ.
gcloud
יוצרים קובץ YAML לאילוץ בהתאמה אישית:
name: organizations/ORGANIZATION_ID/customConstraints/custom.CONSTRAINT_ID resource_types: container.googleapis.com/Cluster method_types: - CREATE - UPDATE condition: >- CONDITION action_type: ACTION display_name: DISPLAY_NAME description: DESCRIPTIONמחליפים את מה שכתוב בשדות הבאים:
-
ORGANIZATION_ID: מזהה הארגון, לדוגמה123456789. -
CONSTRAINT_ID: מזהה של אילוץ, לדוגמה,RequireBinAuthzCVPolicy.
CONDITION: מזינים ביטוי כדי לבדוק אם קיימת מדיניות של פלטפורמת קורות חיים. האורך המקסימלי של השדה הוא 1,000 תווים. האילוץ המותאם אישית נאכף כשהתנאי מקבל את הערךtrue. התנאי הוא ביטוי בתחביר של Common Expression Language (CEL). אפשר לשלב ביטויים עם and (&&) ו-or (||) כדי ליצור תנאי מורכב. CEL היא שפת ביטויים שדומה ל-C. מידע נוסף על התחביר והסמנטיקה של CEL זמין בכתובת https://github.com/google/cel-spec. התנאי הבא מחייב שיהיה קישור למדיניות של פלטפורמת CV, וששם המדיניות של הפלטפורמה יהיה ספציפי:resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט של מדיניות הפלטפורמה. הפרויקט צריך להיות באותו ארגון. -
POLICY_ID: מזהה המדיניות של מדיניות הפלטפורמה.
התנאי הבא מחייב שיהיו שני קשרים למדיניות בפלטפורמה של CV, ושלכל אחד מהם יהיה שם מדיניות ספציפי בפלטפורמה.
resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")-
PROJECT_ID1: מזהה הפרויקט של מדיניות הפלטפורמה הראשונה. הפרויקט צריך להיות באותו ארגון. -
POLICY_ID1: מזהה המדיניות של המדיניות הראשונה של הפלטפורמה. -
PROJECT_ID2: מזהה הפרויקט של מדיניות הפלטפורמה השנייה. -
POLICY_ID2: מזהה המדיניות של מדיניות הפלטפורמה השנייה.
ACTION: הפעולה שתתבצע אם התנאיconditionיתקיים. הערך יכול להיותALLOWאוDENY.
DISPLAY_NAME: שם ידידותי למשתמש לאילוץ, לדוגמהRequire a Binary Authorization continuous validation policy for all GKE clusters. האורך המקסימלי של השדה 'שם מוצג' הוא 200 תווים
DESCRIPTION: תיאור ידידותי למשתמש של האילוץ שיוצג כהודעת שגיאה אם המדיניות תופר. האורך המקסימלי של שדה התיאור הוא 2,000 תווים.
-
החלת האילוץ המותאם אישית:
gcloud org-policies set-custom-constraint CUSTOM_CONSTRAINT_PATHמחליפים את
CUSTOM_CONSTRAINT_PATHבנתיב להגדרת האילוץ בהתאמה אישית.מוודאים שהאילוץ המותאם אישית קיים:
gcloud org-policies list-custom-constraints \ --organization=ORGANIZATION_IDהפלט אמור להיראות כך:
CUSTOM_CONSTRAINT: custom.RequireBinAuthzCVPolicy ACTION_TYPE: ALLOW METHOD_TYPES: CREATE,UPDATE RESOURCE_TYPES: container.googleapis.com/Cluster DISPLAY_NAME: This cluster requires the continuous validation policy: projects/my-project/platforms/gke/policies/my-policy
-
כדי להפעיל את האכיפה של האילוץ המותאם אישית שיצרתם, צריך ליצור מדיניות ארגונית.
שימוש במדיניות הארגון כדי לאכוף את האילוץ המותאם אישית
כדי לאכוף את האילוץ החדש בהתאמה אישית, יוצרים מדיניות ארגון שמפנה לאילוץ, ואז מחילים את מדיניות הארגון.
המסוף
כדי לאכוף את האילוץ:
במסוף Google Cloud , נכנסים לדף מדיניות הארגון.
בוחרים את כלי לבחירת פרויקטים ובוחרים את הארגון.
מחפשים את ההגבלה ובוחרים אותה מהרשימה.
בדף פרטי המדיניות של האילוץ, לוחצים על ניהול המדיניות.
בדף עריכת מדיניות, בוחרים באפשרות במקום המדיניות של המשאב הראשי.
לוחצים על Add a rule.
בקטע אכיפה, בוחרים באפשרות מופעל.
אופציונלי: לוחצים על בדיקת שינויים כדי לדמות את ההשפעה של מדיניות הארגון הזו. מידע נוסף זמין במאמר בנושא בדיקת שינויים במדיניות הארגון באמצעות סימולטור המדיניות.
כדי לסיים ולהחיל את מדיניות הארגון, לוחצים על הגדרת מדיניות.
gcloud
יוצרים קובץ הגדרת מדיניות ב-YAML:
name: organizations/ORGANIZATION_ID/policies/custom.CONSTRAINT_ID spec: rules: - enforce: trueמחליפים את מה שכתוב בשדות הבאים:
-
ORGANIZATION_ID: מזהה הארגון -
CONSTRAINT_ID: מזהה האילוץ
-
אכיפת המדיניות:
gcloud org-policies set-policy ORG_POLICY_PATHמחליפים את
ORG_POLICY_PATHבנתיב לקובץ הגדרת המדיניות.מוודאים שהמדיניות קיימת:
gcloud org-policies list \ --organization=ORGANIZATION_IDמחליפים את
ORGANIZATION_IDבמזהה הארגון.רשימת הארגומנטים זמינה
gcloud org-policies list.הפלט אמור להיראות כך:
CONSTRAINT: custom.RequireBinAuthzCVPolicy LIST_POLICY: - BOOLEAN_POLICY: SET ETAG: CN622LIGEIDXnpMB-
יכול להיות שיחלפו עד 15 דקות עד שהמדיניות תיכנס לתוקף.
כדי לאכוף כמה אילוצים על מדיניות פלטפורמה שמבוססת על בדיקת CV, מבצעים את הפעולות הבאות:
- יוצרים אילוץ מותאם אישית אחד לכל מדיניות שמבוססת על בדיקת ערכי CV.
- מעדכנים את מדיניות הארגון בכל אילוץ מותאם אישית, כמו שמתואר בקטע הזה.
מחיקת האילוץ המותאם אישית
אפשר למחוק אילוץ מותאם אישית באמצעות מסוף Google Cloud או Google Cloud CLI.
המסוף
במסוף Google Cloud , נכנסים לדף מדיניות הארגון.
בוחרים את הפרויקט בחלונית לבחירת פרויקט בחלק העליון של הדף.
בוחרים את הארגון מתוך בורר הפרויקטים.
מחפשים את ההגבלה ובוחרים אותה מהרשימה.
בקטע פרטי ההגבלה, לוחצים על מחיקה.
כדי לאשר את מחיקת ההגבלה, לוחצים על מחיקה.
gcloud
כדי למחוק אילוץ בהתאמה אישית, משתמשים בפקודה org-policies delete-custom-constraint ב-CLI של gcloud:
gcloud org-policies delete-custom-constraint custom.CONSTRAINT_ID \
--organization=ORGANIZATION_ID
מחליפים את מה שכתוב בשדות הבאים:
ORGANIZATION_ID: מזהה הארגון, למשל123456789
CONSTRAINT_NAME: השם של האילוץ המותאם אישית
הפלט אמור להיראות כך:
Deleted custom constraint [organizations/123456789/customConstraints/CONSTRAINT_NAME]
אחרי שמוחקים אילוץ מותאם אישית, כל כללי המדיניות שנוצרו באמצעות האילוץ הזה ממשיכים להתקיים, אבל המערכת מתעלמת מהם. אי אפשר ליצור עוד אילוץ מותאם אישית עם שם זהה לאילוץ מותאם אישית שנמחק.
המאמרים הבאים
- מידע נוסף על אילוצים של מדיניות הארגון
- שימוש בבדיקת הרעננות של התמונה
- שימוש בבדיקת אישור חתימה פשוטה
- שימוש בבדיקת החתימה של Sigstore
- שימוש בבדיקת SLSA
- שימוש בבדיקה של מאגר מהימן
- שימוש בבדיקת נקודות חולשה
- צפייה ביומני CV