בדף הזה מוסבר איך להתקין את Policy Controller. Policy Controller בודק את התאימות של האשכולות שלכם למדיניות שקשורה לאבטחה, לתקנות או לכללים עסקיים, מבצע ביקורות ומחיל את המדיניות.
הדף הזה מיועד לאדמינים ולמפעילים בתחום ה-IT שרוצים לוודא שכל המשאבים שפועלים בפלטפורמת הענן עומדים בדרישות התאימות של הארגון. כדי לעשות את זה, הם יכולים לספק ולתחזק אוטומציה לביקורת או לאכיפה. מידע נוסף על תפקידים נפוצים ועל דוגמאות למשימות שאנחנו מתייחסים אליהן בתוכן של Google Cloud , זמין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE.
אם אתם משתמשים ב-Google Kubernetes Engine, תוכלו להשתמש ב-Policy Controller. מידע נוסף זמין במחירון של Google Kubernetes Engine.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מתקינים ומפעילים את Google Cloud CLI, שמספק את הפקודות
gcloud,kubectlו-nomosשמשמשות בהוראות האלה. אם התקנתם בעבר את ה-CLI של gcloud, תוכלו להריץ את הפקודהgcloud components updateכדי לקבל את הגרסה העדכנית. אם אתם משתמשים ב-Cloud Shell, Google Cloud CLI מותקן מראש. מוודאים ש-Open Policy Agent Gatekeeper (סוכן מדיניות פתוח) לא מותקן באשכול. אם כן, צריך להסיר את Gatekeeper לפני שמתקינים את Policy Controller.
מפעילים את ממשקי ה-API הנדרשים:
console
מפעילים את Policy Controller API.
gcloud
מריצים את הפקודה הבאה:
gcloud services enable anthospolicycontroller.googleapis.comיוצרים אשכול או מוודאים שיש לכם גישה לאשכול שפועלת בו גרסת Kubernetes 1.14.x ואילך. יכול להיות ש-Policy Controller יפעל בגרסאות של Kubernetes שקודמות לגרסה 1.14.x, אבל המוצר לא יפעל בצורה תקינה.
אם אתם מתכננים להשתמש ב-Google Cloud CLI כדי להגדיר את Policy Controller, עליכם לרשום את האשכול בצי עכשיו. אם אתם מתכננים להשתמש במסוף Google Cloud , אתם צריכים לרשום את האשכולות כשאתם מתקינים את Policy Controller.
אם אתם משתמשים באשכולות מצורפים של GKE, ודאו שלאשכול AKS שלכם אין את התוסף Azure Policy, והימנעו מתוויות של מרחבי שמות עם המפתח
control-plane.אם אתם משתמשים ב-Google Distributed Cloud ב-VMware או ב-bare metal, אתם צריכים לוודא שאתם מתקינים את Policy Controller באשכול משתמשים. אי אפשר להתקין את Policy Controller באשכול אדמין.
התקנה של Policy Controller
המסוף
כדי להתקין את Policy Controller במסוף Google Cloud :
- במסוף Google Cloud , עוברים לדף Policy בקטע Posture Management.
לוחצים על add Configure Policy Controller (הגדרת Policy Controller).
אופציונלי: כדי לשנות את הגדרות ברירת המחדל של הצי, לוחצים על התאמה אישית של הגדרות הצי. בתיבת הדו-שיח שמופיעה, מבצעים את הפעולות הבאות:
- בקטע הוספה או עריכה של חבילות מדיניות, לוחצים על המתג הרלוונטי כדי לכלול או להחריג חבילת מדיניות.
בקטע Edit Policy Controller configuration (עריכת ההגדרה של Policy Controller), מבצעים את הפעולות הבאות:
- כדי להפעיל את mutation webhook, מסמנים את תיבת הסימון Enable mutation webhook. התכונה הזו לא תואמת לאשכולות Autopilot.
- בתיבה Audit interval (מרווח בין בדיקות), מזינים את התקופה בשניות בין שתי בדיקות עוקבות.
בתיבה Exemptible namespaces (מרחבי שמות שניתן להחריג), מזינים רשימה של מרחבי שמות. הכלי Policy Controller מתעלם מאובייקטים במרחבי השמות האלה. התכונה הזו לא תואמת לאשכולות Autopilot.
שיטה מומלצת: כדי למנוע שגיאות בסביבה, צריך להחריג מרחבי שמות של מערכות. הוראות להחרגת מרחבי שמות ורשימה של מרחבי שמות נפוצים שנוצרו על ידי שירותי Google Cloud מופיעות בדף ההחרגה של מרחבי שמות.
כדי להפעיל אילוצים של הפניה, מסמנים את התיבה Enable Constraint Templates that reference to objects other than the object currently being evaluated (הפעלת תבניות אילוצים שמפנות לאובייקטים אחרים מלבד האובייקט שנבדק כרגע).
ברשימה Version (גרסה), בוחרים את הגרסה של Policy Controller שרוצים להשתמש בה.
לוחצים על שמירת השינויים.
לוחצים על Configure (הגדרה).
בתיבת הדו-שיח לאישור, לוחצים על אישור. אם לא הפעלתם בעבר את Policy Controller, לחיצה על Confirm תפעיל את
anthospolicycontroller.googleapis.comAPI ותתקין את Policy Controller באשכולות שלכם.אופציונלי: סנכרון של אשכולות קיימים עם הגדרות ברירת המחדל:
- בכרטיסייה הגדרות, לוחצים על סנכרון עם הגדרות הצי.
- ברשימה Clusters in the fleet, בוחרים את האשכולות שרוצים לסנכרן ולוחצים על Sync to fleet settings. הפעולה הזו יכולה להימשך כמה דקות.
תועברו לכרטיסייה הגדרות של Policy Controller. אחרי שמתקינים ומגדירים את Policy Controller באשכולות, בעמודות הסטטוס מוצג Installed check_circle. הפעולה הזו יכולה להימשך כמה דקות.
gcloud
מפעילים את Policy Controller על ידי הרצת הפקודה הבאה:
gcloud container fleet policycontroller enable \
--memberships=MEMBERSHIP_NAME
אפשר להגדיר שדות נוספים כדי לקבוע את ההגדרות של Policy Controller. לדוגמה, יכול להיות שתרצו להגדיר ל-Policy Controller להחריג כמה מרחבי שמות מהאכיפה.
רשימה מלאה של השדות שאפשר להגדיר מופיעה במסמכי העזרה של Policy Controller Google Cloud CLI או בהרצת הפקודה gcloud container fleet policycontroller enable --help.
כדי להגדיר הגדרות ברמת הצי ל-Policy Controller, מבצעים את השלבים הבאים:
יוצרים קובץ בשם
fleet-default.yamlשמכיל את הגדרות ברירת המחדל של Policy Controller. השדהinstallSpecהוא חובה כדי להפעיל הגדרות ברירת מחדל ברמת הארגון. בדוגמה הזו מוצגות האפשרויות שניתן להגדיר:# cat fleet-default.yaml policyControllerHubConfig: installSpec: INSTALL_SPEC_ENABLED # Uncomment to set default deployment-level configurations. # deploymentConfigs: # admission: # containerResources: # limits: # cpu: 1000m # memory: 8Gi # requests: # cpu: 500m # memory: 4Gi # Uncomment to set policy bundles that you want to install by default. # policyContent: # bundles: # cis-k8s-v1.5.1: # exemptedNamespaces: # - "namespace-name" # Uncomment to exempt namespaces from admission. # exemptableNamespaces: # - "namespace-name" # Uncomment to enable support for referential constraints # referentialRulesEnabled: true # Uncomment to disable audit, adjust value to set audit interval # auditIntervalSeconds: 0 # Uncomment to log all denies and dryrun failures # logDeniesEnabled: true # Uncomment to enable mutation # mutationEnabled: true # Uncomment to adjust the value to set the constraint violation limit # constraintViolationLimit: 20 # ... other fields ...שיטה מומלצת: כדי למנוע שגיאות בסביבה, צריך להחריג מרחבי שמות של מערכות. הוראות להחרגת מרחבי שמות ורשימה של מרחבי שמות נפוצים שנוצרו על ידי שירותי Google Cloud מופיעות בדף ההחרגה של מרחבי שמות.
החלת הגדרות ברירת המחדל על המאגר:
gcloud container fleet policycontroller enable \ --fleet-default-member-config=fleet-default.yamlכדי לוודא שההגדרה הוחלה, מריצים את הפקודה הבאה:
gcloud container fleet policycontroller describeכדי להסיר את הגדרות ברירת המחדל ברמת הצי, מריצים את הפקודה הבאה:
gcloud container fleet policycontroller enable \ --no-fleet-default-member-config
Terraform
כדי להפעיל את Policy Controller בכל הצי עם ספריית התבניות שמותקנת כברירת מחדל, אפשר להיעזר בדוגמה הבאה:
אפשר להעביר כמה בלוקים של bundle כדי להתקין כל אחת מהחבילות שמפורטות בסקירה הכללית של חבילות Policy Controller.
מידע נוסף על שימוש ב-Terraform זמין במאמר תמיכה ב-Terraform ב-Policy Controller.
אימות ההתקנה של Policy Controller
אחרי שמתקינים את Policy Controller, אפשר לוודא שההתקנה הושלמה בהצלחה.
המסוף
כך עושים את זה:
- במסוף Google Cloud , עוברים לדף Policy בקטע Posture Management.
- בכרטיסייה Settings, בטבלת האשכולות, בודקים את העמודה Policy controller status. התקנה מוצלחת תופיע עם הסטטוס Installed (הותקן) check_circle.
gcloud
מריצים את הפקודה הבאה:
gcloud container fleet policycontroller describe --memberships=MEMBERSHIP_NAME
אם ההתקנה בוצעה בהצלחה, יופיע membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE.
אימות ההתקנה של ספריית תבניות האילוצים
כשמתקינים את Policy Controller, ספריית תבניות האילוצים מותקנת כברירת מחדל. ההתקנה הזו יכולה להימשך כמה דקות. אפשר לוודא שהספרייה של התבניות הושלמה בהצלחה.
המסוף
כך עושים את זה:
- במסוף Google Cloud , עוברים לדף Policy בקטע Posture Management.
- בכרטיסייה הגדרות, בטבלת האשכול, בוחרים את המספר שמופיע בעמודה חבילות שהותקנו. בחלונית Policy content status (מצב תוכן המדיניות), אם ההתקנה של ספריית התבניות בוצעה בהצלחה, המצב יהיה Installed (הותקן) check_circle.
gcloud
מריצים את הפקודה הבאה:
kubectl get constrainttemplates
הפלט אמור להיראות כך:
NAME AGE k8sallowedrepos 84s k8scontainerlimits 84s k8spspallowprivilegeescalationcontainer 84s ...[OUTPUT TRUNCATED]...
כשמתקינים תבנית אילוץ בנפרד בצורה תקינה, השדה status.created שלה הוא true.
אינטראקציות של Policy Controller עם סנכרון תצורות
אם אתם משתמשים ב-Policy Controller עם סנכרון תצורות, חשוב שתכירו את האינטראקציות הבאות עם משאבים שמאוחסנים במקור האמת שלכם, כמו מאגר Git, שמסונכרנים על ידי סנכרון תצורות:
אי אפשר לסנכרן תבנית אילוצים שהיא גם חלק מספריית התבניות, אלא אם ספריית תבניות האילוצים מושבתת.
אם רוצים לסנכרן את המשאב
Configשמאוחסן במרחב השמותgatekeeper-system, צריך להגדיר את המשאבConfigרק במקור האמת. אסור להגדיר אתgatekeeper-systemNamespaceיחד עם המאפיין הזה.
הגדרת מדדים
כברירת מחדל, Policy Controller מנסה לייצא מדדים גם ל-Prometheus וגם ל-Cloud Monitoring. יכול להיות שתצטרכו לבצע שלבי הגדרה נוספים, כמו מתן הרשאות, כדי לאפשר ל-Policy Controller לייצא מדדים. מידע נוסף זמין במאמר שימוש במדדים של Policy Controller.
ניהול ספריית תבניות האילוצים
למידע על הסרת או התקנה של תבניות אילוצים, האילוצים המשויכים להן או ספריית תבניות האילוצים, אפשר לעיין במאמר יצירת אילוצים.
החרגת מרחבי שמות מאכיפה
אפשר להגדיר את Policy Controller כך שיתעלם מאובייקטים במרחב שמות. מידע נוסף זמין במאמר החרגת מרחבי שמות מ-Policy Controller.
שינוי משאבים
Policy Controller פועל גם כ-webhook לשינוי. מידע נוסף מופיע במאמר בנושא שינוי משאבים.
צפייה בגרסה של Policy Controller
כדי לגלות באיזו גרסה של Gatekeeper Policy Controller משתמשים, מריצים את הפקודה הבאה כדי לראות את תג התמונה:
kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
-o="jsonpath={.spec.template.spec.containers[0].image}"
תג ה-Git (או הגיבוב) שמשמש ליצירת Gatekeeper ומספר הגרסה של ConfigManagement Operator כלולים בתג התמונה באופן הבא:
.../gatekeeper:VERSION_NUMBER-GIT_TAG.gBUILD_NUMBER
לדוגמה, עבור התמונה הבאה:
gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
-
anthos1.3.2הוא מספר הגרסה. -
480baacהוא תג Git. -
0הוא מספר ה-Build.
שדרוג Policy Controller
לפני שמשדרגים את Policy Controller, כדאי לעיין בהערות לגבי הגרסה כדי לקבל פרטים על השינויים בין הגרסאות.
כדי לשדרג את Policy Controller, מבצעים את השלבים הבאים:
המסוף
- במסוף Google Cloud , עוברים לדף Policy בקטע Posture Management.
- בכרטיסייה הגדרות, לצד האשכול שרוצים לשדרג את הגרסה שלו, בוחרים באפשרות edit עריכת ההגדרה.
- מרחיבים את התפריט Edit Policy Controller configuration (עריכת ההגדרה של Policy Controller).
- מהרשימה הנפתחת Version, בוחרים את הגרסה שאליה רוצים לשדרג.
- לוחצים על שמירת השינויים.
gcloud
מריצים את הפקודה הבאה:
gcloud container fleet policycontroller update \
--version=VERSION \
--memberships=MEMBERSHIP_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
VERSION: הגרסה שאליה רוצים לשדרג -
MEMBERSHIP_NAME: שם המינוי שבחרתם כשנרשמתם לשימוש באשכול. אפשר למצוא את שם המינוי על ידי הרצת הפקודהgcloud container fleet memberships list.
הסרת Policy Controller
כדי להסיר את Policy Controller מהאשכולות, פועלים לפי השלבים הבאים.
המסוף
כדי להשבית את Policy Controller באשכולות, צריך לבצע את המשימות הבאות:
- במסוף Google Cloud , עוברים לדף Policy בקטע Posture Management.
- בכרטיסייה הגדרות, בטבלת האשכולות, לוחצים על עריכה edit בעמודה עריכת הגדרה.
- בחלונית של האשכול, מרחיבים את התפריט About Policy Controller (מידע על Policy Controller).
- בוחרים באפשרות הסרת Policy Controller.
- כדי לאשר את ההסרה, פועלים לפי ההוראות בתיבת הדו-שיח לאישור ולוחצים על אישור.
כשמסירים את Policy Controller, בעמודות הסטטוס מוצג Not installed do_not_disturb_on.
gcloud
כדי להסיר את Policy Controller, מריצים את הפקודה הבאה:
gcloud container fleet policycontroller disable \
--memberships=MEMBERSHIP_NAME
מחליפים את MEMBERSHIP_NAME בשם החברות של האשכול הרשום שרוצים להשבית בו את Policy Controller. אפשר לציין כמה חברויות ולהפריד ביניהן באמצעות פסיקים.
הרשאות ו-RBAC ב-Policy Controller
Policy Controller כולל עומסי עבודה עם הרשאות גבוהות מאוד. ההרשאות של עומסי העבודה האלה מפורטות במסמכי התיעוד של פעולות Open Policy Agent Gatekeeper.
המאמרים הבאים
- מידע נוסף על Policy Controller
- מידע נוסף על חבילות Policy Controller
- איך יוצרים אילוץ
- פתרון בעיות ב-Policy Controller