تنسيق شرط تعيين دور Azure وبناء الجملة (معاينة)

هام

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

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

تنسيق الشرط

لفهم شروط تعيين الدور بشكل أفضل ، من المفيد إلقاء نظرة على التنسيق.

حالة بسيطة

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

يوضح ما يلي تنسيق شرط بسيط.

Format of a simple condition with a single action and a single expression.

(
    (
        !(ActionMatches{'<action>'})
    )
    OR
    (
        <attribute> <operator> <value>
    )
)

يحتوي الشرط التالي على إجراء "قراءة نقطة". يتحقق التعبير مما إذا كان اسم الحاوية هو النقط-مثال-الحاوية.

(
    (
        !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
    )
    OR 
    (
        @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name]
        StringEquals 'blobs-example-container'
    )
)

Diagram showing read access to blobs with particular container name.

كيف يتم تقييم الحالة

إذا حاول مستخدم تنفيذ إجراء في تعيين الدور غير <action>ذلك ، !(ActionMatches) يتم تقييمه إلى true ويتم تقييم الحالة العامة إلى true للسماح بتنفيذ الإجراء.

إذا حاول مستخدم الأداء <action> في تعيين الدور، يتم تقييمه إلى false، !(ActionMatches) بحيث يتم تقييم التعبير. إذا تم تقييم التعبير إلى true، تقييم الشرط العام إلى true للسماح بتنفيذه <action> . خلاف ذلك ، <action> لا يسمح بتنفيذها.

تعرض التعليمة البرمجية الزائفة التالية طريقة أخرى يمكنك من خلالها قراءة هذا الشرط.

if a user tries to perform an action in the role assignment that does not match <action>
{
    Allow action to be performed
}
else
{
    if <attribute> <operator> <value> is true
    {
        Allow <action> to be performed
    }
    else
    {
        Do not allow <action> to be performed
    }
}

العمليات الفرعية

بعض الإجراءات لها عمليات فرعية. على سبيل المثال، يحتوي إجراء البيانات "قراءة نقطة" على العملية الفرعية "قراءة المحتوى من نقطة بشروط العلامة". الشروط مع العمليات الفرعية لها التنسيق التالي.

Format for an action with a suboperation.

(
    (
        !(ActionMatches{'<action>'}
        AND
        SubOperationMatches{'<subOperation>'})

    )
    OR
    (
        <attribute> <operator> <value>
    )
)

إجراءات متعددة

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

Format for multiple actions to allow if condition is true.

(
    (
        !(ActionMatches{'<action>'})
        AND
        !(ActionMatches{'<action>'})
    )
    OR
    (
        <attribute> <operator> <value>
    )
)

تعبيرات متعددة

يمكن أن يتضمن الشرط تعبيرات متعددة. اعتمادا على المشغل، يمكن التحقق من السمات مقابل قيم متعددة.

Format for multiple expressions using Boolean operators and multiple values.

(
    (
        !(ActionMatches{'<action>'})
    )
    OR
    (
        <attribute> <operator> <value>
        AND | OR
        <attribute> <operator> {<value>, <value>, <value>}
        AND | OR
        <attribute> <operator> <value>
    )
)

شروط متعددة

يمكنك أيضا دمج الشروط لاستهداف إجراءات متعددة.

Format for multiple conditions using Boolean operator.

(
    (
        !(ActionMatches{'<action>'})
    )
    OR
    (
        <attribute> <operator> <value>
        AND | OR
        <attribute> <operator> {<value>, <value>, <value>}
        AND | OR
        <attribute> <operator> <value>
    )
)
AND
(
    (
        !(ActionMatches{'<action>'})
    )
    OR
    (
        <attribute> <operator> <value>
        AND | OR
        <attribute> <operator> <value>
    )
)

بناء جملة الشرط

يوضح ما يلي بناء جملة شرط تعيين دور.

