إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
التحكم في الوصول المستند إلى الدور Azure (Azure RBAC) هو نظام التخويل الذي تستخدمه لإدارة الوصول إلى موارد Azure. لمنح حق الوصول، يمكنك تعيين أدوار للمستخدمين أو المجموعات أو كيانات الخدمة أو الهويات المدارة في نطاق معين. توضح هذه المقالة كيفية تعيين الأدوار باستخدام Azure PowerShell.
ملاحظة
نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.
المتطلبات الأساسية
لتعيين الأدوار، يجب أن يكون لديك:
- أذونات
Microsoft.Authorization/roleAssignments/write، مثل مسؤول التحكم في الوصول المستند إلى الدور - PowerShell في Azure Cloud Shell أو Azure PowerShell
- يجب أن يكون للحساب الذي تستخدمه لتشغيل أمر PowerShell إذن
Directory.Read.AllMicrosoft Graph.
خطوات تعيين دور Azure
لتعيين دور يتكون من ثلاثة عناصر: أساس الأمان، وتعريف الدور، والنطاق.
الخطوة 1: تحديد من يحتاج إلى الوصول
يمكنك تعيين دور لمستخدم أو مجموعة أو كيان خدمة أو هوية مدارة. لتعيين دور، قد تحتاج إلى تحديد المعرف الفريد للكائن. يحتوي المعرف على التنسيق: 11111111-1111-1111-1111-111111111111. يمكنك الحصول على المعرف باستخدام مدخل Microsoft Azure أو Azure PowerShell.
User
بالنسبة لمستخدم Microsoft Entra، احصل على اسم المستخدم الأساسي، مثل patlong@contoso.com أو معرف عنصر المستخدم. للحصول على معرف العنصر، يمكنك استخدام Get-AzADUser.
Get-AzADUser -StartsWith <userName>
(Get-AzADUser -DisplayName <userName>).id
مجموعة
بالنسبة لمجموعة Microsoft Entra، تحتاج إلى معرف كائن المجموعة. للحصول على معرف العنصر، يمكنك استخدام Get-AzADGroup.
Get-AzADGroup -SearchString <groupName>
(Get-AzADGroup -DisplayName <groupName>).id
كيان الخدمة
بالنسبة إلى كيان خدمة Microsoft Entra (الهوية المستخدمة من قبل أحد التطبيقات)، تحتاج إلى معرف كائن كيان الخدمة. للحصول على معرف العنصر، يمكنك استخدام Get-AzADServicePrincipal. بالنسبة إلى كيان الخدمة، استخدم معرف الكائن لا معرف التطبيق.
Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id
الهوية المدارة
بالنسبة إلى الهوية المدارة المعينة من قبل النظام أو المعينة من قبل المستخدم، تحتاج إلى معرف الكائن. للحصول على معرف العنصر، يمكنك استخدام Get-AzADServicePrincipal.
Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id
الخطوة 2: حدد الدور المناسب
يتم تجميع الأذونات معا في أدوار. يمكنك التحديد من قائمة بالعديد من الأدوار المضمنة في Azure أو يمكنك استخدام أدوارك المخصصة. من أفضل الممارسات منح حق الوصول بأقل امتياز مطلوب، لذا تجنب تعيين دور أوسع.
لسرد الأدوار والحصول على معرف الدور الفريد، يمكنك استخدام Get-AzRoleDefinition.
Get-AzRoleDefinition | Format-Table -Property Name, IsCustom, Id
فيما يلي كيفية سرد تفاصيل دور معين.
Get-AzRoleDefinition -Name <roleName>
لمزيد من المعلومات، راجع سرد تعريفات دور Azure.
الخطوة 3: تحديد النطاق المطلوب
يوفر Azure أربعة مستويات من النطاق: المورد ومجموعة موارد والاشتراك ومجموعة إدارة . من أفضل الممارسات منح الوصول بأقل امتياز مطلوب، لذا تجنب تعيين دور في نطاق أوسع. لمزيد من المعلومات حول النطاق، انظر فهم النطاق.
نطاق الموارد
بالنسبة لنطاق المورد، تحتاج إلى معرف المورد للمورد. يمكنك العثور على معرف المورد من خلال النظر في خصائص المورد في مدخل Microsoft Azure. يحتوي معرف المورد على التنسيق التالي.
/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>
نطاق مجموعة موارد
بالنسبة لنطاق مجموعة الموارد، تحتاج إلى اسم مجموعة الموارد. يمكنك العثور على الاسم في صفحة مجموعات الموارد في مدخل Microsoft Azure أو يمكنك استخدام Get-AzResourceGroup.
Get-AzResourceGroup
نطاق اشتراك
بالنسبة لنطاق الاشتراك، تحتاج إلى معرف الاشتراك. يمكنك العثور على المعرف في صفحة الاشتراكات في مدخل Microsoft Azure أو يمكنك استخدام Get-AzSubscription.
Get-AzSubscription
نطاق مجموعة إدارة
بالنسبة لنطاق مجموعة الإدارة، تحتاج إلى اسم مجموعة الإدارة. يمكنك العثور على الاسم في صفحة مجموعات إدارة في مدخل Microsoft Azure أو يمكنك استخدام Get-AzManagementGroup.
Get-AzManagementGroup
الخطوة 4: تعيين دور
لتعيين دور، استخدم الأمر New-AzRoleAssignment. اعتمادا على النطاق، يحتوي الأمر عادة على أحد التنسيقات التالية.
نطاق الموارد
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionId <roleId> `
-ResourceName <resourceName> `
-ResourceType <resourceType> `
-ResourceGroupName <resourceGroupName>
نطاق مجموعة موارد
New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>
نطاق اشتراك
New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>
نطاق مجموعة إدارة
New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>
تعيين أمثلة الدور
تعيين دور لكافة حاويات الكائن الثنائي كبير الحجم في نطاق مورد حساب التخزين
تعيين دور Storage Blob Data Contributor إلى كيان خدمة بمعرف الكائن 5555555-5555-5555-5555-55555555 والتطبيق الأول 6666666-6666-6666-6666-66666666 في نطاق مورد لحساب تخزين يسمى storage12345.
PS C:\> New-AzRoleAssignment -ApplicationId 66666666-6666-6666-6666-666666666666 `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/providers/Microsoft.Authorization/roleAssignments/cccccccc-cccc-cccc-cccc-cccccccccccc
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345
DisplayName : example-identity
SignInName :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId : 55555555-5555-5555-5555-555555555555
ObjectType : ServicePrincipal
CanDelegate : False
تعيين دور لنطاق مورد حاوية كائن ثنائي كبير الحجم محدد
تعيين دور Storage Blob Data Contributor إلى كيان خدمة بمعرف العنصر 5555555-5555-5555-5555-55555555 ومعرف التطبيق 6666666-6666-6666-6666-66666666 في نطاق مورد لحاوية كائن ثنائي كبير الحجم تسمى blob-container-01.
PS C:\> New-AzRoleAssignment -ApplicationId 66666666-6666-6666-6666-666666666666 `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01"
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01/providers/Microsoft.Authorization/roleAssignm
ents/dddddddd-dddd-dddd-dddd-dddddddddddd
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01
DisplayName : example-identity
SignInName :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId : 55555555-5555-5555-5555-555555555555
ObjectType : ServicePrincipal
CanDelegate : False
تعيين دور لمجموعة في نطاق مورد شبكة ظاهرية محدد
تعيين دور مساهم الجهاز الظاهري لمجموعة Pharma Sales Admins مع معرف aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa في نطاق مورد لشبكة ظاهرية تسمى pharma-sales-project-network.
PS C:\> New-AzRoleAssignment -ObjectId aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceName pharma-sales-project-network `
-ResourceType Microsoft.Network/virtualNetworks `
-ResourceGroupName MyVirtualNetworkResourceGroup
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network/providers/Microsoft.Authorizat
ion/roleAssignments/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network
DisplayName : Pharma Sales Admins
SignInName :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
ObjectType : Group
CanDelegate : False
تعيين دور لمستخدم في نطاق مجموعة موارد
تعيين دور Virtual Machine Contributor للمستخدم patlong@contoso.com في نطاق مجموعة موارد مبيعات.
PS C:\> New-AzRoleAssignment -SignInName patlong@contoso.com `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceGroupName pharma-sales
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/pr
oviders/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName : Pat Long
SignInName : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False
بدلا من ذلك، يمكنك تحديد مجموعة الموارد المؤهلة بالكامل باستخدام المعلمة -Scope:
PS C:\> New-AzRoleAssignment -SignInName patlong@contoso.com `
-RoleDefinitionName "Virtual Machine Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/providers/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName : Pat Long
SignInName : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False
تعيين دور لمستخدم باستخدام معرف الدور الفريد في نطاق مجموعة الموارد
هناك بضع مرات قد يتغير فيها اسم الدور، على سبيل المثال:
- أنت تستخدم دورك المخصص وتقرر تغيير الاسم.
- أنت تستخدم دور معاينة يحتوي على (معاينة) في الاسم. عند إصدار الدور، تتم إعادة تسمية الدور.
حتى إذا تمت إعادة تسمية دور، لا يتغير معرف الدور. إذا كنت تستخدم برامج نصية أو أتمتة لإنشاء تعيينات الأدوار الخاصة بك، فمن أفضل الممارسات استخدام معرف الدور الفريد بدلا من اسم الدور. لذلك، إذا تمت إعادة تسمية دور، فمن المرجح أن تعمل البرامج النصية الخاصة بك.
يعين المثال التالي دور Virtual Machine Contributor للمستخدم patlong@contoso.com في نطاق مجموعة موارد pharma-sales.
PS C:\> New-AzRoleAssignment -ObjectId 44444444-4444-4444-4444-444444444444 `
-RoleDefinitionId 9980e02c-c2be-4d73-94e8-173b1dc7cf3c `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/providers/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName : Pat Long
SignInName : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False
تعيين دور لتطبيق في نطاق مجموعة موارد
تعيين دور Virtual Machine Contributor لتطبيق ذي معرف كائن كيان الخدمة 77777777-7777-7777-7777-777777777 في نطاق مجموعة موارد pharma-sales.
PS C:\> New-AzRoleAssignment -ObjectId 77777777-7777-7777-7777-777777777777 `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceGroupName pharma-sales
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName : MyApp1
SignInName :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 77777777-7777-7777-7777-777777777777
ObjectType : ServicePrincipal
CanDelegate : False
تعيين دور لمستخدم في نطاق اشتراك
تعيين دور قارئ للمستخدم annm@example.com في نطاق اشتراك.
PS C:\> New-AzRoleAssignment -SignInName annm@example.com `
-RoleDefinitionName "Reader" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000"
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope : /subscriptions/00000000-0000-0000-0000-000000000000
DisplayName : Ann M
SignInName : annm@example.com
RoleDefinitionName : Reader
RoleDefinitionId : acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId : 77777777-7777-7777-7777-777777777777
ObjectType : ServicePrincipal
CanDelegate : False
تعيين دور لمستخدم في نطاق مجموعة إدارة
تعيين دور قارئ الفوترة للمستخدم alain@example.com في نطاق مجموعة إدارة.
PS C:\> New-AzRoleAssignment -SignInName alain@example.com `
-RoleDefinitionName "Billing Reader" `
-Scope "/providers/Microsoft.Management/managementGroups/marketing-group"
RoleAssignmentId : /providers/Microsoft.Management/managementGroups/marketing-group/providers/Microsoft.Authorization/roleAssignments/22222222-2222-2222-2222-222222222222
Scope : /providers/Microsoft.Management/managementGroups/marketing-group
DisplayName : Alain Charon
SignInName : alain@example.com
RoleDefinitionName : Billing Reader
RoleDefinitionId : fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False