דרישה להחלת מדיניות פלטפורמה שמבוססת על בדיקת אימות רציפה על כל אשכולות GKE

בדף הזה מוסבר איך להשתמש בשירות Organization Policy כדי לדרוש שבאשכולות GKE ייעשה שימוש במדיניות פלטפורמה אחת או יותר שמבוססת על בדיקות אימות רציף (CV). מציינים את מדיניות הפלטפורמה הנדרשת שמבוססת על בדיקות באילוצים בהתאמה אישית. לאחר מכן אוכפים את האילוצים המותאמים אישית במדיניות הארגון.

עלויות

במדריך הזה נעשה שימוש בשירותים הבאים: Google Cloud

  • Binary Authorization, אבל CV זמין בחינם במהלך שלב התצוגה המקדימה
  • מדיניות הארגון והמגבלות מוצעות ללא תשלום.

לפני שמתחילים

  1. מפעילים את Binary Authorization.
  2. הגדרת CV עם כללי מדיניות של פלטפורמה שמבוססים על בדיקות ולפחות כלל מדיניות אחד של פלטפורמה שמבוסס על בדיקות CV.

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות ליצירת אילוצים ולאכיפה של מדיניות הארגון, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Organization Policy Administrator (roles/orgpolicy.policyAdmin) בארגון Google Cloud . להסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

יצירת אילוץ מותאם אישית של CV

המסוף

  1. במסוף Google Cloud , נכנסים לדף מדיניות הארגון.

    מעבר למדיניות הארגון

  2. בדף מדיניות הארגון, לוחצים על אילוץ בהתאמה אישית.

  3. אם מוצגת בקשה, לוחצים על מעבר לארגון האב. מידע נוסף על ארגונים

  4. בקטע פרטי ההגבלה, מזינים את הפרטים הבאים בשדות:

    1. השם המוצג: שם מוצג לאילוץ, כמו Require a Binary Authorization continuous validation policy for all GKE clusters. אחרי ששומרים את האילוץ, אפשר לחפש אותו לפי השם לתצוגה. האורך המקסימלי של השדה 'שם מוצג' הוא 200 תווים

    2. מזהה אילוץ: מזהה האילוץ שלכם, לדוגמה, RequireBinAuthzCVPolicy.

    3. תיאור (אופציונלי): תיאור ידידותי למשתמש של האילוץ שיוצג כהודעת שגיאה אם המדיניות תופר. האורך המקסימלי של שדה התיאור הוא 2,000 תווים.

  5. בקטע Enforcement:

    1. בשדה Resource types (סוגי משאבים), מזינים container.googleaips.com/Cluster.

    2. בקטע שיטת אכיפה, בוחרים באפשרות אכיפה בעת יצירה ועדכון.

    3. מזינים ביטוי בשדה תנאי. האורך המקסימלי של השדה הוא 1,000 תווים. האילוץ המותאם אישית נאכף כשהתנאי מקבל את הערך true. התנאי הוא ביטוי בתחביר של Common Expression Language ‏ (CEL). אפשר לשלב ביטויים עם and ‏ (&&) ו-or ‏ (||) כדי ליצור תנאי מורכב. ‫CEL היא שפת ביטויים שדומה ל-C. מידע נוסף על התחביר והסמנטיקה של CEL זמין בכתובת https://github.com/google/cel-spec. כדי להזין את התנאי:

      1. לוחצים על עריכת התנאי.

      2. מזינים ביטוי כדי לבדוק אם קיימת מדיניות פלטפורמה של 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.

    4. בקטע פעולה, בוחרים באפשרות אישור.

  6. כדי ליצור אילוץ מותאם אישית, לוחצים על יצירת אילוץ.

gcloud

  1. יוצרים קובץ 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
      

כדי להפעיל את האכיפה של האילוץ המותאם אישית שיצרתם, צריך ליצור מדיניות ארגונית.

שימוש במדיניות הארגון כדי לאכוף את האילוץ המותאם אישית

כדי לאכוף את האילוץ החדש בהתאמה אישית, יוצרים מדיניות ארגון שמפנה לאילוץ, ואז מחילים את מדיניות הארגון.

המסוף

כדי לאכוף את האילוץ:

  1. במסוף Google Cloud , נכנסים לדף מדיניות הארגון.

    מעבר למדיניות הארגון

  2. בוחרים את כלי לבחירת פרויקטים ובוחרים את הארגון.

  3. מחפשים את ההגבלה ובוחרים אותה מהרשימה.

  4. בדף פרטי המדיניות של האילוץ, לוחצים על ניהול המדיניות.

  5. בדף עריכת מדיניות, בוחרים באפשרות במקום המדיניות של המשאב הראשי.

  6. לוחצים על Add a rule.

  7. בקטע אכיפה, בוחרים באפשרות מופעל.

  8. אופציונלי: לוחצים על בדיקת שינויים כדי לדמות את ההשפעה של מדיניות הארגון הזו. מידע נוסף זמין במאמר בנושא בדיקת שינויים במדיניות הארגון באמצעות סימולטור המדיניות.

  9. כדי לסיים ולהחיל את מדיניות הארגון, לוחצים על הגדרת מדיניות.

gcloud

  1. יוצרים קובץ הגדרת מדיניות ב-YAML:

    name: organizations/ORGANIZATION_ID/policies/custom.CONSTRAINT_ID
    spec:
      rules:
      - enforce: true
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ORGANIZATION_ID: מזהה הארגון
    • CONSTRAINT_ID: מזהה האילוץ
  2. אכיפת המדיניות:

    gcloud org-policies set-policy ORG_POLICY_PATH
    

    מחליפים את ORG_POLICY_PATH בנתיב לקובץ הגדרת המדיניות.

  3. מוודאים שהמדיניות קיימת:

    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, מבצעים את הפעולות הבאות:

מחיקת האילוץ המותאם אישית

אפשר למחוק אילוץ מותאם אישית באמצעות מסוף Google Cloud או Google Cloud CLI.

המסוף

  1. במסוף Google Cloud , נכנסים לדף מדיניות הארגון.

    מעבר למדיניות הארגון

  2. בוחרים את הפרויקט בחלונית לבחירת פרויקט בחלק העליון של הדף.

  3. בוחרים את הארגון מתוך בורר הפרויקטים.

  4. מחפשים את ההגבלה ובוחרים אותה מהרשימה.

  5. בקטע פרטי ההגבלה, לוחצים על מחיקה.

  6. כדי לאשר את מחיקת ההגבלה, לוחצים על מחיקה.

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]

אחרי שמוחקים אילוץ מותאם אישית, כל כללי המדיניות שנוצרו באמצעות האילוץ הזה ממשיכים להתקיים, אבל המערכת מתעלמת מהם. אי אפשר ליצור עוד אילוץ מותאם אישית עם שם זהה לאילוץ מותאם אישית שנמחק.

המאמרים הבאים