تعديل تعريفات نهج Azure لتأثير التعديل
modify
يتم استخدام التأثير لإضافة خصائص أو علامات أو تحديثها أو إزالتها على اشتراك أو مورد أثناء الإنشاء أو التحديث. يمكن أيضا معالجة الموارد غير المتوافقة الحالية مع مهمة معالجة. تتطلب تعيينات النهج ذات التأثير المعين على Modify هوية مدارة لإجراء المعالجة. ومن الأمثلة الشائعة لاستخدام modify
التأثير تحديث العلامات على الموارد مثل "costCenter".
هناك بعض الفروق الدقيقة في سلوك التعديل لخصائص المورد. تعرف على المزيد حول السيناريوهات عند تخطي التعديل.
يمكن أن يكون لقاعدة واحدة modify
أي عدد من العمليات. العمليات المدعومة هي:
-
إضافة علامات الموارد أو استبدالها أو إزالتها. يمكن إزالة العلامات فقط. بالنسبة للعلامات، يجب تعيين وضع تعديل النهج إلى
indexed
ما لم يكن المورد الهدف مجموعة موارد. -
إضافة أو استبدال قيمة نوع الهوية المدارة (
identity.type
) للأجهزة الظاهرية ومجموعات مقياس الجهاز الظاهري. يمكنك فقط تعديل للأجهزة الظاهريةidentity.type
أو مجموعات مقياس الجهاز الظاهري. -
إضافة قيم أسماء مستعارة معينة أو استبدالها .
- استخدم
Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }
في Azure PowerShell 4.6.0 أو أعلى للحصول على قائمة الأسماء المستعارة التي يمكن استخدامها معmodify
.
- استخدم
هام
إذا كنت تدير العلامات، فمن المستحسن استخدام تعديل بدلا من إلحاق حيث يوفر تعديل المزيد من أنواع العمليات والقدرة على معالجة الموارد الموجودة. ومع ذلك، يوصى بـ Append إن لم تتمكن من إنشاء هوية مدارة أو لا يدعم Modify بعد الاسم المستعار لخاصية المورد.
تقييم Modify
يُقيم Modify قبل معالجة الطلب من قبل موفر الموارد أثناء إنشاء مورد أو تحديثه.
modify
يتم تطبيق العمليات على محتوى الطلب عند if
استيفاء شرط قاعدة النهج. يمكن لكل modify
عملية تحديد شرط يحدد وقت تطبيقها.
عند تحديد اسم مستعار، يتم إجراء المزيد من عمليات التحقق للتأكد من أن modify
العملية لا تغير محتوى الطلب بطريقة تتسبب في رفض موفر المورد له:
- تم وضع علامة على الخاصية التي يعينها الاسم المستعار على أنها قابلة للتعديل في إصدار واجهة برمجة التطبيقات للطلب.
- يتطابق نوع الرمز المميز في
modify
العملية مع نوع الرمز المميز المتوقع للخاصية في إصدار واجهة برمجة التطبيقات للطلب.
إذا فشل أي من هذه الفحوصات، يعود تقييم النهج إلى المحدد conflictEffect
.
هام
من المستحسن أن يستخدم تعديل التعريفات التي تتضمن أسماء مستعارة تأثير تعارض التدقيقلتجنب فشل الطلبات باستخدام إصدارات واجهة برمجة التطبيقات حيث لا تكون الخاصية المعينة "قابلة للتعديل". إذا كان نفس الاسم المستعار يتصرف بشكل مختلف بين إصدارات واجهة برمجة التطبيقات، يمكن استخدام عمليات التعديل الشرطي لتحديد modify
العملية المستخدمة لكل إصدار من إصدارات واجهة برمجة التطبيقات.
تعديل تم تخطيه
هناك بعض الحالات التي يتم فيها تخطي عمليات التعديل أثناء التقييم:
-
الموارد الموجودة: عند تشغيل تعريف نهج يستخدم
modify
التأثير كجزء من دورة تقييم، فإنه لا يقوم بإجراء تغييرات على الموارد الموجودة بالفعل. بدلا من ذلك، فإنه يضع علامة على أي مورد يفيif
بالشرط على أنه غير متوافق، بحيث يمكن معالجته من خلال مهمة معالجة. -
غير قابل للتطبيق: عند تقييم حالة عملية في
operations
الصفيف إلى خطأ، يتم تخطي هذه العملية المعينة. -
الخاصية غير قابلة للتعديل: إذا لم يكن الاسم المستعار المحدد لعملية قابلا للتعديل في إصدار واجهة برمجة التطبيقات للطلب، فإن التقييم يستخدم تأثير التعارض. إذا تم تعيين تأثير التعارض على الرفض، يتم حظر الطلب. إذا تم تعيين تأثير التعارض للتدقيق، يسمح بالطلب من خلال ولكن
modify
يتم تخطي العملية. -
الخاصية غير موجودة: إذا لم تكن الخاصية موجودة في حمولة المورد للطلب، فقد يتم تخطي التعديل. في بعض الحالات، تكون الخصائص القابلة للتعديل متداخلة داخل خصائص أخرى ونمتلك اسما مستعارا مثل
Microsoft.Storage/storageAccounts/blobServices/deleteRetentionPolicy.enabled
. إذا لم تكن الخاصية "الأصل"، في هذه الحالةdeleteRetentionPolicy
، موجودة في الطلب، يتم تخطي التعديل لأنه يفترض حذف هذه الخاصية عن قصد. للحصول على مثال عملي، انتقل إلى القسم مثال على الخاصية غير موجودة. -
عملية الهوية غير VM أو VMSS: عندما تحاول عملية تعديل إضافة أو استبدال
identity.type
الحقل على مورد آخر غير الجهاز الظاهري أو مجموعة مقياس الجهاز الظاهري، يتم تخطي تقييم النهج تماما حتى لا يتم إجراء التعديل. في هذه الحالة، يعتبر المورد غير قابل للتطبيق على النهج.
مثال على الخاصية غير موجودة
يعتمد تعديل خصائص المورد على طلب واجهة برمجة التطبيقات وحمولة المورد المحدثة. يمكن أن تعتمد الحمولة على العميل المستخدم، مثل مدخل Microsoft Azure، وعوامل أخرى مثل موفر الموارد.
تخيل أنك تطبق نهج يعدل العلامات على جهاز ظاهري (VM). في كل مرة يتم فيها تحديث الجهاز الظاهري، مثل أثناء تغيير الحجم أو تغييرات القرص، يتم تحديث العلامات وفقا لذلك بغض النظر عن محتويات حمولة الجهاز الظاهري. وذلك لأن العلامات مستقلة عن خصائص الجهاز الظاهري.
ومع ذلك، إذا قمت بتطبيق نهج يعدل الخصائص على جهاز ظاهري، فإن التعديل يعتمد على حمولة المورد. إذا حاولت تعديل الخصائص غير المضمنة في حمولة التحديث، فلن يتم التعديل. على سبيل المثال، يمكن أن يحدث هذا عند تصحيح assessmentMode
خاصية الجهاز الظاهري (الاسم المستعار Microsoft.Compute/virtualMachines/osProfile.windowsConfiguration.patchSettings.assessmentMode
). الخاصية "متداخلة"، لذلك إذا لم يتم تضمين خصائصها الأصلية في الطلب، افتراض أن هذا الإغفال مقصود ويتم تخطي التعديل. لكي يتم التعديل، يجب أن تحتوي حمولة المورد على هذا السياق.
خصائص Modify
details
تحتوي خاصية التأثير على modify
كافة الخصائص الفرعية التي تحدد الأذونات المطلوبة للمعالجة والمستخدمة operations
لإضافة قيم العلامة أو تحديثها أو إزالتها.
-
roleDefinitionIds
(مطلوب)- يجب أن تتضمن هذه الخاصية صفيفًا من السلاسل التي تطابق معرف دور التحكم في الوصول المستند إلى الدور الذي يمكن الوصول إليه بواسطة الاشتراك. لمزيد من المعلومات، راجع المعالجة - تكوين تعريف النهج.
- يجب أن يتضمن الدور المحدد جميع العمليات الممنوحة لدور المساهم.
-
conflictEffect
(اختياري)- تحديد تعريف النهج الذي "يفوز" إذا كان أكثر من تعريف نهج واحد يعدل نفس الخاصية أو عندما
modify
لا تعمل العملية على الاسم المستعار المحدد.- بالنسبة للموارد الجديدة أو المحدثة، يكون لتعريف النهج مع deny الأسبقية. تتخطى تعريفات النهج مع التدقيق كل
operations
. إذا تم رفض أكثر من تعريف نهج واحد، يتم رفض الطلب كتعارض. إذا كانت جميع تعريفات النهج لها تدقيق، فلن تتم معالجة أي منoperations
تعريفات النهج المتعارضة. - بالنسبة للموارد الموجودة، إذا كان هناك أكثر من تعريف نهج واحد له تأثير الرفض، تكون حالة التوافق تعارض. إذا كان هناك تعريف نهج واحد أو أقل له تأثير الرفض، فإن كل تعيين يرجع حالة توافق غير متوافقة.
- بالنسبة للموارد الجديدة أو المحدثة، يكون لتعريف النهج مع deny الأسبقية. تتخطى تعريفات النهج مع التدقيق كل
- القيم المتوفرة: audit،و deny، وdisabled.
- القيمة الافتراضية هي deny.
- تحديد تعريف النهج الذي "يفوز" إذا كان أكثر من تعريف نهج واحد يعدل نفس الخاصية أو عندما
-
operations
(مطلوب)- صفيف من جميع عمليات العلامات التي سيتم إكمالها على الموارد المطابقة.
- خصائص:
-
operation
(مطلوب) -
field
(مطلوب)- العلامة المراد إضافتها أو استبدالها أو إزالتها. يجب أن تلتزم أسماء العلامات بنفس اصطلاح التسمية لحقول أخرى.
-
value
(اختياري)- القيمة التي ينبغي تعيين العلامة عليها.
- هذه الخاصية مطلوبة إذا كانت
operation
addOrReplace أو Add.
-
condition
(اختياري)- سلسلة تحتوي على تعبير لغة Azure Policy مع دالات النهج التي تقيم إلى صواب أو خطأ.
- لا يدعم دالات النهج التالية:
field()
وresourceGroup()
وsubscription()
.
-
عمليات Modify
operations
يجعل صفيف الخاصية من الممكن تغيير العديد من العلامات بطرق مختلفة عن تعريف نهج واحد. تتكون كل عملية من operation
خصائص field
و و value
.
operation
تحدد مهمة المعالجة ما تفعله بالعلامات، field
وتحدد العلامة التي تم تغييرها، وتحدد value
الإعداد الجديد لتلك العلامة. يقوم المثال التالي بإجراء تغييرات العلامة التالية:
- تعيين العلامة
environment
إلى "اختبار" حتى إذا كانت موجودة بالفعل بقيمة مختلفة. - إزالة العلامة
TempResource
. - تعيين العلامة
Dept
إلى معلمة النهج DeptName المكونة في تعيين النهج.
"details": {
...
"operations": [
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "Test"
},
{
"operation": "Remove",
"field": "tags['TempResource']",
},
{
"operation": "addOrReplace",
"field": "tags['Dept']",
"value": "[parameters('DeptName')]"
}
]
}
تحتوي operation
الخاصية على الخيارات التالية:
العملية | الوصف |
---|---|
addOrReplace |
تضيف الخاصية أو العلامة والقيمة المعرفة إلى المورد، حتى إن كانت الخاصية أو العلامة موجودة بالفعل بقيمة مختلفة. |
add |
تضيف الخاصية أو العلامة والقيمة المعرفة إلى المورد. |
remove |
إزالة العلامة المعرفة من المورد. معتمد فقط للعلامات. |
أمثلة Modify
مثال 1: إضافة العلامة environment
واستبدال علامات environment
الموجودة بـ"Test":
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"operations": [
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "Test"
}
]
}
}
مثال 2: إزالة العلامة env
وإضافة العلامة environment
أو استبدال علامات environment
الموجودة بقيمة معلمة:
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"conflictEffect": "deny",
"operations": [
{
"operation": "Remove",
"field": "tags['env']"
},
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "[parameters('tagValue')]"
}
]
}
}
مثال 3: تأكد من أن حساب التخزين لا يسمح بالوصول العام للكائنات الثنائية كبيرة الحجم، modify
يتم تطبيق العملية فقط عند تقييم الطلبات بإصدار API أكبر أو يساوي 2019-04-01
:
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab"
],
"conflictEffect": "audit",
"operations": [
{
"condition": "[greaterOrEquals(requestContext().apiVersion, '2019-04-01')]",
"operation": "addOrReplace",
"field": "Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
"value": false
}
]
}
}
الخطوات التالية
- راجع الأمثلة في نماذج نهج Azure.
- راجع بنية تعريف نهج Azure.
- التعرف على كيفية إنشاء النُهج برمجيًا.
- تعرف على كيفية الحصول على بيانات التوافق.
- تعرف على كيفية إصلاح الموارد غير المتوافقة.
- راجع مجموعات إدارة Azure.