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

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

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

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

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

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

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

    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 הזה מספק אימות ובקרה מבוססי-מדיניות לפריסה של קובצי אימג' באשכול. מידע נוסף על שימוש בהגדרת שרת proxy זמין במאמר התקנה מאחורי שרת proxy.

אחרי שתעמדו בדרישות המוקדמות, תוכלו להפעיל (או להשבית) את מדיניות 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, שנקראת גם מדיניות יחידה (singleton) ברמת הפרויקט. המדיניות הזו משויכת לפרויקט 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 כדי לעדכן אשכול משתמש, ראו עדכון אשכולות Bare Metal של קונטיינרים ב-gcloud במדריך העזר ל-CLI של gcloud. למידע נוסף על כללי מדיניות וכללים של Binary Authorization, קראו את הסקירה הכללית על Binary Authorization.

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

פתרון בעיות

אם לא תבצעו את כל הדרישות המוקדמות, יכול להיות שלא תראו אינדיקציה מוקדמת לבעיה. אם Binary Authorization מפסיק להגיב לבקשות ליצירת פודים, צריך לבדוק את 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