(
    (
        !(ActionMatches{'<action>'} AND SubOperationMatches{'<subOperation>'})
        AND
        !(ActionMatches{'<action>'} AND SubOperationMatches{'<subOperation>'})
        AND
        ...
    )
    OR
    (
        <attribute> <operator> {<value, <value>, ...}
        AND | OR
        <attribute> <operator> {<value>, <value>, ...}
        AND | OR
        ...
    )
)
AND
(
    (
        !(ActionMatches{'<action>'} AND SubOperationMatches{'<subOperation>'})
        AND
        !(ActionMatches{'<action>'} AND SubOperationMatches{'<subOperation>'})
        AND
        ...
    )
    OR
    (
        <attribute> <operator> {<value, <value>, ...}
        AND | OR
        <attribute> <operator> {<value>, <value>, ...}
        AND | OR
        ...
    )
)
AND
...

الإجراءات

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

للحصول على قائمة بإجراءات نقطة التخزين التي يمكنك استخدامها في الشروط، راجع الإجراءات والسمات الخاصة بشروط تعيين دور Azure في تخزين Azure (معاينة).

السمات

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

مصدر السمة الوصف رمز
المورد يشير إلى أن السمة موجودة على المورد، مثل اسم حاوية. @Resource
طلب يشير إلى أن السمة جزء من طلب الإجراء، مثل تعيين علامة فهرس blob. @Request
أساسي يشير إلى أن السمة هي سمة أمان مخصصة ل Azure AD على الأصل، مثل مستخدم أو تطبيق مؤسسي (أصل الخدمة) أو هوية مدارة. @Principal

سمات الموارد والطلبات

للحصول على قائمة بسمات نقطة التخزين التي يمكنك استخدامها في الشروط، راجع:

السمات الرئيسية

لاستخدام السمات الأساسية، يجب أن يكون لديك كل ما يلي:

  • ترخيص Microsoft Azure Active Directory Premium P1 أو P2
  • أذونات Azure AD للمستخدم الذي قام بتسجيل الدخول، مثل دور مسؤول تعيين السمات
  • سمات الأمان المخصصة المعرفة في Azure AD

لمزيد من المعلومات حول سمات الأمان المخصصة، راجع:

المشغلون

يسرد الجدول التالي عوامل التشغيل المتوفرة لإنشاء الشروط.

