Share via


Feladatvégrehajtás kényszerítése hibrid runbook-feldolgozón az Azure Policy használatával

Fontos

Az Azure Automation ügynökalapú (Windows- és Linux-) felhasználói hibrid runbook-feldolgozója 2024. augusztus 31-én megszűnik, és ezt követően nem lesz támogatott. 2024. augusztus 31. előtt be kell fejeznie a meglévő ügynökalapú felhasználói hibrid runbook-feldolgozókról bővítményalapú feldolgozókra történő migrálást. Ezenkívül 2023. november 1-től nem lenne lehetséges új ügynökalapú hibrid feldolgozók létrehozása. További információ.

A runbook hibrid runbook-feldolgozón való indítása egy Futtatás lehetőséggel történik, amely lehetővé teszi egy hibrid runbook-feldolgozó csoport nevének megadását az Azure Portalról való indításkor az Azure PowerShell vagy a REST API használatával. Ha egy csoport meg van adva, a csoport egyik feldolgozója lekéri és futtatja a runbookot. Ha a runbook nem adja meg ezt a beállítást, az Azure Automation az Azure-tesztkörnyezetben futtatja a runbookot.

A szervezet bármely tagja, aki tagja az Automation-feladatkezelőnek vagy magasabb szintűnek, létrehozhat runbook-feladatokat. Az Automation-fiók hibrid runbook-feldolgozó csoportját célzó runbook-végrehajtás kezeléséhez használhatja az Azure Policyt. Ez segít kikényszeríteni a szervezeti szabványokat, és biztosítani, hogy az automatizálási feladatokat a kijelöltek felügyelik és felügyelik, és senki nem hajthat végre runbookot egy Azure-tesztkörnyezetben, csak hibrid runbook-feldolgozókon.

A cikk egy egyéni Azure Policy-definíciót tartalmaz, amellyel a következő Automation REST API-műveletek segítségével szabályozhatja ezeket a tevékenységeket. Ezek konkrétan a következők:

Ez a szabályzat a runOn tulajdonságon alapul. A szabályzat ellenőrzi a tulajdonság értékét, amelynek tartalmaznia kell egy meglévő hibrid runbook-feldolgozócsoport nevét. Ha az érték null, akkor a rendszer úgy értelmezi, hogy a feladathoz, a feladatütemezéshez vagy a webhookhoz tartozó létrehozási kérés az Azure-tesztkörnyezethez készült, és a kérés megtagadva.

Permissions required

Az Azure Policy-erőforrásokhoz való engedélyhez az előfizetés szintjén a Tulajdonos szerepkör tagjának kell lennie.

A szabályzatdefiníció létrehozása és hozzárendelése

