التشغيل السريع: تعيين نهج لتحديد الموارد غير المتوافقة باستخدام Azure CLI

الخطوة الأولى في فهم التوافق في Azure هي تحديد حالة مواردك. في هذا التشغيل السريع، يمكنك إنشاء تعيين نهج لتحديد الموارد غير المتوافقة باستخدام واجهة برمجة تطبيقات REST. يتم تعيين النهج إلى مجموعة موارد ويدقق الأجهزة الظاهرية التي لا تستخدم الأقراص المدارة. بعد إنشاء تعيين النهج، يمكنك تحديد الأجهزة الظاهرية غير المتوافقة.

يستخدم الدليل Azure CLI لإنشاء نهج تعيين وتعريف الموارد غير المتوافقة في بيئة Azure. تستخدم الأمثلة في هذه المقالة أوامر PowerShell وAzure CLI az rest . يمكنك أيضا تشغيل az rest الأوامر من Bash shell مثل Git Bash.

المتطلبات الأساسية

مراجعة بناء جملة واجهة برمجة تطبيقات REST

هناك عنصران لتشغيل أوامر REST API: REST API URI و نص الطلب. للحصول على معلومات، انتقل إلى تعيينات النهج - إنشاء.

يوضح المثال التالي بناء جملة REST API URI لإنشاء تعريف نهج.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2023-04-01
  • scope: يحدد النطاق الموارد أو مجموعة الموارد التي يتم فرض تعيين النهج عليها. ويمكن أن تتراوح من مجموعة إدارة إلى مورد فردي. استبدل {scope} بأحد الأنماط التالية:
    • مجموعة الإدارة: /providers/Microsoft.Management/managementGroups/{managementGroup}
    • الاشتراك: /subscriptions/{subscriptionId}
    • مجموعة الموارد: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
    • المورّد: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}
  • policyAssignmentName: إنشاء اسم تعيين النهج لتعيينك. يتم تضمين الاسم في خاصية تعيين النهج policyAssignmentId .

المثال التالي هو JSON لإنشاء ملف نص الطلب.

{
  "properties": {
    "displayName": "",
    "description": "",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/11111111-1111-1111-1111-111111111111",
    "nonComplianceMessages": [
      {
        "message": ""
      }
    ]
  }
}
  • displayName: اسم العرض لتعيين النهج.
  • description: يمكن استخدامها لإضافة سياق حول تعيين النهج.
  • policyDefinitionId: معرف تعريف النهج الذي لإنشاء التعيين.
  • nonComplianceMessages: تعيين الرسالة لاستخدامها عند تقييم مورد على أنه غير متوافق. لمزيد من المعلومات، يرجى الاطلاع على تعيين رسائل عدم التوافق.

قم بالاتصال بـ Azure

من جلسة Visual Studio Code الطرفية، اتصل ب Azure. إذا كان لديك أكثر من اشتراك واحد، فقم بتشغيل الأوامر لتعيين السياق إلى اشتراكك. استبدل <subscriptionID> بمعرف اشتراك Azure الخاص بك.

az login

# Run these commands if you have multiple subscriptions
az account list --output table
az account set --subscription <subscriptionID>

استخدم az login حتى إذا كنت تستخدم PowerShell لأن الأمثلة تستخدم أوامر Azure CLI az rest .

إنشاء مهمة للنهج

في هذا المثال، يمكنك إنشاء تعيين نهج وتعيين تدقيق الأجهزة الظاهرية التي لا تستخدم تعريف الأقراص المدارة .

مطلوب نص طلب لإنشاء التعيين. احفظ JSON التالي في ملف يسمى request-body.json.

{
  "properties": {
    "displayName": "Audit VM managed disks",
    "description": "Policy assignment to resource group scope created with REST API",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
    "nonComplianceMessages": [
      {
        "message": "Virtual machines should use managed disks"
      }
    ]
  }
}

لإنشاء تعيين النهج الخاص بك في نطاق مجموعة موارد موجود، استخدم REST API URI التالي مع ملف لنص الطلب. الاستبدال {subscriptionId} و{resourceGroupName} وكذلك من خلال القيم الخاصة بك. يعرض الأمر إخراج JSON في shell الخاص بك.

