יצירת Custom Role ב-Azure RBAC

שלום לכולם,

במאמר הקודם שלי דיברתי איתכם על פתרון Azure RBAC המאפשר לנו לתת הרשאות באופן פרטני לאובייקטים מסוימים ובכך להגביל את הגישה של המשתמשים בפורטל Azure.
בנוסף, ראינו את  “התפקידים” שקיימים לנו בפורטל כברירת מחדל כמו Owner, Virtual Machine Contributor וכו’ אבל לא תמיד תפקידים האלה מתאימים לצרכים שלנו בארגון,  לעיתים נרצה להגביל באופן יותר מדויק כך שיאפשר למשתמשים לעבוד באופן שוטף בהתאם לדרישות הארגון ומנגד לא יתאפשר להם לבצע פעולות לא מורשות.
אפשרות ליצירת “תפקיד” מותאם אישית (Custom Role) ניתן לבצע בעזרת Azure PowerShell, Azure CLI ו-Rest API.

במאמר היום אני אראה לכם איך מייצרים Custom Role שמאפשר קריאת ערכי המשאב, אתחול, הדלקה וכיבוי ל-Virtual Machines ב-ARM בעזרת Azure PowerShell.
השלבים שאנו מבצעים עבור הקמת Custom Role חדש:

  1. העתקת Role מ-Role קיים.
  2. הגדרת ה-Role החדש עם הפעולות המורשות.
  3. שיוך משתמש וביצוע בדיקות.

אז בואו נתחיל להגדיר את ה-Role החדש.

שלב א’ – העתקת Role מ-Role קיים

כדי לייצר Role חדש ב-Azure PowerShell אנחנו צריכים להתבסס על Role קיים, נוכל להשתמש בפקודה הבאה כדי לעשות “העתקה” ל-Role קיים.

#Define Custom Role, based on Built-in Reader Role
$Role = Get-AzureRmRoleDefinition "Reader";
לאחר מכן אנחנו “ננקה” את הערכים הבאים: Name, ID, Description, Actions, NotActions and AssignableScopes בעזרת הפקודות הבאות:
#Cleanup all parameters
$Role.Name = $NULL;
$Role.Description = $NULL;
$Role.Id = $NULL;
$Role.Actions.Clear();
$Role.NotActions.Clear();
$Role.AssignableScopes.Clear();
  • Name – שם ה-Role.
  • Description – תיאור קצר של ה-Role.
  • Actions – פעולות שאתה מאפשר ל-Role לבצע מול המשאבים ב-Azure.
  • NotActions – פעולות שאתה אינו מאפשר לבצע ב-Role. חשוב לציין ש-NotActions אינו חוסם את הפעולה במידה ויש התנגשות בין תפקידים. הערך NotActions משמש בעיקר לטובת נוחות לדוגמה: תפקיד המאפשר את כל הפעולות במשאב מלבד פעולה מסוימת.

שלב ב’ – הגדרת ה-Role החדש עם הפעולות המורשות

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

Get-AzureRMProviderOperation -OperationSearchString:* | FT Operation,OperationName,Description;

#For EX: Get all Operation for Virtual Machines
Get-AzureRMProviderOperation -OperationSearchString:Microsodft.Compute/virtualMachines/* | FT Operation,OperationName,Description;
לאחר שבחרנו את הפעולות שאנחנו מעוניינים שה-Role יבצע, נתחיל בהגדרת התפקיד בעזרת הפקודות הבאות
#Define Name for your custom role
$Role.Name = "CustomRole Virtual Machines Power";
#Define Description for your custom role
$Role.Description = "My own custom role for virtual machines";
#Add Actions (Allow only read, start, powerOff and restart)
$Role.Actions.Add("Microsoft.Compute/virtualMachines/read");
$Role.Actions.Add("Microsoft.Compute/virtualMachines/start/action");
$Role.Actions.Add("Microsoft.Compute/virtualMachines/powerOff/action");
$role.Actions.Add("Microsoft.Compute/virtualMachines/deallocate/action")
$Role.Actions.Add("Microsoft.Compute/virtualMachines/restart/action");
#AssignSubscriptions - Which Subscriptions assign to this role
$Role.AssignableScopes = @("/subscriptions/$subscriptionId")

לאחר שהגדרנו את ה-Role ואת הפעולות שהוא יכול לבצע, נייצר את התפקיד בעזרת הפקודה הבאה:

#Create the custom role
New-AzureRmRoleDefinition -Role $Role

שלב ג’ – שיוך למשתמש וביצוע בדיקות

הגיע הזמן להריץ את הסקריפט ליצירת Role חדש על Subscription מסוים  Smile
RBAC01
נוכל לראות כעת שנוצר לנו Role חדש בפורטל Azure בעל הרשאות מיוחדות בהתאם למה שהגדרנו (במקרה שלנו – כיבוי, הדלקה ואתחול למכונות וירטואליות ב-ARM).
RBAC02
אחרי ששייכנו את המשתמש ל-Role נוכל לראות שהמשתמש (בחלון ימין) לא יכול למשל למחוק את השרת לעומת המשתמש השני (בחלון שמאל).
RBAC04
בצד ימין (הכחול) המשתמש בעל ההרשאות ל-Role החדש ומצד שמאל (בשחור) משתמש בעל הרשאות Owner.

לסיכום, פתרון ה-RBAC הוא פתרון חשוב מאוד הנותן לנו שליטה מלאה על האפשרויות בפורטל Azure ומאפשר לנו לאבטח את השירותים שלנו ולהקצות למשתמשים רק את הפעולות שהם צריכים לבצע.
שיהיה בהצלחה Smile

Be the first to comment

Leave a Reply

כתובת האימייל שלך לא תפורסם


*