Itt megírjuk a szabályzatszabályt, majd hozzárendeljük egy felügyeleti csoporthoz vagy előfizetéshez, és opcionálisan megadunk egy erőforráscsoportot az előfizetésben. Ha még nem ismeri a szabályzatnyelvet, tekintse meg a szabályzatdefiníciók struktúráját a szabályzatdefiníció strukturálásához.

  1. Az alábbi JSON-kódrészlettel hozzon létre egy AuditAutomationHRWJobExecution.json nevű JSON-fájlt.

     {
       "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. Futtassa a következő Azure PowerShell- vagy Azure CLI-parancsot egy szabályzatdefiníció létrehozásához az AuditAutomationHRWJobExecution.json fájllal.

     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
    

    A parancs létrehoz egy naplózási kényszerítő feladatok nevű szabályzatdefiníciót az Automation hibrid runbook-feldolgozóiban. További információ a használható egyéb paraméterekről: az policy definition create.

    Helyparaméterek az policy definition create nélkül hívva alapértelmezés szerint a szabályzatdefiníciót a munkamenet-környezet kiválasztott előfizetésében menti. Ha a definíciót egy másik helyre szeretné menteni, használja a következő paramétereket:

    • előfizetés – Mentés másik előfizetésbe. Az előfizetés azonosítójának GUID-értéke vagy az előfizetés nevének sztringértéke szükséges.
    • felügyeleti csoport – Mentés felügyeleti csoportba. Sztringértéket igényel.

  1. A szabályzatdefiníció létrehozása után a következő parancsok futtatásával hozhat létre szabályzat-hozzárendelést:

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

    A hatókörparaméter az policy assignment create felügyeleti csoporttal, előfizetéssel, erőforráscsoporttal vagy egyetlen erőforrással működik. A paraméter egy teljes erőforrás-elérési utat használ. Az egyes tárolók hatókörének mintája a következő. Cserélje le {rName}a , {rgName}, {subId}és {mgName} az erőforrás nevét, az erőforráscsoport nevét, az előfizetés azonosítóját és a felügyeleti csoport nevét. {rType}az erőforrás erőforrástípusára, például Microsoft.Compute/virtualMachines egy virtuális gépre lesz lecserélve.

    • Erőforrás- /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Erőforráscsoport – /subscriptions/{subID}/resourceGroups/{rgName}
    • Előfizetés- /subscriptions/{subID}
    • Felügyeleti csoport – /providers/Microsoft.Management/managementGroups/{mgName}

    Az Azure Policy Definition AZONOSÍTÓját a PowerShell használatával szerezheti be a következő paranccsal:

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

    A létrehozott szabályzatdefiníció szabályzatdefiníció-azonosítójának az alábbi példához kell hasonlítania:

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

  1. Jelentkezzen be az Azure Portalra.

  2. Indítsa el az Azure Policy szolgáltatást az Azure Portalon a Minden szolgáltatás kiválasztásával, majd a Szabályzat keresésével és kiválasztásával.

  3. Válassza a Megfelelőség lehetőséget a lap bal oldalán. Ezután keresse meg a létrehozott szabályzat-hozzárendelést.

    Screenshot of Azure Policy dashboard.

Ha az Automation REST-műveletek egyike hibrid runbook-feldolgozóra való hivatkozás nélkül fut a kérelem törzsében, a rendszer egy 403-as válaszkódot ad vissza a következő példához hasonló hibával, amely az Azure-tesztkörnyezetben végrehajtott műveletet jelzi:

{
  "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/75475e1e-9643-4f3d-859e-055f4c31b458/resourceGroups/MAIC-RG/providers/Microsoft.Authorization/policyAssignments/fd5e2cb3842d4eefbc857917\"},\"policyDefinition\":{\"name\":\"Enforce Jobs on Automation Hybrid Runbook Workers\",\"id\":\"/subscriptions/75475e1e-9643-4f3d-859e-055f4c31b458/providers/Microsoft.Authorization/policyDefinitions/4fdffd35-fd9f-458e-9779-94fe33401bfc\"}}]'.",
    "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/75475e1e-9643-4f3d-859e-055f4c31b458/providers/Microsoft.Authorization/policyDefinitions/4fdffd35-fd9f-458e-9779-94fe33401bfc",
          "policyDefinitionName": "4fdffd35-fd9f-458e-9779-94fe33401bfc",
          "policyDefinitionEffect": "Deny",
          "policyAssignmentId": "/subscriptions/75475e1e-9643-4f3d-859e-055f4c31b458/resourceGroups/MAIC-RG/providers/Microsoft.Authorization/policyAssignments/fd5e2cb3842d4eefbc857917",
          "policyAssignmentName": "fd5e2cb3842d4eefbc857917",
          "policyAssignmentDisplayName": "Enforce Jobs on Automation Hybrid Runbook Workers",
          "policyAssignmentScope": "/subscriptions/75475e1e-9643-4f3d-859e-055f4c31b458/resourceGroups/MAIC-RG",
          "policyAssignmentParameters": {}
        }
      }
    ]
  }
}

A megkísérelt műveletet az Automation-fiók tevékenységnaplójában is naplózza a rendszer, az alábbi példához hasonlóan.

Example of Activity log for failed job execution.

Következő lépések

A runbookok használatához lásd : Runbookok kezelése az Azure Automationben.