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

(
(
!(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'
)
)

كيف يتم تقييم الحالة
إذا حاول مستخدم تنفيذ إجراء في تعيين الدور غير <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
}
}
العمليات الفرعية
بعض الإجراءات لها عمليات فرعية. على سبيل المثال، يحتوي إجراء البيانات "قراءة نقطة" على العملية الفرعية "قراءة المحتوى من نقطة بشروط العلامة". الشروط مع العمليات الفرعية لها التنسيق التالي.

(
(
!(ActionMatches{'<action>'}
AND
SubOperationMatches{'<subOperation>'})
)
OR
(
<attribute> <operator> <value>
)
)
إجراءات متعددة
يمكن أن يتضمن الشرط إجراءات متعددة تريد السماح بها إذا كان الشرط صحيحا. إذا قمت بتحديد إجراءات متعددة لشرط واحد، فقد يكون هناك عدد أقل من السمات للاختيار من بينها لشرطك لأنه يجب أن تكون السمات متوفرة عبر الإجراءات المحددة.

(
(
!(ActionMatches{'<action>'})
AND
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
)
)
تعبيرات متعددة
يمكن أن يتضمن الشرط تعبيرات متعددة. اعتمادا على المشغل، يمكن التحقق من السمات مقابل قيم متعددة.

(
(
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
AND | OR
<attribute> <operator> {<value>, <value>, <value>}
AND | OR
<attribute> <operator> <value>
)
)
شروط متعددة
يمكنك أيضا دمج الشروط لاستهداف إجراءات متعددة.

