الحصول على بيانات التوافق الخاصة بموارد Azure
تتمثل إحدى أكبر فوائد Azure Policy في البصيرة وعناصر التحكم التي يوفرها على الموارد في مجموعة اشتراكات أو إدارة الاشتراكات. يمكن ممارسة هذا التحكم بعدة طرق مختلفة، مثل منع إنشاء الموارد في الموقع الخطأ، أو فرض الاستخدام الشائع والمتسق للعلامة، أو تدقيق الموارد الموجودة للتكوينات والإعدادات المناسبة. في جميع الحالات، يتم إنشاء البيانات بواسطة Azure Policy لتمكينك من فهم حالة الامتثال لبيئتك.
هناك عدة طرق للوصول إلى معلومات الامتثال الناتجة عن مهام السياسة والمبادرة الخاصة بك:
- استخدام مدخل Azure
- من خلال البرمجة النصية لسطر الأوامر
قبل النظر في طرق الإبلاغ عن الامتثال، دعونا نلقي نظرة على وقت تحديث معلومات الامتثال والتكرار والأحداث التي تؤدي إلى دورة تقييم.
تحذير
إذا تم الإبلاغ عن حالة الامتثال على أنها غير مسجلة، فتحقق من تسجيل موفر موارد Microsoft.PolicyInsights وأن المستخدم لديه أذونات التحكم في الوصول المستندة إلى دور Azure (Azure RBAC) المناسبة كما هو موضح في أذونات Azure RBAC في نهج Azure.
محفزات التقييم
تتوفر نتائج دورة التقييم المكتملة في Microsoft.PolicyInsights مزود الموارد من خلال PolicyStates والعمليات PolicyEvents . لمزيد من المعلومات حول عمليات واجهة برمجة تطبيقات سياسة Azure Insights REST، راجع Insights نهج Azure.
تتم تقييمات السياسات والمبادرات المعينة نتيجة لأحداث مختلفة:
يتم تعيين منهج أو مبادرة حديثاً إلى نطاق. يستغرق تطبيق المهمة على النطاق المحدد حوالي 30 دقيقة. بمجرد تطبيقها، تبدأ دورة التقييم للموارد ضمن هذا النطاق مقابل السياسة أو المبادرة المعينة حديثا، واعتمادا على الآثار التي تستخدمها السياسة أو المبادرة، يتم وضع علامة على الموارد على أنها متوافقة أو غير متوافقة أو معفاة. يمكن أن تستغرق سياسة أو مبادرة كبيرة يتم تقييمها مقابل نطاق واسع من الموارد بعض الوقت. على هذا النحو ، لا يوجد توقع محدد مسبقا عند اكتمال دورة التقييم. وبمجرد اكتمالها، تتوفر نتائج الامتثال المحدثة في البوابة الإلكترونية ومجموعات تطوير البرامج (SDK).
يتم تحديث منهج أو مبادرة حديثاً بالفعل إلى نطاق. دورة التقييم والتوقيت لهذا السيناريو هي نفسها بالنسبة لمهمة جديدة إلى نطاق.
يتم نشر مورد أو تحديثه ضمن نطاق مع تعيين عبر Azure Resource Manager أو واجهة برمجة تطبيقات REST أو SDK مدعومة. في هذا السيناريو، يصبح حدث التأثير (إلحاق أو تدقيق أو رفض أو نشر) ومعلومات الحالة المتوافقة للمورد الفردي متوفرا في البوابة الإلكترونية ومجموعات SDK بعد حوالي 15 دقيقة. لا يتسبب هذا الحدث في إجراء تقييم للموارد الأخرى.
يتم إنشاء اشتراك (نوع مورد) أو نقله داخل تدرج هرمي لمجموعة إدارة مع تعريف نهج معين يستهدف نوع
Microsoft.Resource/subscriptionsمورد الاشتراك. يستغرق تقييم التأثيرات المدعومة بالاشتراك (التدقيق ، والتدقيق IfNotExist، ونشر IfNotExists ، والتعديل) ، والتسجيل ، وأي إجراءات معالجة حوالي 30 دقيقة.يتم إنشاء إعفاء السياسة أو تحديثه أو حذفه. في هذا السيناريو، يتم تقييم الإحالة المقابلة لنطاق الإعفاء المحدد.
دورة تقييم الامتثال القياسية. مرة واحدة كل 24 ساعة ، يتم إعادة تقييم المهام تلقائيا. يمكن أن تستغرق سياسة أو مبادرة كبيرة من العديد من الموارد وقتا ، لذلك لا يوجد توقع محدد مسبقا عند اكتمال دورة التقييم. وبمجرد اكتمالها، تتوفر نتائج الامتثال المحدثة في البوابة الإلكترونية ومجموعات تطوير البرامج (SDK).
يتم تحديث موفر مورد تكوين الضيف بتفاصيل الامتثال بواسطة مورد مدار.
الفحص حسب الطلب
فحص التقييم عند الطلب
يمكن بدء فحص التقييم لاشتراك أو مجموعة موارد باستخدام Azure CLI أو Azure PowerShell أو استدعاء إلى واجهة برمجة تطبيقات REST أو باستخدام إجراء GitHub إجراءات التوافق مع نهج Azure. هذا الفحص هو عملية غير متزامنة.
فحص التقييم حسب الطلب - GitHub Action
استخدم إجراء فحص الامتثال لنهج Azure لتشغيل فحص تقييم عند الطلب من سير عمل GitHub على مورد واحد أو عدة موارد أو مجموعات موارد أو اشتراكات، وقم بتعيين سير العمل استنادا إلى حالة توافق الموارد. يمكنك أيضا تكوين سير العمل ليتم تشغيله في وقت مجدول بحيث تحصل على أحدث حالة توافق في وقت مناسب. اختياريا، يمكن أن تنشئ إجراءات GitHub هذه تقريرا عن حالة امتثال الموارد الممسوحة ضوئيا لمزيد من التحليل أو الأرشفة.
يقوم المثال التالي بتشغيل فحص التوافق للاشتراك.
on:
schedule:
- cron: '0 8 * * *' # runs every morning 8am
jobs:
assess-policy-compliance:
runs-on: ubuntu-latest
steps:
- name: Login to Azure
uses: azure/login@v1
with:
creds: ${{secrets.AZURE_CREDENTIALS}}
- name: Check for resource compliance
uses: azure/policy-compliance-scan@v0
with:
scopes: |
/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
لمزيد من المعلومات وعينات سير العمل، راجع GitHub إجراءات لمراجعة فحص الامتثال لنهج Azure.
فحص التقييم عند الطلب - Azure CLI
يتم بدء فحص التوافق باستخدام الأمر az state trigger-scan .
بشكل افتراضي، az policy state trigger-scan يبدأ تقييم لجميع الموارد في الاشتراك الحالي. لبدء تقييم على مجموعة موارد معينة، استخدم معلمة مجموعة الموارد . يبدأ المثال التالي فحص التوافق في الاشتراك الحالي لمجموعة موارد MyRG :
az policy state trigger-scan --resource-group "MyRG"
يمكنك اختيار عدم الانتظار حتى تكتمل العملية غير المتزامنة قبل المتابعة باستخدام معلمة عدم الانتظار .
فحص التقييم عند الطلب - Azure PowerShell
يتم بدء فحص التوافق باستخدام cmdlet Start-AzPolicyComplianceScan .
بشكل افتراضي، Start-AzPolicyComplianceScan يبدأ تقييم لجميع الموارد في الاشتراك الحالي. لبدء تقييم على مجموعة موارد معينة، استخدم المعلمة ResourceGroupName . يبدأ المثال التالي فحص التوافق في الاشتراك الحالي لمجموعة موارد MyRG :
Start-AzPolicyComplianceScan -ResourceGroupName 'MyRG'
يمكنك جعل PowerShell ينتظر اكتمال المكالمة غير المتزامنة قبل توفير مخرجات النتائج أو تشغيلها في الخلفية كوظيفة. لاستخدام مهمة PowerShell لتشغيل فحص التوافق في الخلفية، استخدم المعلمة AsJob وقم بتعيين القيمة إلى كائن، كما هو الحال $job في هذا المثال:
$job = Start-AzPolicyComplianceScan -AsJob
يمكنك التحقق من حالة الوظيفة عن طريق التحقق من $job الكائن. الوظيفة من النوع Microsoft.Azure.Commands.Common.AzureLongRunningJob. استخدم Get-Member على الكائن $job لرؤية الخصائص والأساليب المتوفرة.
أثناء تشغيل فحص التوافق، يؤدي التحقق من $job مخرجات الكائن إلى نتائج مثل هذه:
$job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
2 Long Running O... AzureLongRunni... Running True localhost Start-AzPolicyCompliance...
عند اكتمال فحص الامتثال، تتغير ممتلكات الدولة إلى مكتملة.
فحص التقييم عند الطلب - REST
كعملية غير متزامنة، لا تنتظر نقطة نهاية REST لبدء الفحص حتى يكتمل الفحص للاستجابة. بدلا من ذلك ، يوفر عنوان URI للاستعلام عن حالة التقييم المطلوب.
في كل REST API URI، هناك متغيرات يتم استخدامها تحتاج إلى استبدالها بقيمك الخاصة:
{YourRG}- استبدال باسم مجموعة الموارد الخاصة بك- استبدل
{subscriptionId}بمعرّف اشتراكك
يدعم الفحص تقييم الموارد في اشتراك أو في مجموعة موارد. ابدأ الفحص حسب النطاق باستخدام أمر REST API POST باستخدام هياكل URI التالية:
الاشتراك
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01مجموعة الموارد
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{YourRG}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
ترجع المكالمة حالة 202 مقبولة . يتضمن رأس الاستجابة خاصية موقع بالتنسيق التالي:
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/asyncOperationResults/{ResourceContainerGUID}?api-version=2019-10-01
{ResourceContainerGUID} يتم إنشاؤه بشكل ثابت للنطاق المطلوب. إذا كان النطاق يقوم بالفعل بتشغيل فحص عند الطلب، فلن يتم بدء فحص جديد. بدلا من ذلك، يتم توفير الطلب الجديد في نفس {ResourceContainerGUID}الموقع URI للحالة. يقوم الأمر REST API GET إلى الموقع URI بإرجاع 202 مقبول أثناء استمرار التقييم. عند اكتمال فحص التقييم، فإنه يرجع حالة موافق 200 . نص الفحص المكتمل هو استجابة JSON مع الحالة:
{
"status": "Succeeded"
}
فحص التقييم عند الطلب - رمز Visual Studio
ملحق نهج Azure للتعليمات البرمجية Visual Studio قادر على تشغيل فحص تقييم لمورد معين. هذا الفحص هو عملية متزامنة، على عكس أساليب Azure PowerShell و REST. للحصول على التفاصيل والخطوات، راجع التقييم عند الطلب باستخدام ملحق VS Code.
كيفية عمل الامتثال
في التعيين، يكون المورد غير متوافق إذا لم يتبع قواعد السياسة أو المبادرة ولم يكن معفيا. يوضح الجدول التالي كيفية عمل تأثيرات السياسة المختلفة مع تقييم الشرط لحالة الامتثال الناتجة:
| حالة المورد | التأثير | تقييم النهج | حالة التوافق |
|---|---|---|---|
| جديد أو مُحدث | Audit, Modify, AuditIfNotExist | صواب | غير متوافق |
| جديد أو مُحدث | Audit, Modify, AuditIfNotExist | خطأ | متوافق |
| موجود | Deny, Audit, Append, Modify, DeployIfNotExist, AuditIfNotExist | صواب | غير متوافق |
| موجود | Deny, Audit, Append, Modify, DeployIfNotExist, AuditIfNotExist | خطأ | متوافق |
ملاحظة
تتطلب تأثيرات DeployIfNotExist و AuditIfNotExist أن تكون عبارة الشرط TRUE وأن يكون شرط الوجود FALSE ليكون غير متوافق. عندما تكون القيمة "TRUE"، فإن عبارة الشرط تدعم تقييم شرط وجود الموارد ذات الصلة.
على سبيل المثال، افترض أن لديك مجموعة موارد - ContsoRG، مع بعض حسابات التخزين (المميزة باللون الأحمر) التي تتعرض للشبكات العامة.
رسم تخطيطي يعرض صورا لخمسة حسابات تخزين في مجموعة موارد Contoso R G. حسابات التخزين واحد وثلاثة باللون الأزرق، في حين أن حسابات التخزين اثنين وأربعة وخمسة باللون الأحمر.
في هذا المثال، يجب أن تكون حذرا من المخاطر الأمنية. الآن بعد أن قمت بإنشاء تعيين نهج، يتم تقييمه لجميع حسابات التخزين المضمنة وغير المعفاة في مجموعة موارد ContosoRG. وهي تقوم بمراجعة حسابات التخزين الثلاثة غير المتوافقة ، وبالتالي تغيير حالاتها إلى غير متوافقة.
رسم تخطيطي يعرض صورا لخمسة حسابات تخزين في مجموعة موارد Contoso R G. تحتوي حسابات التخزين الأولى والثالثة الآن على علامات اختيار خضراء تحتها، بينما تحتوي حسابات التخزين الثانية والرابعة والخامسة الآن على علامات تحذير حمراء تحتها.
إلى جانب الامتثال وغير المتوافق ، تحتوي السياسات والموارد على أربع حالات أخرى:
- معفي: المورد في نطاق التخصيص، ولكن لديه إعفاء محدد.
- متضاربة: يوجد تعريفان أو أكثر للسياسة مع قواعد متضاربة. على سبيل المثال، يلحق تعريفان العلامة نفسها بقيم مختلفة.
- لم تبدأ: لم تبدأ دورة التقييم للسياسة أو المورد.
- غير مسجل: لم يتم تسجيل موفر موارد نهج Azure أو لم يكن لدى الحساب الذي تم تسجيل الدخول إليه إذن لقراءة بيانات التوافق.
يستخدم Azure Policy حقول النوع أو الاسم أو النوع في التعريف لتحديد ما إذا كان المورد مطابقا أم لا. عندما يتطابق المورد، يعتبر قابلا للتطبيق ويكون له حالة إما متوافق أو غير متوافق أو معفي. إذا كان الاسم أو النوع هو الخاصية الوحيدة في التعريف ، فإن جميع الموارد المضمنة وغير المعفاة تعتبر قابلة للتطبيق ويتم تقييمها.
يتم تحديد نسبة الامتثال عن طريق قسمة الموارد المتوافقة والمعفاة على إجمالي الموارد. يتم تعريف إجمالي الموارد على أنها مجموع الموارد المتوافقةوغير المتوافقةوالمعفاةوالمتعارضة. أرقام الامتثال الإجمالية هي مجموع الموارد المتميزة المتوافقة أو المعفاة مقسومة على مجموع جميع الموارد المتميزة. في الصورة أدناه ، هناك 20 موردا متميزا قابلا للتطبيق وواحد فقط غير متوافق. ويبلغ إجمالي الامتثال للموارد 95٪ (19 من أصل 20).
ملاحظة
التوافق التنظيمي في نهج Azure هو ميزة معاينة. تختلف خصائص التوافق من SDK والصفحات الموجودة في البوابة الإلكترونية عن المبادرات الممكنة. لمزيد من المعلومات، راجع التوافق التنظيمي
المدخل
تعرض بوابة Azure تجربة رسومية لتصور وفهم حالة التوافق في بيئتك. في صفحة السياسة ، يوفر خيار نظرة عامة تفاصيل للنطاقات المتاحة حول امتثال كل من السياسات والمبادرات. إلى جانب حالة الامتثال والعدد لكل مهمة، فإنه يحتوي على مخطط يوضح الامتثال خلال الأيام السبعة الماضية. تحتوي صفحة الامتثال على الكثير من هذه المعلومات نفسها (باستثناء المخطط)، ولكنها توفر خيارات تصفية وفرز إضافية.
وبما أنه يمكن تعيين سياسة أو مبادرة إلى نطاقات مختلفة، فإن الجدول يتضمن نطاق كل مهمة ونوع التعريف الذي تم تعيينه. كما يتم توفير عدد الموارد غير المتوافقة والسياسات غير المتوافقة لكل مهمة. يوفر الاختيار على سياسة أو مبادرة في الجدول نظرة أعمق على الامتثال لتلك المهمة المحددة.
تعرض قائمة الموارد في علامة التبويب توافق الموارد حالة تقييم الموارد الموجودة للتعيين الحالي. يتم تعيين علامة التبويب افتراضيا إلى غير متوافقة، ولكن يمكن تصفيتها. يتم عرض الأحداث (الإلحاق أو التدقيق أو الرفض أو النشر أو التعديل) التي تم تشغيلها بواسطة طلب إنشاء مورد ضمن علامة التبويب الأحداث .
ملاحظة
بالنسبة لنهج AKS Engine، يكون المورد المعروض هو مجموعة الموارد.
بالنسبة إلى موارد وضع موفر الموارد، في علامة التبويب توافق الموارد، يؤدي تحديد المورد أو النقر بزر الماوس الأيمن فوق الصف وتحديد عرض تفاصيل التوافق إلى فتح تفاصيل توافق المكون. توفر هذه الصفحة أيضا علامات تبويب للاطلاع على السياسات التي تم تعيينها لهذا المورد والأحداث وأحداث المكونات وسجل التغييرات.
بالعودة إلى صفحة امتثال الموارد، حدد مع الاستمرار (أو انقر بزر الماوس الأيمن) على صف الحدث الذي ترغب في جمع مزيد من التفاصيل عنه وحدد إظهار سجلات الأنشطة. تفتح صفحة سجل النشاط ويتم تصفيتها مسبقا إلى البحث الذي يعرض تفاصيل المهمة والأحداث. يوفر سجل النشاط سياقا ومعلومات إضافية حول هذه الأحداث.
فهم عدم الامتثال
عندما يتم تحديد مورد على أنه غير متوافق ، فهناك العديد من الأسباب المحتملة. لتحديد سبب عدم امتثال مورد أو للعثور على التغيير المسؤول، راجع تحديد عدم الامتثال.
سطر الأوامر
يمكن استرداد نفس المعلومات المتوفرة في البوابة الإلكترونية باستخدام واجهة برمجة تطبيقات REST (بما في ذلك ARMClient) وAzure PowerShell وAzure CLI. للحصول على التفاصيل الكاملة حول واجهة برمجة تطبيقات REST، راجع مرجع نهج Azure . تحتوي الصفحات المرجعية لواجهة برمجة تطبيقات REST على زر "جربها" أخضر في كل عملية يسمح لك بتجربتها مباشرة في المتصفح.
استخدم ARMClient أو أداة مشابهة للتعامل مع المصادقة إلى Azure لأمثلة واجهة برمجة تطبيقات REST.
ملاحظة
حاليا لا يمكن استرداد "سبب عدم الامتثال" من سطر الأوامر. نحن نعمل على تعيين رمز السبب إلى "سبب عدم الامتثال" وفي هذه المرحلة لا يوجد ETA على هذا.
تلخيص النتائج
باستخدام واجهة برمجة تطبيقات REST ، يمكن إجراء التلخيص بواسطة حاوية أو تعريف أو تعيين. فيما يلي مثال على التلخيص على مستوى الاشتراك باستخدام ملخص الاشتراك في Azure Policy Insight:
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/summarize?api-version=2019-10-01
يلخص الناتج الاشتراك. في مثال المخرجات أدناه، يكون الامتثال الموجز ضمن value.results.noncomppliantResources وvalue.results.nonCompliantPolicies. ويقدم هذا الطلب مزيدا من التفاصيل، بما في ذلك كل إحالة تشكل الأرقام غير المتوافقة ومعلومات التعريف لكل تخصيص. يوفر كل كائن نهج في التدرج الهرمي استعلالا ResultsUri يمكن استخدامه للحصول على تفاصيل إضافية على هذا المستوى.
{
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary",
"@odata.count": 1,
"value": [{
"@odata.id": null,
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary/$entity",
"results": {
"queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant'",
"nonCompliantResources": 15,
"nonCompliantPolicies": 1
},
"policyAssignments": [{
"policyAssignmentId": "/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77",
"policySetDefinitionId": "",
"results": {
"queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77'",
"nonCompliantResources": 15,
"nonCompliantPolicies": 1
},
"policyDefinitions": [{
"policyDefinitionReferenceId": "",
"policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
"effect": "deny",
"results": {
"queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'",
"nonCompliantResources": 15
}
}]
}]
}]
}
الاستعلام عن الموارد
في المثال أعلاه، يوفر value.policyAssignments.policyDefinitions.results.queryResultsUri نموذج عنوان URI لكافة الموارد غير المتوافقة لتعريف نهج معين. بالنظر إلى القيمة $filter ، فإن ComplianceState يساوي (eq) "غير متوافق" ، ويتم تحديد PolicyAssignmentId لتعريف السياسة ، ثم PolicyDefinitionId نفسه. يرجع سبب تضمين PolicyAssignmentId في عامل التصفية إلى أن PolicyDefinitionId يمكن أن يكون موجودا في العديد من تعيينات النهج أو المبادرة ذات النطاقات المختلفة. من خلال تحديد كل من PolicyAssignmentId و PolicyDefinitionId ، يمكننا أن نكون واضحين في النتائج التي نبحث عنها. في السابق ، بالنسبة إلى PolicyStates ، استخدمنا الأحدث ، والذي يقوم تلقائيا بتعيين نافذة زمنية منوإلى آخر 24 ساعة.
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'
تم اقتطاع استجابة المثال أدناه إلى مورد واحد غير متوافق للإيجاز. تحتوي الاستجابة التفصيلية على عدة أجزاء من البيانات حول المورد والسياسة أو المبادرة والتعيين. لاحظ أنه يمكنك أيضا الاطلاع على معلمات التعيين التي تم تمريرها إلى تعريف النهج.
{
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
"@odata.count": 15,
"value": [{
"@odata.id": null,
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"timestamp": "2018-05-19T04:41:09Z",
"resourceId": "/subscriptions/{subscriptionId}/resourceGroups/rg-tags/providers/Microsoft.Compute/virtualMachines/linux",
"policyAssignmentId": "/subscriptions/{subscriptionId}/resourceGroups/rg-tags/providers/Microsoft.Authorization/policyAssignments/37ce239ae4304622914f0c77",
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
"effectiveParameters": "",
"ComplianceState": "NonCompliant",
"subscriptionId": "{subscriptionId}",
"resourceType": "/Microsoft.Compute/virtualMachines",
"resourceLocation": "westus2",
"resourceGroup": "RG-Tags",
"resourceTags": "tbd",
"policyAssignmentName": "37ce239ae4304622914f0c77",
"policyAssignmentOwner": "tbd",
"policyAssignmentParameters": "{\"tagName\":{\"value\":\"costCenter\"},\"tagValue\":{\"value\":\"Contoso-Test\"}}",
"policyAssignmentScope": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags",
"policyDefinitionName": "1e30110a-5ceb-460c-a204-c1c3969c6d62",
"policyDefinitionAction": "deny",
"policyDefinitionCategory": "tbd",
"policySetDefinitionId": "",
"policySetDefinitionName": "",
"policySetDefinitionOwner": "",
"policySetDefinitionCategory": "",
"policySetDefinitionParameters": "",
"managementGroupIds": "",
"policyDefinitionReferenceId": ""
}]
}
اعرض الأحداث
عند إنشاء مورد أو تحديثه، يتم إنشاء نتيجة تقييم النهج. تسمى النتائج أحداث السياسة. استخدم عنوان URI التالي لعرض أحداث السياسة الأخيرة المقترنة بالاشتراك.
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/default/queryResults?api-version=2019-10-01
تُشبه نتائجك المثال التالي:
{
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/$metadata#default",
"@odata.count": 1,
"value": [{
"@odata.id": null,
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/$metadata#default/$entity",
"NumAuditEvents": 16
}]
}
لمزيد من المعلومات حول الاستعلام عن أحداث النهج، راجع المقالة المرجعية لأحداث نهج Azure .
Azure CLI
تغطي مجموعة أوامر Azure CLI ل Azure Policy معظم العمليات المتوفرة في REST أو Azure PowerShell. للحصول على القائمة الكاملة للأوامر المتوفرة، راجع نظرة عامة على سياسة Azure CLI - Azure.
مثال: الحصول على ملخص الحالة لأعلى نهج معين يحتوي على أكبر عدد من الموارد غير المتوافقة.
az policy state summarize --top 1
يبدو الجزء العلوي من الاستجابة مثل هذا المثال:
{
"odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary/$entity",
"odataid": null,
"policyAssignments": [{
"policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8",
"policyDefinitions": [{
"effect": "audit",
"policyDefinitionGroupNames": [
""
],
"policyDefinitionId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
"policyDefinitionReferenceId": "",
"results": {
"nonCompliantPolicies": null,
"nonCompliantResources": 398,
"policyDetails": [{
"complianceState": "noncompliant",
"count": 1
}],
"policyGroupDetails": [{
"complianceState": "noncompliant",
"count": 1
}],
"queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2020-07-14 14:01:22Z&$to=2020-07-15 14:01:22Z and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8' and PolicyDefinitionId eq '/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a'",
"resourceDetails": [{
"complianceState": "noncompliant",
"count": 398
},
{
"complianceState": "compliant",
"count": 4
}
]
}
}],
...
مثال: الحصول على سجل الحالة لأحدث مورد تم تقييمه (يكون الإعداد الافتراضي حسب الطابع الزمني بترتيب تنازلي).
az policy state list --top 1
[
{
"complianceReasonCode": "",
"complianceState": "Compliant",
"effectiveParameters": "",
"isCompliant": true,
"managementGroupIds": "{managementgroupId}",
"odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"odataid": null,
"policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/securitycenterbuiltin",
"policyAssignmentName": "SecurityCenterBuiltIn",
"policyAssignmentOwner": "tbd",
"policyAssignmentParameters": "",
"policyAssignmentScope": "/subscriptions/{subscriptionId}",
"policyAssignmentVersion": "",
"policyDefinitionAction": "auditifnotexists",
"policyDefinitionCategory": "tbd",
"policyDefinitionGroupNames": [
""
],
"policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/aa633080-8b72-40c4-a2d7-d00c03e80bed",
"policyDefinitionName": "aa633080-8b72-40c4-a2d7-d00c03e80bed",
"policyDefinitionReferenceId": "identityenablemfaforownerpermissionsmonitoring",
"policyDefinitionVersion": "",
"policyEvaluationDetails": null,
"policySetDefinitionCategory": "security center",
"policySetDefinitionId": "/providers/Microsoft.Authorization/policySetDefinitions/1f3afdf9-d0c9-4c3d-847f-89da613e70a8",
"policySetDefinitionName": "1f3afdf9-d0c9-4c3d-847f-89da613e70a8",
"policySetDefinitionOwner": "",
"policySetDefinitionParameters": "",
"policySetDefinitionVersion": "",
"resourceGroup": "",
"resourceId": "/subscriptions/{subscriptionId}",
"resourceLocation": "",
"resourceTags": "tbd",
"resourceType": "Microsoft.Resources/subscriptions",
"subscriptionId": "{subscriptionId}",
"timestamp": "2020-07-15T08:37:07.903433+00:00"
}
]
مثال: الحصول على تفاصيل لجميع موارد الشبكة الافتراضية غير المتوافقة.
az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'"
[
{
"complianceReasonCode": "",
"complianceState": "NonCompliant",
"effectiveParameters": "",
"isCompliant": false,
"managementGroupIds": "{managementgroupId}",
"odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"odataid": null,
"policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8",
"policyAssignmentName": "e0704696df5e4c3c81c873e8",
"policyAssignmentOwner": "tbd",
"policyAssignmentParameters": "",
"policyAssignmentScope": "/subscriptions/{subscriptionId}",
"policyAssignmentVersion": "",
"policyDefinitionAction": "audit",
"policyDefinitionCategory": "tbd",
"policyDefinitionGroupNames": [
""
],
"policyDefinitionId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
"policyDefinitionName": "2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
"policyDefinitionReferenceId": "",
"policyDefinitionVersion": "",
"policyEvaluationDetails": null,
"policySetDefinitionCategory": "",
"policySetDefinitionId": "",
"policySetDefinitionName": "",
"policySetDefinitionOwner": "",
"policySetDefinitionParameters": "",
"policySetDefinitionVersion": "",
"resourceGroup": "RG-Tags",
"resourceId": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Microsoft.Network/virtualNetworks/RG-Tags-vnet",
"resourceLocation": "westus2",
"resourceTags": "tbd",
"resourceType": "Microsoft.Network/virtualNetworks",
"subscriptionId": "{subscriptionId}",
"timestamp": "2020-07-15T08:37:07.901911+00:00"
}
]
مثال: الحصول على الأحداث المتعلقة بموارد الشبكة الظاهرية غير المتوافقة التي حدثت بعد تاريخ محدد.
az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'" --from '2020-07-14T00:00:00Z'
[
{
"complianceReasonCode": "",
"complianceState": "NonCompliant",
"effectiveParameters": "",
"isCompliant": false,
"managementGroupIds": "{managementgroupId}",
"odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"odataid": null,
"policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8",
"policyAssignmentName": "e0704696df5e4c3c81c873e8",
"policyAssignmentOwner": "tbd",
"policyAssignmentParameters": "",
"policyAssignmentScope": "/subscriptions/{subscriptionId}",
"policyAssignmentVersion": "",
"policyDefinitionAction": "audit",
"policyDefinitionCategory": "tbd",
"policyDefinitionGroupNames": [
""
],
"policyDefinitionId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
"policyDefinitionName": "2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
"policyDefinitionReferenceId": "",
"policyDefinitionVersion": "",
"policyEvaluationDetails": null,
"policySetDefinitionCategory": "",
"policySetDefinitionId": "",
"policySetDefinitionName": "",
"policySetDefinitionOwner": "",
"policySetDefinitionParameters": "",
"policySetDefinitionVersion": "",
"resourceGroup": "RG-Tags",
"resourceId": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Microsoft.Network/virtualNetworks/RG-Tags-vnet",
"resourceLocation": "westus2",
"resourceTags": "tbd",
"resourceType": "Microsoft.Network/virtualNetworks",
"subscriptionId": "{subscriptionId}",
"timestamp": "2020-07-15T08:37:07.901911+00:00"
}
]
Azure PowerShell
تتوفر الوحدة النمطية Azure PowerShell لسياسة Azure في معرض PowerShell باسم Az.PolicyInsights. باستخدام PowerShellGet، يمكنك تثبيت الوحدة النمطية باستخدام Install-Module -Name Az.PolicyInsights (تأكد من تثبيت أحدث إصدار من Azure PowerShell ):
# Install from PowerShell Gallery via PowerShellGet
Install-Module -Name Az.PolicyInsights
# Import the downloaded module
Import-Module Az.PolicyInsights
# Login with Connect-AzAccount if not using Cloud Shell
Connect-AzAccount
تحتوي الوحدة النمطية على cmdlets التالية:
Get-AzPolicyStateSummaryGet-AzPolicyStateGet-AzPolicyEventGet-AzPolicyRemediationRemove-AzPolicyRemediationStart-AzPolicyRemediationStop-AzPolicyRemediation
مثال: الحصول على ملخص الحالة لأعلى نهج معين يحتوي على أكبر عدد من الموارد غير المتوافقة.
PS> Get-AzPolicyStateSummary -Top 1
NonCompliantResources : 15
NonCompliantPolicies : 1
PolicyAssignments : {/subscriptions/{subscriptionId}/resourcegroups/RG-Tags/providers/micros
oft.authorization/policyassignments/37ce239ae4304622914f0c77}
مثال: الحصول على سجل الحالة لأحدث مورد تم تقييمه (يكون الإعداد الافتراضي حسب الطابع الزمني بترتيب تنازلي).
PS> Get-AzPolicyState -Top 1
Timestamp : 5/22/2018 3:47:34 PM
ResourceId : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
crosoft.Network/networkInterfaces/linux316
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
ComplianceState : NonCompliant
SubscriptionId : {subscriptionId}
ResourceType : /Microsoft.Network/networkInterfaces
ResourceLocation : westus2
ResourceGroup : RG-Tags
ResourceTags : tbd
PolicyAssignmentName : 37ce239ae4304622914f0c77
PolicyAssignmentOwner : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction : deny
PolicyDefinitionCategory : tbd
مثال: الحصول على تفاصيل لجميع موارد الشبكة الافتراضية غير المتوافقة.
PS> Get-AzPolicyState -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'"
Timestamp : 5/22/2018 4:02:20 PM
ResourceId : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
crosoft.Network/virtualNetworks/RG-Tags-vnet
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
ComplianceState : NonCompliant
SubscriptionId : {subscriptionId}
ResourceType : /Microsoft.Network/virtualNetworks
ResourceLocation : westus2
ResourceGroup : RG-Tags
ResourceTags : tbd
PolicyAssignmentName : 37ce239ae4304622914f0c77
PolicyAssignmentOwner : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction : deny
PolicyDefinitionCategory : tbd
مثال: الحصول على الأحداث المتعلقة بموارد الشبكة الظاهرية غير المتوافقة التي حدثت بعد تاريخ محدد، والتحويل إلى كائن CSV، والتصدير إلى ملف.
$policyEvents = Get-AzPolicyEvent -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'" -From '2020-09-19'
$policyEvents | ConvertTo-Csv | Out-File 'C:\temp\policyEvents.csv'
يبدو إخراج الكائن $policyEvents مثل الإخراج التالي:
Timestamp : 9/19/2020 5:18:53 AM
ResourceId : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
crosoft.Network/virtualNetworks/RG-Tags-vnet
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
ComplianceState : NonCompliant
SubscriptionId : {subscriptionId}
ResourceType : /Microsoft.Network/virtualNetworks
ResourceLocation : eastus
ResourceGroup : RG-Tags
ResourceTags : tbd
PolicyAssignmentName : 37ce239ae4304622914f0c77
PolicyAssignmentOwner : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction : deny
PolicyDefinitionCategory : tbd
TenantId : {tenantId}
PrincipalOid : {principalOid}
يمكن استخدام الحقل PrincipalOid للحصول على مستخدم معين باستخدام cmdlet Get-AzADUserAzure PowerShell . استبدل {principalOid} بالاستجابة التي تحصل عليها من المثال السابق.
PS> (Get-AzADUser -ObjectId {principalOid}).DisplayName
Trent Baker
سجلات Azure Monitor
إذا كانت لديك مساحة عمل Log Analytics مع AzureActivityحل Activity Log Analytics المرتبط باشتراكك، فيمكنك أيضا عرض نتائج عدم الامتثال من تقييم الموارد الجديدة والمحدثة باستخدام استعلامات Kusto البسيطة والجدول AzureActivity . باستخدام التفاصيل الموجودة في سجلات Azure Monitor، يمكن تكوين التنبيهات لمراقبة عدم الامتثال.
الخطوات التالية
- راجع الأمثلة في عينات نهج Azure.
- اطلع على تصميم تعريف Azure Policy.
- اطلع على فهم تأثيرات النهج.
- فهم كيفية إنشاء السياسات برمجيا.
- تعرّف على كيفية معالجة الموارد غير الممتثلة.
- راجع ماهية مجموعة الإدارة باستخدام تنظيم مواردك باستخدام مجموعات إدارة Azure.