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:
לפני שיוצרים את האשכול, מוסיפים את
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, התכונה מושבתת.
מבצעים שינויים נוספים שנדרשים בקובץ התצורה של האשכול ואז מריצים את הפקודה
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
כדי להפעיל:
עורכים את קובץ התצורה של האשכול כדי להוסיף את השדות
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"מעדכנים את האשכול:
bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIGמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול שרוצים לעדכן. -
CLUSTER_KUBECONFIG: הנתיב לקובץ kubeconfig של האשכול.
-
מחכים שהפריסה בשם
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