تعيين أدوار Azure باستخدام واجهة برمجة تطبيقات REST
التحكم في الوصول المستند إلى الدور Azure (Azure RBAC) هو نظام التخويل الذي تستخدمه لإدارة الوصول إلى موارد Azure. لمنح حق الوصول، يمكنك تعيين أدوار للمستخدمين أو المجموعات أو كيانات الخدمة أو الهويات المدارة في نطاق معين. توضح هذه المقالة كيفية تعيين الأدوار باستخدام واجهة برمجة تطبيقات REST.
المتطلبات الأساسية
لتعيين أدوار Azure، يجب أن يكون لديك:
Microsoft.Authorization/roleAssignments/write
أذونات، مثل التحكم في الوصول استنادا إلى الدور مسؤول istrator أو مسؤول istrator وصول المستخدم
يجب استخدام الإصدارات التالية:
2015-07-01
أو لاحقا لتعيين دور Azure2018-09-01-preview
أو لاحقا لتعيين دور Azure إلى كيان خدمة جديد
لمزيد من المعلومات، راجع إصدارات واجهة برمجة التطبيقات من واجهات برمجة تطبيقات AZURE RBAC REST.
تعيين دور Azure
لتعيين دور، استخدم Role Assignments - Create REST API وحدد أساس الأمان وتعريف الدور والنطاق. لاستدعاء واجهة برمجة التطبيقات هذه، يجب أن يكون لديك حق الوصول إلى Microsoft.Authorization/roleAssignments/write
الإجراء، مثل التحكم في الوصول المستند إلى الدور مسؤول istrator.
استخدم Role Definitions - List REST API أو راجع الأدوار المضمنة للحصول على معرف تعريف الدور الذي تريد تعيينه.
استخدم أداة GUID لإنشاء معرف فريد سيتم استخدامه لمعرف تعيين الدور. يحتوي المعرف على التنسيق:
00000000-0000-0000-0000-000000000000
ابدأ بالطلب والنص التاليين:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{ "properties": { "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "principalId": "{principalId}" } }
ضمن URI، استبدل {scope} بالنطاق الخاص بتعيين الدور.
النطاق نوع providers/Microsoft.Management/managementGroups/{groupId1}
مجموعة الإدارة subscriptions/{subscriptionId1}
الوصف subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1
مجموعة الموارد subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1
Resource في المثال السابق، microsoft.web هو موفر موارد يشير إلى مثيل App Service. وبالمثل، يمكنك استخدام أي موفري موارد آخرين وتحديد النطاق. لمزيد من المعلومات، راجع موفري موارد Azure وأنواعها وعمليات موفر موارد Azure المدعومة.
استبدل {roleAssignmentId} بمعرف GUID لتعيين الدور.
ضمن نص الطلب، استبدل {scope} بنفس النطاق كما هو الحال في URI.
استبدل {roleDefinitionId} بمعرف تعريف الدور.
استبدل {principalId} بمعرف الكائن للمستخدم أو المجموعة أو كيان الخدمة الذي سيتم تعيين الدور له.
يعين الطلب والنص التاليان دور قارئ النسخ الاحتياطي لمستخدم في نطاق الاشتراك:
PUT https://management.azure.com/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}?api-version=2022-04-01
{
"properties": {
"roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
"principalId": "{objectId1}"
}
}
يوضح ما يلي مثالا على الإخراج:
{
"properties": {
"roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
"principalId": "{objectId1}",
"principalType": "User",
"scope": "/subscriptions/{subscriptionId1}",
"condition": null,
"conditionVersion": null,
"createdOn": "2022-05-06T23:55:23.7679147Z",
"updatedOn": "2022-05-06T23:55:23.7679147Z",
"createdBy": null,
"updatedBy": "{updatedByObjectId1}",
"delegatedManagedIdentityResourceId": null,
"description": null
},
"id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}",
"type": "Microsoft.Authorization/roleAssignments",
"name": "{roleAssignmentId1}"
}
كيان خدمة جديد
إذا قمت بإنشاء كيان خدمة جديد وحاولت على الفور تعيين دور إلى كيان الخدمة هذا، فقد يفشل تعيين الدور هذا في بعض الحالات. على سبيل المثال، إذا قمت بإنشاء هوية مدارة جديدة ثم حاولت تعيين دور إلى كيان الخدمة هذا، فقد يفشل تعيين الدور. من المحتمل أن يكون سبب هذا الفشل هو تأخير النسخ المتماثل. يتم إنشاء كيان الخدمة في منطقة واحدة؛ ومع ذلك، قد يحدث تعيين الدور في منطقة مختلفة لم تقم بنسخ كيان الخدمة نسخا متماثلا حتى الآن.
لمعالجة هذا السيناريو، استخدم تعيينات الدور - إنشاء واجهة برمجة تطبيقات REST وتعيين الخاصية principalType
إلى ServicePrincipal
. يجب عليك أيضا تعيين apiVersion
إلى 2018-09-01-preview
أو أحدث. 2022-04-01
هو الإصدار المستقر الأول.
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
"properties": {
"roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
"principalId": "{principalId}",
"principalType": "ServicePrincipal"
}
}