(
(
!(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
لمزيد من المعلومات حول سمات الأمان المخصصة، راجع:
- السماح بالوصول للقراءة إلى النقاط استنادا إلى العلامات وسمات الأمان المخصصة
- لا يظهر المدير في مصدر السمة عند إضافة شرط
- إضافة أو إلغاء تنشيط سمات الأمان المخصصة في Microsoft Azure Active Directory
المشغلون
يسرد الجدول التالي عوامل التشغيل المتوفرة لإنشاء الشروط.
| الفئة | عامل تشغيل | الوصف |
|---|---|---|
| مقارنة منطقية | AND&& |
والمشغل. |
OR|| |
أو المشغل. | |
NOT! |
لا أو عامل النفي. | |
| مقارنة السلسلة | StringEqualsStringEqualsIgnoreCase |
مطابقة حساسة لحالة الأحرف (أو غير حساسة لحالة الأحرف). يجب أن تتطابق القيم تماما مع السلسلة. |
StringNotEqualsStringNotEqualsIgnoreCase |
نفي StringEquals عامل التشغيل (أو StringEqualsIgnoreCase) |
|
StringStartsWithStringStartsWithIgnoreCase |
مطابقة حساسة لحالة الأحرف (أو غير حساسة لحالة الأحرف). تبدأ القيم بالسلسلة. | |
StringNotStartsWithStringNotStartsWithIgnoreCase |
نفي StringStartsWith عامل التشغيل (أو StringStartsWithIgnoreCase) |
|
StringLikeStringLikeIgnoreCase |
مطابقة حساسة لحالة الأحرف (أو غير حساسة لحالة الأحرف). يمكن أن تتضمن القيم حرف بدل مطابقة متعدد الأحرف () أو حرف بدل مطابقة أحادي الأحرف (*?) في أي مكان في السلسلة. إذا لزم الأمر ، يمكن الهروب من هذه الأحرف عن طريق إضافة شرطة مائلة عكسية \* و \?. |
|
StringNotLikeStringNotLikeIgnoreCase |
نفي StringLike عامل التشغيل (أو StringLikeIgnoreCase) |
|
| مقارنة رقمية | NumericEqualsNumericNotEqualsNumericLessThanNumericLessThanEqualsNumericGreaterThanNumericGreaterThanEquals |
حاليا، يتم دعم الأعداد الصحيحة فقط. |
| وظائف أعلى مستوى | ActionMatches |
يتحقق مما إذا كانت قيمة Action[ID] تتطابق مع نمط الإجراء المحدد. يعادل عامل التشغيل هذا منطق مطابقة الإجراء الذي تستخدمه SDK عند مقارنة إجراء بنمط إجراء داخل إذن. |
| مقارنة بين المنتجات | ForAnyOfAnyValues:StringEqualsForAnyOfAnyValues:StringEqualsIgnoreCaseForAnyOfAnyValues:StringNotEqualsForAnyOfAnyValues:StringNotEqualsIgnoreCaseForAnyOfAnyValues:StringLikeForAnyOfAnyValues:StringLikeIgnoreCaseForAnyOfAnyValues:StringNotLikeForAnyOfAnyValues:StringNotLikeIgnoreCaseForAnyOfAnyValues:NumericEqualsForAnyOfAnyValues:NumericNotEqualsForAnyOfAnyValues:NumericGreaterThanForAnyOfAnyValues:NumericGreaterThanEqualsForAnyOfAnyValues:NumericLessThanForAnyOfAnyValues:NumericLessThanEquals |
إذا كانت قيمة واحدة على الأقل على الجانب الأيسر تفي بالمقارنة بقيمة واحدة على الأقل على الجانب الأيمن، تقييم التعبير إلى true. لديه الشكل: ForAnyOfAnyValues:<BooleanFunction>. يدعم سلاسل وأرقام متعددة. |
ForAllOfAnyValues:StringEqualsForAllOfAnyValues:StringEqualsIgnoreCaseForAllOfAnyValues:StringNotEqualsForAllOfAnyValues:StringNotEqualsIgnoreCaseForAllOfAnyValues:StringLikeForAllOfAnyValues:StringLikeIgnoreCaseForAllOfAnyValues:StringNotLikeForAllOfAnyValues:StringNotLikeIgnoreCaseForAllOfAnyValues:NumericEqualsForAllOfAnyValues:NumericNotEqualsForAllOfAnyValues:NumericGreaterThanForAllOfAnyValues:NumericGreaterThanEqualsForAllOfAnyValues:NumericLessThanForAllOfAnyValues:NumericLessThanEquals |
إذا كانت كل قيمة على الجانب الأيسر تفي بالمقارنة مع قيمة واحدة على الأقل على الجانب الأيمن ، تقييم التعبير إلى true. لديه الشكل: ForAllOfAnyValues:<BooleanFunction>. يدعم سلاسل وأرقام متعددة. |
|
ForAnyOfAllValues:StringEqualsForAnyOfAllValues:StringEqualsIgnoreCaseForAnyOfAllValues:StringNotEqualsForAnyOfAllValues:StringNotEqualsIgnoreCaseForAnyOfAllValues:StringLikeForAnyOfAllValues:StringLikeIgnoreCaseForAnyOfAllValues:StringNotLikeForAnyOfAllValues:StringNotLikeIgnoreCaseForAnyOfAllValues:NumericEqualsForAnyOfAllValues:NumericNotEqualsForAnyOfAllValues:NumericGreaterThanForAnyOfAllValues:NumericGreaterThanEqualsForAnyOfAllValues:NumericLessThanForAnyOfAllValues:NumericLessThanEquals |
إذا كانت قيمة واحدة على الأقل على الجانب الأيسر تفي بالمقارنة مع كل قيمة على الجانب الأيمن، تقييم التعبير إلى true. لديه الشكل: ForAnyOfAllValues:<BooleanFunction>. يدعم سلاسل وأرقام متعددة. |
|
ForAllOfAllValues:StringEqualsForAllOfAllValues:StringEqualsIgnoreCaseForAllOfAllValues:StringNotEqualsForAllOfAllValues:StringNotEqualsIgnoreCaseForAllOfAllValues:StringLikeForAllOfAllValues:StringLikeIgnoreCaseForAllOfAllValues:StringNotLikeForAllOfAllValues:StringNotLikeIgnoreCaseForAllOfAllValues:NumericEqualsForAllOfAllValues:NumericNotEqualsForAllOfAllValues:NumericGreaterThanForAllOfAllValues:NumericGreaterThanEqualsForAllOfAllValues:NumericLessThanForAllOfAllValues: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)