الفئة عامل تشغيل الوصف
مقارنة منطقية AND
&&
والمشغل.
OR
||
أو المشغل.
NOT
!
لا أو عامل النفي.
مقارنة السلسلة StringEquals
StringEqualsIgnoreCase
مطابقة حساسة لحالة الأحرف (أو غير حساسة لحالة الأحرف). يجب أن تتطابق القيم تماما مع السلسلة.
StringNotEquals
StringNotEqualsIgnoreCase
نفي StringEquals عامل التشغيل (أو StringEqualsIgnoreCase)
StringStartsWith
StringStartsWithIgnoreCase
مطابقة حساسة لحالة الأحرف (أو غير حساسة لحالة الأحرف). تبدأ القيم بالسلسلة.
StringNotStartsWith
StringNotStartsWithIgnoreCase
نفي StringStartsWith عامل التشغيل (أو StringStartsWithIgnoreCase)
StringLike
StringLikeIgnoreCase
مطابقة حساسة لحالة الأحرف (أو غير حساسة لحالة الأحرف). يمكن أن تتضمن القيم حرف بدل مطابقة متعدد الأحرف () أو حرف بدل مطابقة أحادي الأحرف (*?) في أي مكان في السلسلة. إذا لزم الأمر ، يمكن الهروب من هذه الأحرف عن طريق إضافة شرطة مائلة عكسية \* و \?.
StringNotLike
StringNotLikeIgnoreCase
نفي StringLike عامل التشغيل (أو StringLikeIgnoreCase)
مقارنة رقمية NumericEquals
NumericNotEquals
NumericLessThan
NumericLessThanEquals
NumericGreaterThan
NumericGreaterThanEquals
حاليا، يتم دعم الأعداد الصحيحة فقط.
وظائف أعلى مستوى ActionMatches يتحقق مما إذا كانت قيمة Action[ID] تتطابق مع نمط الإجراء المحدد. يعادل عامل التشغيل هذا منطق مطابقة الإجراء الذي تستخدمه SDK عند مقارنة إجراء بنمط إجراء داخل إذن.
مقارنة بين المنتجات ForAnyOfAnyValues:StringEquals
ForAnyOfAnyValues:StringEqualsIgnoreCase
ForAnyOfAnyValues:StringNotEquals
ForAnyOfAnyValues:StringNotEqualsIgnoreCase
ForAnyOfAnyValues:StringLike
ForAnyOfAnyValues:StringLikeIgnoreCase
ForAnyOfAnyValues:StringNotLike
ForAnyOfAnyValues:StringNotLikeIgnoreCase
ForAnyOfAnyValues:NumericEquals
ForAnyOfAnyValues:NumericNotEquals
ForAnyOfAnyValues:NumericGreaterThan
ForAnyOfAnyValues:NumericGreaterThanEquals
ForAnyOfAnyValues:NumericLessThan
ForAnyOfAnyValues:NumericLessThanEquals
إذا كانت قيمة واحدة على الأقل على الجانب الأيسر تفي بالمقارنة بقيمة واحدة على الأقل على الجانب الأيمن، تقييم التعبير إلى true. لديه الشكل: ForAnyOfAnyValues:<BooleanFunction>. يدعم سلاسل وأرقام متعددة.
ForAllOfAnyValues:StringEquals
ForAllOfAnyValues:StringEqualsIgnoreCase
ForAllOfAnyValues:StringNotEquals
ForAllOfAnyValues:StringNotEqualsIgnoreCase
ForAllOfAnyValues:StringLike
ForAllOfAnyValues:StringLikeIgnoreCase
ForAllOfAnyValues:StringNotLike
ForAllOfAnyValues:StringNotLikeIgnoreCase
ForAllOfAnyValues:NumericEquals
ForAllOfAnyValues:NumericNotEquals
ForAllOfAnyValues:NumericGreaterThan
ForAllOfAnyValues:NumericGreaterThanEquals
ForAllOfAnyValues:NumericLessThan
ForAllOfAnyValues:NumericLessThanEquals
إذا كانت كل قيمة على الجانب الأيسر تفي بالمقارنة مع قيمة واحدة على الأقل على الجانب الأيمن ، تقييم التعبير إلى true. لديه الشكل: ForAllOfAnyValues:<BooleanFunction>. يدعم سلاسل وأرقام متعددة.
ForAnyOfAllValues:StringEquals
ForAnyOfAllValues:StringEqualsIgnoreCase
ForAnyOfAllValues:StringNotEquals
ForAnyOfAllValues:StringNotEqualsIgnoreCase
ForAnyOfAllValues:StringLike
ForAnyOfAllValues:StringLikeIgnoreCase
ForAnyOfAllValues:StringNotLike
ForAnyOfAllValues:StringNotLikeIgnoreCase
ForAnyOfAllValues:NumericEquals
ForAnyOfAllValues:NumericNotEquals
ForAnyOfAllValues:NumericGreaterThan
ForAnyOfAllValues:NumericGreaterThanEquals
ForAnyOfAllValues:NumericLessThan
ForAnyOfAllValues:NumericLessThanEquals
إذا كانت قيمة واحدة على الأقل على الجانب الأيسر تفي بالمقارنة مع كل قيمة على الجانب الأيمن، تقييم التعبير إلى true. لديه الشكل: ForAnyOfAllValues:<BooleanFunction>. يدعم سلاسل وأرقام متعددة.
ForAllOfAllValues:StringEquals
ForAllOfAllValues:StringEqualsIgnoreCase
ForAllOfAllValues:StringNotEquals
ForAllOfAllValues:StringNotEqualsIgnoreCase
ForAllOfAllValues:StringLike
ForAllOfAllValues:StringLikeIgnoreCase
ForAllOfAllValues:StringNotLike
ForAllOfAllValues:StringNotLikeIgnoreCase
ForAllOfAllValues:NumericEquals
ForAllOfAllValues:NumericNotEquals
ForAllOfAllValues:NumericGreaterThan
ForAllOfAllValues:NumericGreaterThanEquals
ForAllOfAllValues:NumericLessThan
ForAllOfAllValues:NumericLessThanEquals
إذا كانت كل قيمة على الجانب الأيسر تفي بالمقارنة مع كل قيمة على الجانب الأيمن ، تقييم التعبير إلى true. لديه الشكل: ForAllOfAllValues:<BooleanFunction>. يدعم سلاسل وأرقام متعددة.

أمثلة على المشغل

مثال النتيجة
ActionMatches{'Microsoft.Authorization/roleAssignments/*'} إذا كان الإجراء الذي يتم التحقق منه يساوي "Microsoft.Authorization/roleAssignments/write" ، فعندئذ true
ActionMatches{'Microsoft.Authorization/roleDefinitions/*'} إذا كان الإجراء الذي يتم التحقق منه يساوي "Microsoft.Authorization/roleAssignments/write" ، فهذا يعني خطأ
Resource[name1] StringLike 'a*c?' إذا كان المورد [name1] يساوي "abcd" ، فعندئذ true
Resource[name1] StringLike 'A*C?' إذا كان المورد [name1] يساوي "abcd" ، فعندئذ false
Resource[name1] StringLike 'a*c' إذا كان المورد [name1] يساوي "abcd" ، فعندئذ false
{'red', 'blue'} ForAnyOfAnyValues:StringEquals {'blue', 'green'} صواب
{'red', 'blue'} ForAnyOfAnyValues:StringEquals {'orange', 'green'} false
{'red', 'blue'} ForAllOfAnyValues:StringEquals {'orange', 'red', 'blue'} صواب
{'red', 'blue'} ForAllOfAnyValues:StringEquals {'red', 'green'} false
{10, 20} ForAnyOfAllValues:NumericLessThan {15, 18} صواب
{10, 20} ForAllOfAllValues:NumericLessThan {5, 15, 18} false
{10, 20} ForAllOfAllValues:NumericLessThan {25, 30} صواب
{10, 20} ForAllOfAllValues:NumericLessThan {15, 25, 30} false

الأحرف الخاصة

حرف الوصف
* تمثل العلامة النجمية (*) مطابقة أحرف بدل متعددة الأحرف يمكن استخدامها مع Like المشغلين. إذا لزم الأمر ، يمكنك الهروب من علامة النجمة عن طريق إضافة شرطة مائلة عكسية \*.
? تمثل علامة الاستفهام (؟) مطابقة حرف بدل واحد يمكن استخدامها مع Like المشغلين. إذا لزم الأمر ، يمكنك الهروب من علامة استفهام عن طريق إضافة شرطة مائلة عكسية \?.
$ يتم استخدام علامة الدولار ($) للمساعدة في تحديد مفاتيح العلامات. في Azure PowerShell، إذا كانت السلسلة المرفقة بعلامات اقتباس مزدوجة (") تتضمن علامة دولار، فيجب عليك بادئتها بعلامة خلفية ('). على سبيل المثال: tags:Project<`$key_case_sensitive`$>.

التجميع والأسبقية

إذا كان لديك ثلاثة تعبيرات أو أكثر لإجراء مستهدف مع عوامل تشغيل مختلفة بين التعبيرات، فإن ترتيب التقييم يكون غامضا. يمكنك استخدام الأقواس () لتجميع التعبيرات وتحديد الترتيب الذي يتم به تقييم التعبيرات. التعبيرات المرفقة بين قوسين لها أسبقية أعلى. على سبيل المثال، إذا كان لديك التعبير التالي:

a AND b OR c

يجب إضافة أقواس بإحدى الطرق التالية:

(a AND b) OR c
a AND (b OR c)

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