استخدام نهج Azure لفرض تنفيذ مهمة على عامل سجل تشغيل مختلط

هام

تم إيقاف عامل دفتر التشغيل المختلط للمستخدم المستند إلى عامل Azure Automation (Windows وLinux) في 31 أغسطس 2024 ولم يعد مدعوما. اتبع الإرشادات حول كيفية الترحيل من عامل دفتر تشغيل مختلط قائم على عامل موجود إلى عمال مختلطين مستندين إلى ملحق.

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

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

تم تضمين تعريف نهج Azure مخصص في هذه المقالة لمساعدتك في التحكم في هذه الأنشطة باستخدام عمليات واجهة برمجة تطبيقات REST للتنفيذ التلقائي التالية. على وجه التحديد:

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

الأذونات المطلوبة

يجب أن تكون عضوًا في دور المالك على مستوى الاشتراك للحصول على إذن لموارد نهج Azure.

إنشاء تعريف نهج وتعيينه

نقوم هنا بإنشاء قاعدة النهج ثم تعيينها إلى مجموعة إدارة أو اشتراك، وتحديد مجموعة موارد في الاشتراك اختياريًا. إذا لم تكن على دراية بلغة النهج، يمكنك الرجوع إلى بنية تعريف النهج لكيفية هيكلة تعريف النهج.

  1. استخدم القصاصة البرمجية لـ JSON التالية لإنشاء ملف JSON باسم AuditAutomationHRWJobExecution.json.

     {
       "properties": {
         "displayName": "Enforce job execution on Automation Hybrid Runbook Worker",
         "description": "Enforce job execution on Hybrid Runbook Workers in your Automation account.",
         "mode": "all",
         "parameters": {
           "effectType": {
             "type": "string",
             "defaultValue": "Deny",
             "allowedValues": [
                "Deny",
                "Disabled"
             ],
             "metadata": {
               "displayName": "Effect",
               "description": "Enable or disable execution of the policy"
             }
           }
         },
         "policyRule": {
           "if": {
             "anyOf": [
               {
                 "allOf": [
                   {
                     "field": "type",
                     "equals": "Microsoft.Automation/automationAccounts/jobs"
                   },
                   {
                     "value": "[length(field('Microsoft.Automation/automationAccounts/jobs/runOn'))]",
                     "less": 1
                   }
                 ]
               },
               {
                 "allOf": [
                   {
                     "field": "type",
                     "equals": "Microsoft.Automation/automationAccounts/webhooks"
                   },
                   {
                     "value": "[length(field('Microsoft.Automation/automationAccounts/webhooks/runOn'))]",
                     "less": 1
                   }
                 ]
               },
               {
                 "allOf": [
                   {
                     "field": "type",
                     "equals": "Microsoft.Automation/automationAccounts/jobSchedules"
                   },
                   {
                     "value": "[length(field('Microsoft.Automation/automationAccounts/jobSchedules/runOn'))]",
                     "less": 1
                   }
                 ]
               }
             ]
           },
           "then": {
             "effect": "[parameters('effectType')]"
           }
         }
       }
     }
    
  2. قم بتشغيل أمر Azure PowerShell أو Azure CLI التالي لإنشاء تعريف نهج باستخدام ملف AuditAutomationHRWJobExecution.json.

     az policy definition create --name 'audit-enforce-jobs-on-automation-hybrid-runbook-workers' --display-name 'Audit Enforce Jobs on Automation Hybrid Runbook Workers' --description 'This policy enforces job execution on Automation account user Hybrid Runbook Workers.' --rules 'AuditAutomationHRWJobExecution.json' --mode All
    

    يقوم الأمر بإنشاء تعريف نهج يسمى Audit Enforce Jobs on Automation Hybrid Runbook Workers. لمزيد من المعلومات حول المعلمات الأخرى التي يمكنك استخدامها، راجع az policy definition create.

    عند الاستدعاء بدون معلمات الموقع، يتم تعيين az policy definition create افتراضيًا على حفظ تعريف النهج في الاشتراك المحدد لسياق جلسات العمل. لحفظ التعريف إلى موقع مختلف، استخدم المعلمات التالية:

    • subscription - حفظ إلى اشتراك مختلف. يتطلب قيمة GUID لمعرّف الاشتراك أو قيمة سلسلة لاسم الاشتراك.
    • management-group - حفظ إلى مجموعة إدارة. يتطلب قيمة سلسلة.

  1. بعد إنشاء تعريف النهج الخاص بك، يمكنك إنشاء تعيين نهج عن طريق تشغيل الأوامر التالية:

    az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'
    

    تعمل معلمة النطاق في az policy assignment create مع مجموعة إدارة، أو اشتراك، أو مجموعة موارد، أو مورد واحد. تستخدم المعلمة مسار مورد كامل. يكون نمط النطاق لكل حاوية على النحو التالي. استبدل {rName}، و{rgName}، و{subId}، و{mgName} باسم المورد، واسم مجموعة الموارد، ومعرف الاشتراك، واسم مجموعة الإدارة، على التوالي. سيتم استبدال {rType} بـ نوع المورد للمورد، مثل Microsoft.Compute/virtualMachines لجهاز ظاهري.

    • المورّد - /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • مجموعة الموارد - /subscriptions/{subID}/resourceGroups/{rgName}
    • الاشتراك - /subscriptions/{subID}
    • مجموعة الإدارة - /providers/Microsoft.Management/managementGroups/{mgName}

    يمكنك الحصول على معرف تعريف نهج Azure باستخدام PowerShell باستخدام الأمر التالي:

    az policy definition show --name 'Audit Enforce Jobs on Automation Hybrid Runbook Workers'
    

    يجب أن يشبه معرف تعريف النهج لتعريف النهج الذي قمت بإنشائه المثال التالي:

    "/subscription/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Enforce Jobs on Automation Hybrid Runbook Workers"
    

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. قم بتشغيل خدمة Azure Policy في مدخل Microsoft Azure من خلال تحديد "All services"، ثم ابحث عن "Policy" وحددها.

  3. حدد "Compliance" في الجانب الأيسر من الصفحة. ثم حدد موقع تعيين النهج الذي قمت بإنشائه.

    لقطة شاشة للوحة معلومات نهج Azure.

