منح أذونات المستخدم لنهج مختبر معين

نظرة عامة

توضح هذه المقالة كيفية استخدام PowerShell لمنح المستخدمين أذونات لنهج مختبر معين. وبهذه الطريقة، يمكن تطبيق الأذونات بناءً على احتياجات كل مستخدم. على سبيل المثال، قد تحتاج إلى منح مستخدم معين القدرة على تغيير إعدادات نهج الجهاز الظاهري، ولكن ليس نهج التكلفة.

النهج كموارد

كما تمت مناقشته في مقالة التحكم في الوصول استناداً إلى الدور في Azure (Azure RBAC)، يتيح التحكم في الوصول استناداً إلى الدور في Azure إدارة الوصول الدقيقة للموارد لـ Azure. باستخدام التحكم في الوصول استناداً إلى الدور في Azure، يمكنك فصل الواجبات داخل فريق DevOps ومنح مقدار الوصول إلى المستخدمين الذين يحتاجونهم لأداء وظائفهم فقط.

في مختبرات DevTest، النهج هو نوع مورد يمكن إجراء التحكم في الوصول استناداً إلى الدور في Azure Microsoft.DevTestLab/labs/policySets/policies/. كل نهج مختبر هو مورد في نوع مورد النهج، ويمكن تعيينه كنطاق لدور Azure.

على سبيل المثال، لمنح المستخدمين إذن القراءة/الكتابة إلى نهج أحجام الأجهزة الظاهرية المسموح بها، يمكنك إنشاء دور مخصص يعمل مع Microsoft.DevTestLab/labs/policySets/policies/ الإجراء، ثم تعيين المستخدمين المناسبين لهذا الدور المخصص في نطاق Microsoft.DevTestLab/labs/policySets/policies/AllowedVmSizesInLab.

لمعرفة المزيد حول الأدوار المخصصة، راجع الأدوار المخصصة في التحكم في الوصول استناداً إلى الدور في Azure.

إنشاء دور مخصص للمختبر باستخدام PowerShell

للبدء، ستحتاج إلى تثبيت Azure PowerShell.

بمجرد إعداد أوامر Azure PowerShell cmdlets، يمكنك تنفيذ المهام التالية:

  • سرد جميع العمليات/الإجراءات لموفر الموارد
  • سرد الإجراءات في دور معين:
  • إنشاء دور مخصص

يوضح البرنامج النصي PowerShell التالي أمثلة حول كيفية تنفيذ هذه المهام:

# List all the operations/actions for a resource provider.
Get-AzProviderOperation -OperationSearchString "Microsoft.DevTestLab/*"

# List actions in a particular role.
(Get-AzRoleDefinition "DevTest Labs User").Actions

# Create custom role.
$policyRoleDef = (Get-AzRoleDefinition "DevTest Labs User")
$policyRoleDef.Id = $null
$policyRoleDef.Name = "Policy Contributor"
$policyRoleDef.IsCustom = $true
$policyRoleDef.AssignableScopes.Clear()
$policyRoleDef.AssignableScopes.Add("/subscriptions/<SubscriptionID> ")
$policyRoleDef.Actions.Add("Microsoft.DevTestLab/labs/policySets/policies/*")
$policyRoleDef = (New-AzRoleDefinition -Role $policyRoleDef)

تعيين أذونات لمستخدم لنهج معين باستخدام أدوار مخصصة

بمجرد تحديد أدوارك المخصصة، يمكنك تعيينها للمستخدمين. لتعيين دور مخصص لمستخدم، يجب أولاً الحصول على ObjectId الذي يمثل هذا المستخدم. للقيام بذلك، استخدم Get-AzADUser cmdlet.

في المثال التالي، ObjectId للمستخدم SomeUser هو 05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3.

PS C:\>Get-AzADUser -SearchString "SomeUser"

DisplayName                    Type                           ObjectId
-----------                    ----                           --------
someuser@hotmail.com                                          05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3

بمجرد أن يكون لديك ObjectId للمستخدم واسم دور مخصص، يمكنك تعيين هذا الدور للمستخدم باستخدام الأمرcmdlet New-AzRoleAssignment :

PS C:\>New-AzRoleAssignment -ObjectId 05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3 -RoleDefinitionName "Policy Contributor" -Scope /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroupName>/providers/Microsoft.DevTestLab/labs/<LabName>/policySets/default/policies/AllowedVmSizesInLab

في المثال السابق، يتم استخدام نهج AllowedVmSizesInLab. يمكنك استخدام أي من النهج التالية:

  • MaxVmsAllowedPerUser
  • MaxVmsAllowedPerLab
  • AllowedVmSizesInLab
  • LabVmsShutdown

إنشاء دور للسماح للمستخدمين بالقيام بمهمة معينة

هذا البرنامج النصي المثال الذي ينشئ الدور DevTest Labs Advanced User، الذي لديه إذن لبدء وإيقاف جميع الأجهزة الظاهرية في المختبر:

    $policyRoleDef = Get-AzRoleDefinition "DevTest Labs User"
    $policyRoleDef.Actions.Remove('Microsoft.DevTestLab/Environments/*')
    $policyRoleDef.Id = $null
    $policyRoleDef.Name = "DevTest Labs Advanced User"
    $policyRoleDef.IsCustom = $true
    $policyRoleDef.AssignableScopes.Clear()
    $policyRoleDef.AssignableScopes.Add("/subscriptions/<subscription Id>")
    $policyRoleDef.Actions.Add("Microsoft.DevTestLab/labs/virtualMachines/Start/action")
    $policyRoleDef.Actions.Add("Microsoft.DevTestLab/labs/virtualMachines/Stop/action")
    $policyRoleDef = New-AzRoleDefinition -Role $policyRoleDef 

الشروع في العمل باستخدام Azure DevTest Labs

هل أنت جديد في Azure؟ حساب Azure مجاني.

هل تستخدم Azure بالفعل؟ أنشئ مختبرك الأول وابدأ باستخدام Azure DevTest Labs في دقائق.

الخطوات التالية

بمجرد منح أذونات المستخدم لنهج مختبر معين، فيما يلي بعض الخطوات التالية التي تجب مراعاتها: