Azure Policy - מאמר 1

Azure Policy - מאמר 1

שלום לכולם,

במאמר זה אסביר על Azure Policy,  מה זה Azure Policy, מה ההבדל בין Azure Policy ל-Azure Role Based Access, מדוע זאת אפשרות מאוד חשובה מבחינת ניהול ואבטחה בעבודה עם Azure וכמובן איך לבנות מדיניות חדשה.

מה זה Azure Policy

שירות Azure Policy מאפשר ליצור, להקצות ולנהל מדיניות על גבי פלטופרמת הענן של מיקרוסופט – Azure (נכון לכתיבת המאמר השירות נמצא ב-Preview). שירות זה מאפשר להגדיר מדיניות (חוקים) למשאבים/שירותים שונים שיאכפו ויאפשרו לעמוד בתקנים הארגוניים ולנהל בצורה נכונה את הסביבה מבחינת משאבים, תקציבים ועוד. המדיניות שהוגדרו בחשבון נבדקים בכל יצירה/עדכון של המשאבים. לדוגמה: לקבוע מדיניות באיזה Azure Location ניתן להרים שירותים או איזה סוג מסויים של Azure VM ניתן ליצור בחשבון ועוד.

מה הבדלים בין Azure RBAC ל-Azure Policy

במאמרים הקודמים הסברתי על פתרון נוסף שנקרא Azure RBAC שאולי מזכיר את Azure Policy אבל יש ביניהם הבדלים משמעותיים ותפקיד שונה ולכן חשוב לדעת להשתמש בשניהם. Azure RBAC מאפשר לנו לתת הרשאות באופן פרטני לאובייקטים מסוימים ובכך להגביל את הגישה של המשתמשים לפי הצרכים והדרישות שלהם לעומת Azure Policy שיותר מתמקד במאפיינים של המשאבים כבר במהלך היצירה ובמשאבים הקיימים לדוגמה: איזה  Azure Location מותר ליצור שירותים, לחייב להשתמש ב-Azure Tag לכל שירות ועוד. כדי ליצור ולשייך מדיניות ב-Azure Policy צריך להיות בעל הרשאות בעזרת Azure RBAC כמו Security Admin, Onwer וכו’. בנוסף, אפשר ליצור Custom Role מותאם אישית ל-Azure Policy. להלן סט ההרשאות שניתן להשתמש בהם בעבודה עם Azure Policy (לא חייבים לאפשר מחיקה):
  • Microsoft.Authorization/policydefinitions/read
  • Microsoft.Authorization/policydefinitions/write
  • Microsoft.Authorization/policydefinitions/delete
  • Microsoft.Authorization/policyassignments/read
  • Microsoft.Authorization/policyassignments/write
  • Microsoft.Authorization/policyassignments/delete
  • Microsoft.Authorization/policySetDefinitions/read
  • Microsoft.Authorization/policySetDefinitions/write
  • Microsoft.Authorization/policySetDefinitions/delete
ראה מאמר איך ליצור Custom Role בלינק הבא: יצירת תפקיד מותאם אישית הערה: לתפקיד Contributor אין הרשאות ליצור מדיניות חדשות או לשייך מדיניות למשאבים.


איך בונים מדיניות בעזרת Azure Policy

  1. בניית מדיניות חדשה
  2. שיוך ל-Scope הרצוי.
  3. בדיקות

בניית מדיניות חדשה

ניתן לבנות מדיניות חדשה בעזרת הפורטל, PowerShell, Azure CLI ועוד. במאמר זה בחרתי להראות איך לבנות מדיניות באופן פשוט דרך פורטל Azure. כדי לבנות מדיניות יש לבחור בשירות Policy (ניתן לחפש תחת All Services וללחוץ על Definitions). Policy1 כמו שניתן לראות יש רשימה של Definitions מובנים שניתן לשייך ובנוסף, יש אפשרות לבחור ב-Initiative definition לבניית מדיניות ממספר Definitions שונים. Policy2 במאמר הבא אסביר כיצד לבנות Definition משלכם בעזרת JSON. לטובת הדוגמה נבחר ב-Initiative definition שיגדיר את המדיניות הבאה:
  1. איזה סוגי מכונות מותר להשתמש.
  2. איזה Azure Location
  3. שיוך אוטומטי לפתרון OMS - Log Analytics.
יש להגדיר על איזה Subscription רוצים ליצור את ה-Initiative Definition, לבחור שם ולהגדיר Category אליו ה-Policy מתאים.Policy3 הוספת ה-Defintions נעשת מהחלון בצד ימין (Available Definitions). Policy4 לאחר סיום ההגדרות יש ללחוץ על Save, נחזור למסך הראשי ונראה את ה-Definition החדש.

שיוך ל-Scope הרצוי.

לאחר היצירה, יש ללחוץ על Assign ולשייך למשאב הרצוי. Policy5 בחלון שנפתח יש להגדיר את השם למדיניות ולאיזה Subscription ו/או Resource Group לשייך את ה-Policy. בנוסף, יש אפשרות להוציא משאבים מסויימים מהמדיניות בעזרת Exclusions.Policy6 הערה: נכון לכתיבת המאמר אין עלות לשימוש בשירות (כרגע ב-Preview) אבל ניתן לראות 2 מודלים:
  • Free – מאפשר לאכוף מדיניות רק על אובייקטים עתידיים.
  • Standard – מאפשר לאכוף מדיניות גם על אובייקטים קיימים.

בדיקות

לאחר מספר דקות נוכל לראות תחת Compliance Dashboard את התאימות של המדיניות לאובייקטים שנמצאים תחת ה-Resource Group ששייכנו אליו. Policy7 ואם נכנס פנימה נראה את האובייקטים “הבעייתים”. Policy8 כפי שראינו ניתן לאכוף מדיניות על אוביקטיים קיימים ובמידה ונרצה להרים שירות חדש שלא עומד במדיניות שקבענו נקבל הודעת שגיאה כבר בשלב היצירה (לא נוכל ליצור את המשאב). Policy9
בדוגמה ניסינו ליצור שרת מסוג A1 שבמדיניות קבענו רק שרתים מסוג D.

לסיכום

שירות Azure Policy הוא פתרון חשוב מאוד הנותן לנו שליטה מלאה ויכולת לאכוף מדיניות ארגונית על השירותים/משאבים שיש לנו ב-Azure כמו איזה סוגי שרתים להקים, איפה להקים ועוד. בשילוב עם פתרון Azure RBAC אנחנו יכולים לתת למשתמשים לבצע פעולות מסויימות
בסביבה אך הם עדין יצטרכו להיות כפופים למדיניות שנקבעה.