تعيين أدوار Azure باستخدام Azure PowerShell
التحكم في الوصول المستند إلى الدور Azure (Azure RBAC) هو نظام التخويل الذي تستخدمه لإدارة الوصول إلى موارد Azure. لمنح حق الوصول، يمكنك تعيين أدوار للمستخدمين أو المجموعات أو كيانات الخدمة أو الهويات المدارة في نطاق معين. توضح هذه المقالة كيفية تعيين الأدوار باستخدام Azure PowerShell.
إشعار
نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.
المتطلبات الأساسية
لتعيين الأدوار، يجب أن يكون لديك:
Microsoft.Authorization/roleAssignments/write
أذونات، مثل التحكم في الوصول استنادا إلى الدور مسؤول istrator- PowerShell في Azure Cloud Shell أو Azure PowerShell
- يجب أن يكون للحساب الذي تستخدمه لتشغيل أمر PowerShell إذن Microsoft Graph
Directory.Read.All
.
خطوات تعيين دور 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>
نطاق مجموعة الموارد
بالنسبة لنطاق مجموعة الموارد، تحتاج إلى اسم مجموعة الموارد. يمكنك العثور على الاسم في صفحة Resource groups في مدخل 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 إلى كيان خدمة بمعرف الكائن 55555555-5555-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 إلى كيان خدمة بمعرف الكائن 55555555-5555-5555-5555-5555-55555555 ومعرف التطبيق 66666666-6666-6666-6666-666666666 في نطاق مورد لحاوية كائن ثنائي كبير الحجم تسمى 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 مسؤول s مع المعرف aaaaaa-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
تعيين دور لمستخدم في نطاق مجموعة موارد
تعيين دور 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
تعيين دور لتطبيق في نطاق مجموعة موارد
تعيين دور مساهم الجهاز الظاهري إلى تطبيق بمعرف كائن كيان الخدمة 777777777-7777-7777-7777-777777777 في نطاق مجموعة موارد مبيعات دارما.
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