عند تنفيذ إحدى عمليات REST للتنفيذ التلقائي دون الرجوع إلى "عامل سجل تشغيل مختلط" في نص الطلب، يتم إرجاع رمز استجابة 403 مع خطأ مشابه للمثال التالي يشير إلى محاولة تنفيذ العملية في بيئة الاختبار المعزولة في Azure:

{
  "error": {
    "code": "RequestDisallowedByPolicy",
    "target": "Start_VMS",
    "message": "Resource 'Start_VMS' was disallowed by policy. Policy identifiers: '[{\"policyAssignment\":{\"name\":\"Enforce Jobs on Automation Hybrid Runbook Workers\",\"id\":\"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MAIC-RG/providers/Microsoft.Authorization/policyAssignments/fd5e2cb3842d4eefbc857917\"},\"policyDefinition\":{\"name\":\"Enforce Jobs on Automation Hybrid Runbook Workers\",\"id\":\"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/policyDefinitions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f\"}}]'.",
    "additionalInfo": [
      {
        "type": "PolicyViolation",
        "info": {
          "policyDefinitionDisplayName": "Enforce Jobs on Automation Hybrid Runbook Workers",
          "evaluationDetails": {
            "evaluatedExpressions": [
              {
                "result": "True",
                "expressionKind": "Field",
                "expression": "type",
                "path": "type",
                "expressionValue": "Microsoft.Automation/automationAccounts/jobs",
                "targetValue": "Microsoft.Automation/automationAccounts/jobs",
                "operator": "Equals"
              },
              {
                "result": "True",
                "expressionKind": "Value",
                "expression": "[length(field('Microsoft.Automation/automationAccounts/jobs/runOn'))]",
                "expressionValue": 0,
                "targetValue": 1,
                "operator": "Less"
              }
            ]
          },
          "policyDefinitionId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/policyDefinitions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
          "policyDefinitionName": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
          "policyDefinitionEffect": "Deny",
          "policyAssignmentId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MAIC-RG/providers/Microsoft.Authorization/policyAssignments/fd5e2cb3842d4eefbc857917",
          "policyAssignmentName": "fd5e2cb3842d4eefbc857917",
          "policyAssignmentDisplayName": "Enforce Jobs on Automation Hybrid Runbook Workers",
          "policyAssignmentScope": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MAIC-RG",
          "policyAssignmentParameters": {}
        }
      }
    ]
  }
}

يتم أيضًا تسجيل العملية التي تمت محاولتها في سجل نشاط حساب التنفيذ التلقائي، على غرار المثال التالي.

مثال على سجل نشاط لفشل تنفيذ مهمة.

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

للعمل مع دفاتر التشغيل، راجع إدارة دفاتر التشغيل في التنفيذ التلقائي في Azure.