הגדרת אכיפת מדיניות ב-Binary Authorization

‫Binary Authorization for Google Distributed Cloud היא Google Cloud תכונה שמרחיבה את האכיפה של Binary Authorization בזמן הפריסה, שמתארחת בענן, גם לאשכולות מקומיים. תרחיש השימוש העיקרי ב-Binary Authorization ב-Google Distributed Cloud הוא אבטחת עומסי עבודה, אבל Binary Authorization פועל עם כל סוגי האשכולות. כדי להחיל על האשכולות את כללי האכיפה של מדיניות Binary Authorization שהוגדרה בפרויקט Google Cloud , פועלים לפי השלבים במדריך הזה. מידע נוסף על כללי מדיניות וכללים של Binary Authorization זמין במאמר סקירה כללית על Binary Authorization.

דרישות מוקדמות

לפני שמפעילים אכיפה של מדיניות Binary Authorization באשכול, חשוב לוודא שמתקיימים הקריטריונים הבאים:

  • רישום האשכול ב-Fleet: אשכול שנוצר באמצעות bmctl נרשם בפרויקט Google Cloud שצוין בשדה gkeConnect.projectID בקובץ התצורה של האשכול. הפרויקט הזה נקרא פרויקט המארח של ה-Fleet. מידע נוסף על ציוד, כולל תרחישי שימוש, שיטות מומלצות ודוגמאות, זמין במסמכי התיעוד בנושא ניהול ציוד.

  • מפעילים את Binary Authorization API בפרויקט Google Cloud : מפעילים את שירות Binary Authorization בפרויקט המארח של צי הרכבים.

  • מוסיפים את התפקיד Binary Authorization Policy Evaluator (הערכת מדיניות של אישור בינארי) לפרויקט המארח של הצי: כדי להעניק את התפקיד Binary Authorization Policy Evaluator ‏(roles/binaryauthorization.policyEvaluator) לחשבון השירות של Kubernetes בפרויקט המארח של הצי, מריצים את הפקודה הבאה:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role="roles/binaryauthorization.policyEvaluator"
    

    אם האשכול שלכם פועל מאחורי שרת proxy, צריך לוודא ששרת ה-proxy מאפשר חיבורים ל-Binary Authorization API ‏(binaryauthorization.googleapis.com). ה-API הזה מספק אימות ושליטה בהטמעה מבוססי מדיניות לתמונות שמוטמעות באשכול. מידע נוסף על שימוש בהגדרת פרוקסי זמין במאמר התקנה מאחורי פרוקסי.

אחרי שמוודאים שמתקיימות הדרישות המוקדמות, אפשר להפעיל (או להשבית) את מדיניות Binary Authorization כשיוצרים אשכול חדש או מעדכנים אשכול קיים.

הפעלת מדיניות Binary Authorization במהלך יצירת האשכול

אפשר להפעיל את אכיפת המדיניות של Binary Authorization באמצעות bmctl או ה-CLI של gcloud.

bmctl

כדי להפעיל את Binary Authorization כשיוצרים אשכול באמצעות bmctl:

  1. לפני שיוצרים את האשכול, מוסיפים את spec.binaryAuthorization.evaluationMode לקובץ התצורה של האשכול, כמו בדוגמה הבאה:

    ...
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user-basic
      namespace: cluster-user-basic
    spec:
      type: user
      ...
      binaryAuthorization:
        evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
    

    הערכים המותרים של evaluationMode הם:

    • PROJECT_SINGLETON_POLICY_ENFORCE: לאכוף את הכללים שצוינו במדיניות של Binary Authorization, שנקראת גם מדיניות יחידה ברמת הפרויקט, בפרויקט Google Cloud כדי לשלוט בפריסה של תמונות קונטיינר באשכול.

    • DISABLE: השבתה של השימוש ב-Binary Authorization באשכול. זה ערך ברירת המחדל. אם לא מציינים את binaryAuthorization, התכונה מושבתת.

  2. מבצעים שינויים נוספים שנדרשים בקובץ התצורה של האשכול ואז מריצים את הפקודה bmctl create cluster.

מידע נוסף על יצירת אשכולות זמין במאמר סקירה כללית על יצירת אשכולות.