az rest --method put --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01 --body `@request-body.json

في PowerShell، هناك حاجة إلى backtick (`) للهروب من at sign (@) لتحديد اسم ملف. في Bash shell مثل Git Bash، احذف backtick.

للحصول على معلومات، انتقل إلى تعيينات النهج - إنشاء.

تحديد الموارد غير المتوافقة

تستغرق حالة التوافق لتعيين نهج جديد بضع دقائق لتصبح نشطة وتوفر نتائج حول حالة النهج. يمكنك استخدام REST API لعرض الموارد غير المتوافقة لتعيين النهج هذا والإخراج في JSON.

لتحديد الموارد غير المتوافقة، قم بتشغيل الأمر التالي. استبدل {subscriptionId} و {resourceGroupName} بالقيم المستخدمة عند إنشاء تعيين النهج.

az rest --method post --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01 --uri-parameters `$filter="complianceState eq 'NonCompliant' and PolicyAssignmentName eq 'audit-vm-managed-disks'"

filter استعلامات الموارد التي يتم تقييمها على أنها غير متوافقة مع تعريف النهج المسمى audit-vm-managed-disks التي قمت بإنشائها مع تعيين النهج. مرة أخرى، لاحظ استخدام backtick للهروب من علامة الدولار ($) في عامل التصفية. بالنسبة لعميل Bash، خط مائل عكسي (\) هو حرف إلغاء شائع.

تُشبه نتائجك المثال التالي:

{
  "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
  "@odata.count": 1,
  "@odata.nextLink": null,
  "value": [
    {
      "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
      "@odata.id": null,
      "complianceReasonCode": "",
      "complianceState": "NonCompliant",
      "effectiveParameters": "",
      "isCompliant": false,
      "managementGroupIds": "",
      "policyAssignmentId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks",
      "policyAssignmentName": "audit-vm-managed-disks",
      "policyAssignmentOwner": "tbd",
      "policyAssignmentParameters": "",
      "policyAssignmentScope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
      "policyAssignmentVersion": "",
      "policyDefinitionAction": "audit",
      "policyDefinitionCategory": "tbd",
      "policyDefinitionGroupNames": [
        ""
      ],
      "policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
      "policyDefinitionName": "06a78e20-9358-41c9-923c-fb736d382a4d",
      "policyDefinitionReferenceId": "",
      "policyDefinitionVersion": "1.0.0",
      "policySetDefinitionCategory": "",
      "policySetDefinitionId": "",
      "policySetDefinitionName": "",
      "policySetDefinitionOwner": "",
      "policySetDefinitionParameters": "",
      "policySetDefinitionVersion": "",
      "resourceGroup": "{resourceGroupName}",
      "resourceId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmName}>",
      "resourceLocation": "westus3",
      "resourceTags": "tbd",
      "resourceType": "Microsoft.Compute/virtualMachines",
      "subscriptionId": "{subscriptionId}",
      "timestamp": "2024-03-26T02:19:28.3720191Z"
    }
  ]
}

لمزيد من المعلومات، انتقل إلى حالات النهج - قائمة نتائج الاستعلام لمجموعة الموارد.

تنظيف الموارد

لإزالة تعيين النهج، استخدم الأمر التالي. استبدل {subscriptionId} و {resourceGroupName} بالقيم المستخدمة عند إنشاء تعيين النهج. يعرض الأمر إخراج JSON في shell الخاص بك.

az rest --method delete --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01

يمكنك التحقق من حذف تعيين النهج باستخدام الأمر التالي. يتم عرض رسالة في shell الخاص بك.

az rest --method get --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01
The policy assignment 'audit-vm-managed-disks' is not found.

لمزيد من المعلومات، انتقل إلى تعيينات النهج - حذف وتعيينات النهج - الحصول عليها.

الخطوات التالية

في هذا التشغيل السريع، قمت بتعيين تعريف نهج لتحديد الموارد غير المتوافقة في بيئة Azure.

لمعرفة المزيد حول كيفية تعيين النهج التي تتحقق من توافق الموارد، تابع البرنامج التعليمي.