إضافة شروط تعيين دور Azure أو تحريرها باستخدام واجهة برمجة تطبيقات REST

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

المتطلبات الأساسية

يجب استخدام الإصدارات التالية:

  • 2020-03-01-preview أو أحدث
  • 2020-04-01-preview أو لاحقا إذا كنت تريد استخدام الخاصية description لتعيينات الأدوار
  • 2022-04-01 هو أول إصدار مستقر

لمزيد من المعلومات حول المتطلبات الأساسية لإضافة شروط تعيين الدور أو تحريرها، راجع المتطلبات الأساسية للشروط.

إضافة شرط

لإضافة شرط تعيين دور، استخدم تعيينات الدور - إنشاء واجهة برمجة تطبيقات REST. تعيينات الأدوار - يتضمن الإنشاء المعلمات التالية المتعلقة بالشروط.

المعلمة النوع الوصف
condition السلسلة الشرط الذي يمكن بموجبه منح المستخدم الإذن.
conditionVersion السلسلة إصدار بناء جملة الشرط. إذا condition تم تحديد بدون conditionVersion، يتم تعيين الإصدار إلى القيمة الافتراضية 2.0.

استخدم الطلب والنص التاليين:

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}",
        "condition": "{condition}",
        "conditionVersion": "2.0",
        "description": "{description}"
    }
}

يوضح المثال التالي كيفية تعيين دور Storage Blob Data Reader بشرط. يتحقق الشرط ما إذا كان اسم الحاوية يساوي "blobs-example-container".

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))",
        "conditionVersion": "2.0",
        "description": "Read access if container name equals blobs-example-container"
    }
}

يوضح ما يلي مثالا على الإخراج:

{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "principalType": "User",
        "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))",
        "conditionVersion": "2.0",
        "createdOn": "2022-07-20T06:20:44.0205560Z",
        "updatedOn": "2022-07-20T06:20:44.2955371Z",
        "createdBy": null,
        "updatedBy": "{updatedById}",
        "delegatedManagedIdentityResourceId": null,
        "description": "Read access if container name equals blobs-example-container"
    },
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "type": "Microsoft.Authorization/roleAssignments",
    "name": "{roleAssignmentId}"
}

تحرير شرط

لتحرير شرط تعيين دور موجود، استخدم نفس تعيينات الدور - إنشاء واجهة برمجة تطبيقات REST كما استخدمت لإضافة شرط تعيين الدور. يظهر التالي مثالا على JSON حيث condition يتم تحديثه.description يمكن تحرير الخصائص conditionconditionVersionو و description فقط. يجب تحديد الخصائص الأخرى لمطابقة تعيين الدور الموجود.

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container' OR @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container2'))",
        "conditionVersion": "2.0",
        "description": "Read access if container name equals blobs-example-container or blobs-example-container2"
    }
}

سرد شرط

لسرد شرط تعيين دور، استخدم Role Assignments Get أو List REST API. لمزيد من المعلومات، راجع سرد تعيينات دور Azure باستخدام واجهة برمجة تطبيقات REST.

حذف شرط

لحذف شرط تعيين دور، قم بتحرير شرط تعيين الدور وتعيين كل من الشرط وإصدار الشرط إما إلى سلسلة فارغة أو خالية.

بدلا من ذلك، إذا كنت تريد حذف كل من تعيين الدور والشرط، يمكنك استخدام Role Assignments - Delete API. لمزيد من المعلومات، راجع إزالة تعيينات دور Azure.

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