‫CLI של gcloud

  • כדי ליצור אשכול משתמשים ולהפעיל את Binary Authorization, מוסיפים את הדגל --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE כשמריצים את הפקודה gcloud container bare-metal clusters create.

    כך נוצר אשכול משתמשים שמחיל את הכללים שצוינו במדיניות Binary Authorization, שנקראת גם מדיניות יחידה ברמת הפרויקט. המדיניות הזו משויכת לפרויקט Google Cloud שלכם ומציינת כללים לניהול הפריסה של קובצי אימג' בקונטיינר. למידע נוסף על שימוש ב-CLI של gcloud כדי ליצור אשכול משתמשים, אפשר לעיין במאמר יצירת אשכול משתמשים באמצעות לקוחות GKE On-Prem API. למידע נוסף על כללי מדיניות וכללים של Binary Authorization, ראו סקירה כללית על Binary Authorization.

הפעלה או השבתה של מדיניות Binary Authorization באשכול קיים

אם יש לכם אשכול קיים בגרסה 1.16 ואילך, אתם יכולים להפעיל או להשבית את Binary Authorization בכל שלב באמצעות bmctl או ה-CLI של gcloud.

bmctl

  • כדי להפעיל:

    1. עורכים את קובץ התצורה של האשכול כדי להוסיף את השדות binaryAuthorization:

      ...
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: user-basic
        namespace: cluster-user-basic
      spec:
        type: user
        ...
        binaryAuthorization:
          evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
      
    2. מעדכנים את האשכול:

      bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIG
      

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

      • CLUSTER_NAME: השם של האשכול שרוצים לעדכן.
      • CLUSTER_KUBECONFIG: הנתיב לקובץ kubeconfig של האשכול.
    3. מחכים שהפריסה בשם binauthz-module-deployment במרחב השמות binauthz-system תהיה מוכנה.

      כשהפריסה מוכנה, Binary Authorization אוכף את הכללים שצוינו במדיניות של Binary Authorization, שנקראת גם מדיניות יחידה ברמת הפרויקט. המדיניות הזו משויכת לפרויקטGoogle Cloud שלכם ומפרטת כללים שקובעים את הפריסה של תמונות קונטיינר. למידע נוסף על השימוש ב-bmctl לעדכון אשכול, אפשר לעיין במאמר עדכון אשכולות. מידע נוסף על כללי מדיניות וכללים של Binary Authorization זמין במאמר סקירה כללית של Binary Authorization.

  • כדי להשבית את התכונה:

    כדי להשבית את התכונה הזו, צריך להגדיר את evaluationMode ל-DISABLED או להסיר את הקטע binaryAuthorization ממפרט האשכול. אחרי שמבצעים את השינוי הזה, צריך להמתין כמה דקות עד שהפריסה בשם binauthz-module-deployment במרחב השמות binauthz-system תוסר.

‫CLI של gcloud

  • כדי להפעיל את Binary Authorization באשכול קיים, מוסיפים את הדגל --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE כשמריצים את הפקודה gcloud container bare-metal clusters update.

    הפקודה הזו מעדכנת אשכול משתמשים כך ש-Binary Authorization יאכוף את הכללים שצוינו במדיניות של Binary Authorization, שנקראת גם מדיניות יחידה ברמת הפרויקט. המדיניות הזו משויכת לפרויקטGoogle Cloud ומציינת כללים לניהול הפריסה של תמונות קונטיינר. למידע נוסף על שימוש ב-CLI של gcloud כדי לעדכן אשכול משתמשים, אפשר לעיין במאמר gcloud container bare-metal clusters update במדריך העזר ל-CLI של gcloud. למידע נוסף על כללי מדיניות וכללים של Binary Authorization, ראו סקירה כללית על Binary Authorization.

  • כדי להשבית את Binary Authorization באשכול קיים, מריצים את הפקודה gcloud container bare-metal clusters update עם הדגל --binauthz-evaluation-mode=DISABLED.

פתרון בעיות

אם לא תעמדו בכל הדרישות המוקדמות, יכול להיות שלא תקבלו שום סימן מוקדם לבעיה. אם Binary Authorization מתחיל להיכשל בתגובה לבקשות ליצירת Pod, כדאי לבדוק את status.conditions בשביל ה-ReplicaSet. הודעה כמו זו שבהמשך מציינת שיש בעיה בהגדרת Binary Authorization:

failed to validate Binary Authorization policy

(1) Ensure the Binary Authorization API is enabled for your Google Cloud project:
    gcloud services enable binaryauthorization.googleapis.com --project=PROJECT_ID
(2) Ensure an IAM policy binding is in place granting binaryauthorization.policyEvaluator role to the binauthz-system/binauthz-agent Kubernetes service account:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role=roles/binaryauthorization.policyEvaluator