تعيين أدوار Azure باستخدام Azure PowerShell
Azure role based access control (Azure RBAC) هو نظام التخويل الذي تستخدمه لإدارة الوصول إلى موارد Azure. لمنح حق الوصول، يمكنك تعيين أدوار للمستخدمين أو المجموعات أو كيانات الخدمة أو الهويات المدارة في نطاق معين. توضح هذه المقالة كيفية تعيين الأدوار باستخدام Azure PowerShell.
ملاحظة
تستخدم هذه المقالة الوحدة النمطية Azure Az PowerShell، وهي الوحدة النمطية PowerShell الموصى بها للتفاعل مع Azure. لبدء استخدام الوحدة النمطية Az PowerShell، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.
المتطلبات الأساسية
لتعيين الأدوار، يجب أن يكون لديك:
Microsoft.Authorization/roleAssignments/writeالأذونات، مثل مسؤول وصول المستخدم أو المالك- PowerShell in Azure Cloud Shell or Azure PowerShell
- يجب أن يحتوي الحساب الذي تستخدمه لتشغيل الأمر PowerShell على Graph Azure Active Directory وأذونات Microsoft Graph
Directory.Read.AllDirectory.Read.All.
خطوات تعيين دور Azure
يتكون تعيين دور من ثلاثة عناصر: مبدأ الأمان وتعريف الدور والنطاق.
الخطوة 1: تحديد من يحتاج إلى الوصول
يمكنك تعيين دور لمستخدم أو مجموعة أو أصل خدمة أو هوية مدارة. لتعيين دور، قد تحتاج إلى تحديد المعرف الفريد للكائن. يحتوي المعرف على التنسيق: 11111111-1111-1111-1111-111111111111. يمكنك الحصول على المعرف باستخدام مدخل Azure أو Azure PowerShell.
المستخدم
بالنسبة لمستخدم Azure AD، احصل على الاسم الأساسي للمستخدم، مثل patlong@contoso.com معرف كائن المستخدم. للحصول على معرف الكائن، يمكنك استخدام Get-AzADUser.
Get-AzADUser -StartsWith <userName>
(Get-AzADUser -DisplayName <userName>).id
مجموعة
بالنسبة لمجموعة Azure AD، تحتاج إلى معرف كائن المجموعة. للحصول على معرف الكائن، يمكنك استخدام Get-AzADGroup.
Get-AzADGroup -SearchString <groupName>
(Get-AzADGroup -DisplayName <groupName>).id
كيان الخدمة
بالنسبة إلى أصل خدمة Azure AD (الهوية المستخدمة بواسطة تطبيق)، تحتاج إلى معرف كائن أساسي للخدمة. للحصول على معرف الكائن، يمكنك استخدام 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 أربعة مستويات من النطاق: الموارد ومجموعة الموارد والاشتراك ومجموعة الإدارة. من أفضل الممارسات منح حق الوصول بأقل قدر من الامتياز المطلوب، لذا تجنب تعيين دور على نطاق أوسع. لمزيد من المعلومات حول النطاق، انظر فهم النطاق.
نطاق المورد
بالنسبة لنطاق المورد، تحتاج إلى معرف المورد للمورد. يمكنك العثور على معرف المورد من خلال الاطلاع على خصائص المورد في مدخل Azure. يحتوي معرف المورد على التنسيق التالي.
/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>
نطاق مجموعة الموارد
بالنسبة لنطاق مجموعة الموارد، تحتاج إلى اسم مجموعة الموارد. يمكنك العثور على الاسم في صفحة مجموعات الموارد في مدخل Azure أو يمكنك استخدام Get-AzResourceGroup.
Get-AzResourceGroup
نطاق الاشتراك
بالنسبة لنطاق الاشتراك، تحتاج إلى معرف الاشتراك. يمكنك العثور على المعرف في صفحة الاشتراكات في مدخل Azure أو يمكنك استخدام Get-AzSubscription.
Get-AzSubscription
نطاق مجموعة الإدارة
بالنسبة لنطاق مجموعة الإدارة، تحتاج إلى اسم مجموعة الإدارة. يمكنك العثور على الاسم في صفحة مجموعات الإدارة في مدخل Azure أو يمكنك استخدام Get-AzManagementGroup.
Get-AzManagementGroup
الخطوة 4: تعيين دور
لتعيين دور، استخدم الأمر 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>
تعيين أمثلة للأدوار
تعيين دور لجميع حاويات blob في نطاق مورد حساب التخزين
يعين دور "مساهم بيانات نقطة التخزين" إلى مدير خدمة مع معرف كائن 55555555-5555-5555-5555-55555555555555555555 في نطاق مورد لحساب تخزين يسمى storage12345.
PS C:\> New-AzRoleAssignment -ObjectId 55555555-5555-5555-5555-555555555555 `
-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
تعيين دور لنطاق مورد حاوية نقطة معين
يعين دور "مساهم بيانات نقطة التخزين" إلى مدير خدمة مع معرف كائن 55555555-5555-5555-5555-555555555555555555555 في نطاق مورد لحاوية blob تسمى blob-container-01.
PS C:\> New-AzRoleAssignment -ObjectId 55555555-5555-5555-5555-555555555555 `
-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
تعيين دور لمجموعة في نطاق مورد شبكة ظاهرية محدد
يعين دور المساهم في الجهاز الظاهري لمجموعة مسؤولي مبيعات الأدوية باستخدام معرف aa-aaaa-aaaa-aaaa-aaaaaaa في نطاق موارد لشبكة افتراضية تسمى شبكة الأدوية-المبيعات-المشروع-الشبكة.
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
تعيين دور لمستخدم في نطاق مجموعة موارد
يعين دور "مساهم الجهاز الظاهري" للمستخدم 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
تعيين دور لمستخدم باستخدام معرف الدور الفريد في نطاق مجموعة موارد
هناك عدة مرات قد يتغير فيها اسم الدور، على سبيل المثال:
- أنت تستخدم دورك المخصص وتقرر تغيير الاسم.
- أنت تستخدم دور معاينة يحتوي على (معاينة) في الاسم. عند تحرير الدور، تتم إعادة تسمية الدور.
حتى إذا تمت إعادة تسمية دور، فلن يتغير معرف الدور. إذا كنت تستخدم البرامج النصية أو التشغيل التلقائي لإنشاء تعيينات الأدوار، فمن أفضل الممارسات استخدام معرف الدور الفريد بدلا من اسم الدور. لذلك، إذا تمت إعادة تسمية دور، فمن المرجح أن تعمل البرامج النصية الخاصة بك.
يعين المثال التالي دور "مساهم الجهاز الظاهري" للمستخدم patlong@contoso.com في نطاق مجموعة موارد مبيعات الأدوية .
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
تعيين دور لتطبيق في نطاق مجموعة موارد
يعين دور "مساهم الجهاز الظاهري" إلى تطبيق مع معرف كائن الخدمة الرئيسي 77777777-7777-7777-77777-7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
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