שלום לכולם,
במאמר הקודם שלי דיברתי איתכם על פתרון Azure RBAC המאפשר לנו לתת הרשאות באופן פרטני לאובייקטים מסוימים ובכך להגביל את הגישה של המשתמשים בפורטל Azure.
בנוסף, ראינו את “התפקידים” שקיימים לנו בפורטל כברירת מחדל כמו Owner, Virtual Machine Contributor וכו’ אבל לא תמיד תפקידים האלה מתאימים לצרכים שלנו בארגון, לעיתים נרצה להגביל באופן יותר מדויק כך שיאפשר למשתמשים לעבוד באופן שוטף בהתאם לדרישות הארגון ומנגד לא יתאפשר להם לבצע פעולות לא מורשות.
אפשרות ליצירת “תפקיד” מותאם אישית (Custom Role) ניתן לבצע בעזרת Azure PowerShell, Azure CLI ו-Rest API.
במאמר היום אני אראה לכם איך מייצרים Custom Role שמאפשר קריאת ערכי המשאב, אתחול, הדלקה וכיבוי ל-Virtual Machines ב-ARM בעזרת Azure PowerShell.
השלבים שאנו מבצעים עבור הקמת Custom Role חדש:
- העתקת Role מ-Role קיים.
- הגדרת ה-Role החדש עם הפעולות המורשות.
- שיוך משתמש וביצוע בדיקות.
אז בואו נתחיל להגדיר את ה-Role החדש.
שלב א’ – העתקת Role מ-Role קיים
כדי לייצר Role חדש ב-Azure PowerShell אנחנו צריכים להתבסס על Role קיים, נוכל להשתמש בפקודה הבאה כדי לעשות “העתקה” ל-Role קיים.
#Define Custom Role, based on Built-in Reader Role $Role = Get-AzureRmRoleDefinition "Reader";
#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;
#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
Leave a Reply