التشغيل السريع: إنشاء تعيين نهج لتحديد الموارد غير المتوافقة باستخدام قالب ARM
في هذا التشغيل السريع، يمكنك استخدام قالب Azure Resource Manager (قالب ARM) لإنشاء تعيين نهج يتحقق من توافق المورد مع نهج Azure. يتم تعيين النهج إلى مجموعة موارد ويدقق الأجهزة الظاهرية التي لا تستخدم الأقراص المدارة. بعد إنشاء تعيين النهج، يمكنك تحديد الأجهزة الظاهرية غير المتوافقة.
قالب Azure Resource Manager هو ملف JavaScript Object Notation (JSON) الذي يحدد البنية الأساسية والتكوين لمشروعك. يستخدم القالب عبارات توضيحية. يمكنك وصف النشر المقصود دون كتابة تسلسل أوامر البرمجة لإنشاء النشر.
إذا كانت بيئتك تلبي المتطلبات الأساسية وكنت معتاداً على استخدام قوالب "ARM"، فحدد زر "Deploy to Azure". سيتم فتح القالب في مدخل Azure.
عند تعيين نهج مضمن أو تعريف مبادرة، من الاختياري الإشارة إلى إصدار. تعيينات النهج للتعريفات المضمنة افتراضيا إلى أحدث إصدار وترث تلقائيا تغييرات الإصدار الثانوية ما لم يتم تحديد خلاف ذلك.
المتطلبات الأساسية
- إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.
- Azure PowerShell أو Azure CLI.
- Visual Studio Code وأدوات Azure Resource Manager (ARM).
Microsoft.PolicyInsights
يجب أن يكون مسجلا في اشتراك Azure الخاص بك. لتسجيل موفر موارد، يجب أن يكون لديك إذن لتسجيل موفري الموارد. يتم تضمين هذا الإذن في أدوار المساهم والمالك.- مجموعة موارد مع جهاز ظاهري واحد على الأقل لا يستخدم الأقراص المدارة.
مراجعة القالب
ينشئ قالب ARM تعيين نهج لنطاق مجموعة موارد ويعين تعريف النهج المضمن تدقيق الأجهزة الظاهرية التي لا تستخدم الأقراص المدارة.
إنشاء قالب ARM التالي ك policy-assignment.json.
- افتح Visual Studio Code وحدد File>New Text File.
- انسخ قالب ARM والصقه في Visual Studio Code.
- حدد حفظ الملف>واستخدم اسم الملف policy-assignment.json.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"policyAssignmentName": {
"type": "string",
"defaultValue": "audit-vm-managed-disks",
"metadata": {
"description": "Policy assignment name used in assignment's resource ID"
}
},
"policyDefinitionID": {
"type": "string",
"defaultValue": "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
"metadata": {
"description": "Policy definition ID"
}
},
"policyDisplayName": {
"type": "string",
"defaultValue": "Audit VM managed disks",
"metadata": {
"description": "Display name for Azure portal"
}
}
},
"resources": [
{
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2023-04-01",
"name": "[parameters('policyAssignmentName')]",
"properties": {
"policyDefinitionId": "[parameters('policyDefinitionID')]",
"description": "Policy assignment to resource group scope created with ARM template",
"displayName": "[parameters('policyDisplayName')]",
"nonComplianceMessages": [
{
"message": "Virtual machines should use managed disks"
}
]
}
}
],
"outputs": {
"assignmentId": {
"type": "string",
"value": "[resourceId('Microsoft.Authorization/policyAssignments', parameters('policyAssignmentName'))]"
}
}
}
نوع المورد المحدد في قالب ARM هو Microsoft.Authorization/policyAssignments.
يستخدم القالب ثلاث معلمات لنشر تعيين النهج:
policyAssignmentName
ينشئ تعيين النهج المسمى audit-vm-managed-disks.policyDefinitionID
يستخدم معرف تعريف النهج المضمن. كمرجع، الأوامر للحصول على المعرف موجودة في القسم لنشر القالب.policyDisplayName
ينشئ اسم عرض مرئيا في مدخل Microsoft Azure.
لمزيد من المعلومات حول ملفات قالب ARM:
- للعثور على المزيد من نماذج قالب ARM، انتقل إلى استعراض نماذج التعليمات البرمجية.
- لمعرفة المزيد حول مرجع القالب الخاص بالنشر، انتقل إلى مرجع قالب Azure.
- لمعرفة كيفية تطوير قوالب ARM، انتقل إلى وثائق قالب ARM.
- للتعرف على عمليات النشر على مستوى الاشتراك، انتقل إلى عمليات توزيع الاشتراك باستخدام قوالب ARM.
نشر قالب ARM
يمكنك نشر قالب ARM مع Azure PowerShell أو Azure CLI.
من جلسة Visual Studio Code الطرفية، اتصل ب Azure. إذا كان لديك أكثر من اشتراك واحد، فقم بتشغيل الأوامر لتعيين السياق إلى اشتراكك. استبدل <subscriptionID>
بمعرف اشتراك Azure الخاص بك.
Connect-AzAccount
# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>
يمكنك التحقق مما إذا كان Microsoft.PolicyInsights
مسجلا. إذا لم يكن كذلك، يمكنك تشغيل أمر لتسجيل موفر الموارد.
Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
Select-Object -Property ResourceTypes, RegistrationState
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
لمزيد من المعلومات، انتقل إلى Get-AzResourceProvider و Register-AzResourceProvider.
تعرض الأوامر التالية قيمة المعلمة policyDefinitionID
:
(Get-AzPolicyDefinition |
Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }).ResourceId
تنشر الأوامر التالية تعريف النهج إلى مجموعة الموارد الخاصة بك. استبدل <resourceGroupName>
باسم مجموعة الموارد:
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'
$deployparms = @{
Name = 'PolicyDeployment'
ResourceGroupName = $rg.ResourceGroupName
TemplateFile = 'policy-assignment.json'
}
New-AzResourceGroupDeployment @deployparms
يخزن $rg
المتغير خصائص مجموعة الموارد. $deployparms
يستخدم المتغير splatting لإنشاء قيم المعلمات وتحسين قابلية القراءة. New-AzResourceGroupDeployment
يستخدم الأمر قيم المعلمات المعرفة في $deployparms
المتغير .
Name
هو اسم النشر المعروض في الإخراج وفي Azure لتوزيع مجموعة الموارد.ResourceGroupName
يستخدم الخاصية$rg.ResourceGroupName
للحصول على اسم مجموعة الموارد الخاصة بك حيث يتم تعيين النهج.TemplateFile
يحدد اسم قالب ARM وموقعه على الكمبيوتر المحلي.
يمكنك التحقق من نشر تعيين النهج باستخدام الأمر التالي:
يستخدم الأمر الخاصية $rg.ResourceId
للحصول على معرف مجموعة الموارد.
Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Name : audit-vm-managed-disks
ResourceId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
ResourceName : audit-vm-managed-disks
ResourceGroupName : {resourceGroupName}
ResourceType : Microsoft.Authorization/policyAssignments
SubscriptionId : {subscriptionId}
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
Properties : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.Policy.PsPolicyAssignmentProperties
لمزيد من المعلومات، انتقل إلى Get-AzPolicyAssignment.
تحديد الموارد غير المتوافقة
بعد نشر تعيين النهج، يتم تدقيق الأجهزة الظاهرية التي يتم نشرها إلى مجموعة الموارد للامتثال لنهج القرص المدار.
تستغرق حالة التوافق لتعيين نهج جديد بضع دقائق لتصبح نشطة وتوفر نتائج حول حالة النهج.
$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}
Get-AzPolicyState @complianceparms
$complianceparms
ينشئ المتغير قيم المعلمات المستخدمة في Get-AzPolicyState
الأمر .
ResourceGroupName
يحصل على اسم مجموعة الموارد من الخاصية$rg.ResourceGroupName
.PolicyAssignmentName
يحدد الاسم المستخدم عند إنشاء تعيين النهج.Filter
يستخدم تعبيرا للبحث عن الموارد غير المتوافقة مع تعيين النهج.
تشبه نتائجك المثال التالي وتظهر ComplianceState
NonCompliant
:
Timestamp : 2/26/2024 19:02:56
ResourceId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmId}
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks
PolicyDefinitionId : /providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d
IsCompliant : False
SubscriptionId : {subscriptionId}
ResourceType : Microsoft.Compute/virtualMachines
ResourceLocation : {location}
ResourceGroup : {resourceGroupName}
ResourceTags : tbd
PolicyAssignmentName : audit-vm-managed-disks
PolicyAssignmentOwner : tbd
PolicyAssignmentScope : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}
PolicyDefinitionName : 06a78e20-9358-41c9-923c-fb736d382a4d
PolicyDefinitionAction : audit
PolicyDefinitionCategory : tbd
ManagementGroupIds : {managementGroupId}
ComplianceState : NonCompliant
AdditionalProperties : {[complianceReasonCode, ]}
لمزيد من المعلومات، انتقل إلى Get-AzPolicyState.
تنظيف الموارد
Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
لتسجيل الخروج من جلسة عمل Azure PowerShell:
Disconnect-AzAccount
الخطوات التالية
في هذا التشغيل السريع، قمت بتعيين تعريف نهج لتحديد الموارد غير المتوافقة في بيئة Azure.
لمعرفة المزيد حول كيفية تعيين النهج التي تتحقق من توافق الموارد، تابع البرنامج التعليمي.