التشغيل السريع: إنشاء تعيين نهج لتحديد الموارد غير المتوافقة باستخدام ملف Bicep
في هذا التشغيل السريع، يمكنك استخدام ملف Bicep لإنشاء تعيين نهج يتحقق من توافق المورد مع نهج Azure. يتم تعيين النهج إلى مجموعة موارد ويدقق الأجهزة الظاهرية التي لا تستخدم الأقراص المدارة. بعد إنشاء تعيين النهج، يمكنك تحديد الأجهزة الظاهرية غير المتوافقة.
Bicep هي لغة المجال المخصصة (DSL) التي تستخدم بناء الجملة التعريفي لتوزيع موارد Azure. توفر بناء جملة مختصر، وسلامة موثوقة من النوع، ودعمًا لإعادة استخدام التعليمة البرمجية. تقدم Bicep أفضل تجربة تأليف لحلول البنية الأساسية باعتبارها تعليمة برمجية في Azure.
المتطلبات الأساسية
- إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.
- Bicep.
- Azure PowerShell أو Azure CLI.
- Visual Studio Code وملحق Bicep ل Visual Studio Code.
Microsoft.PolicyInsights
يجب أن يكون مسجلا في اشتراك Azure الخاص بك. لتسجيل موفر موارد، يجب أن يكون لديك إذن لتسجيل موفري الموارد. يتم تضمين هذا الإذن في أدوار المساهم والمالك.- مجموعة موارد مع جهاز ظاهري واحد على الأقل لا يستخدم الأقراص المدارة.
مراجعة ملف Bicep
ينشئ ملف Bicep تعيين نهج لنطاق مجموعة موارد ويعين تعريف النهج المضمن تدقيق الأجهزة الظاهرية التي لا تستخدم الأقراص المدارة.
إنشاء ملف Bicep التالي ك policy-assignment.bicep.
- افتح Visual Studio Code وحدد File>New Text File.
- انسخ ملف Bicep والصقه في Visual Studio Code.
- حدد File>Save واستخدم filename policy-assignment.bicep.
param policyAssignmentName string = 'audit-vm-managed-disks'
param policyDefinitionID string = '/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d'
param policyDisplayName string = 'Audit VM managed disks'
resource assignment 'Microsoft.Authorization/policyAssignments@2023-04-01' = {
name: policyAssignmentName
scope: resourceGroup()
properties: {
policyDefinitionId: policyDefinitionID
description: 'Policy assignment to resource group scope created with Bicep file'
displayName: policyDisplayName
nonComplianceMessages: [
{
message: 'Virtual machines should use managed disks'
}
]
}
}
output assignmentId string = assignment.id
نوع المورد المحدد في ملف Bicep هو Microsoft.Authorization/policyAssignments.
يستخدم ملف Bicep ثلاث معلمات لنشر تعيين النهج:
policyAssignmentName
ينشئ تعيين النهج المسمى audit-vm-managed-disks.policyDefinitionID
يستخدم معرف تعريف النهج المضمن. كمرجع، الأوامر للحصول على المعرف موجودة في القسم لنشر القالب.policyDisplayName
ينشئ اسم عرض مرئيا في مدخل Microsoft Azure.
لمزيد من المعلومات حول ملفات Bicep:
- للعثور على المزيد من نماذج Bicep، انتقل إلى استعراض نماذج التعليمات البرمجية.
- لمعرفة المزيد حول مرجع القالب الخاص بالنشر، انتقل إلى مرجع قالب Azure.
- لمعرفة كيفية تطوير ملفات Bicep، انتقل إلى وثائق Bicep.
- للتعرف على عمليات النشر على مستوى الاشتراك، انتقل إلى عمليات توزيع الاشتراك مع ملفات Bicep.
نشر ملف Bicep
يمكنك نشر ملف Bicep باستخدام 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.bicep'
}
New-AzResourceGroupDeployment @deployparms
يخزن $rg
المتغير خصائص مجموعة الموارد. $deployparms
يستخدم المتغير splatting لإنشاء قيم المعلمات وتحسين قابلية القراءة. New-AzResourceGroupDeployment
يستخدم الأمر قيم المعلمات المعرفة في $deployparms
المتغير .
Name
هو اسم النشر المعروض في الإخراج وفي Azure لتوزيع مجموعة الموارد.ResourceGroupName
يستخدم الخاصية$rg.ResourceGroupName
للحصول على اسم مجموعة الموارد الخاصة بك حيث يتم تعيين النهج.TemplateFile
يحدد اسم ملف Bicep وموقعه على الكمبيوتر المحلي.
يمكنك التحقق من نشر تعيين النهج باستخدام الأمر التالي:
يستخدم الأمر الخاصية $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/20/2024 18:55:45
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.
لمعرفة المزيد حول كيفية تعيين النهج التي تتحقق من توافق الموارد، تابع البرنامج التعليمي.