Usare Criteri di Azure per applicare l'esecuzione del processo nel ruolo di lavoro ibrido per runbook

Importante

Il ruolo di lavoro per runbook ibrido utente basato su agente di Automazione di Azure (Windows e Linux) verrà ritirato il 31 agosto 2024 e non sarà supportato dopo tale data. Prima del 31 agosto 2024 sarà necessario completare la migrazione dei ruoli di lavoro ibridi per runbook ibridi utente basati su agenti. Inoltre, a partire dal 1° novembre 2023, la creazione di nuovi ruoli di lavoro ibridi basati su agente non sarebbe possibile. Ulteriori informazioni.

L'avvio di un runbook in un ruolo di lavoro ibrido per runbook usa un'opzione Esegui su che consente di specificare il nome di un gruppo di ruoli di lavoro ibrido per runbook quando si avvia dalla portale di Azure, con Azure PowerShell o l'API REST. Quando si specifica un gruppo, uno dei ruoli di lavoro di questo recupera ed esegue il runbook. Se il runbook non specifica questa opzione, Automazione di Azure esegue il runbook nella sandbox di Azure.

Chiunque nell'organizzazione sia membro dell'operatore processo di automazione o superiore può creare processi runbook. Per gestire l'esecuzione di runbook destinata a un gruppo di ruoli di lavoro ibrido per runbook nell'account di Automazione, è possibile usare Criteri di Azure. Ciò consente di applicare gli standard dell'organizzazione e garantire che i processi di automazione siano controllati e gestiti da quelli designati e chiunque non possa eseguire un runbook in una sandbox di Azure, solo nei ruoli di lavoro ibridi per runbook.

In questo articolo è inclusa una definizione di Criteri di Azure personalizzata che consente di controllare queste attività usando le operazioni api REST di Automazione seguenti. In particolare:

Questo criterio si basa sulla runOn proprietà . Il criterio convalida il valore della proprietà , che deve contenere il nome di un gruppo di ruoli di lavoro ibrido per runbook esistente. Se il valore è Null, viene interpretato come la richiesta di creazione per il processo, la pianificazione del processo o il webhook è destinato alla sandbox di Azure e la richiesta viene negata.

Autorizzazioni obbligatorie

È necessario essere un membro del ruolo Proprietario a livello di sottoscrizione per l'autorizzazione per Criteri di Azure risorse.

Creare e assegnare la definizione dei criteri

Qui si compone la regola dei criteri e quindi la si assegna a un gruppo di gestione o a una sottoscrizione e, facoltativamente, si specifica un gruppo di risorse nella sottoscrizione. Se non si ha familiarità con il linguaggio dei criteri, vedere Struttura delle definizioni di criteri per informazioni.

  1. Usare il frammento JSON seguente per creare un file JSON con il nome 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. Eseguire il comando seguente di Azure PowerShell o dell'interfaccia della riga di comando di Azure per creare una definizione di criteri usando il file 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
    

    Il comando crea una definizione di criteri denominata Audit Imponi processi nei ruoli di lavoro ibridi per runbook di Automazione. Per altre informazioni sui parametri aggiuntivi che è possibile usare, vedere az policy definition create.

    Se chiamato senza parametri per la posizione, az policy definition create salva per impostazione predefinita la definizione dei criteri nella sottoscrizione selezionata del contesto di sessioni. Per salvare la definizione in una posizione diversa, usare i parametri seguenti:

    • subscription - Salva in una sottoscrizione diversa. Richiede un valore GUID per l'ID sottoscrizione o un valore string per il nome della sottoscrizione.
    • management-group - Salva in un gruppo di gestione. Richiede un valore stringa.

  1. Dopo aver creato la definizione dei criteri, è possibile creare un'assegnazione di criteri eseguendo i comandi seguenti:

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

    Il parametro scope in az policy assignment create funziona con un gruppo di gestione, una sottoscrizione, un gruppo di risorse o un'unica risorsa. Il parametro usa un percorso di risorsa completo. Il modello per scope per ogni contenitore è il seguente. Sostituire {rName}, {rgName}, {subId} e {mgName} rispettivamente con il nome della risorsa, il nome del gruppo di risorse, l'ID della sottoscrizione e il nome del gruppo di gestione. {rType} può essere sostituito con il tipo di risorsa della risorsa, ad esempio Microsoft.Compute/virtualMachines per una macchina virtuale.

    • Risorsa - /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Gruppo di risorse - /subscriptions/{subID}/resourceGroups/{rgName}
    • Sottoscrizione - /subscriptions/{subID}
    • Gruppo di gestione - /providers/Microsoft.Management/managementGroups/{mgName}

    È possibile ottenere l'ID definizione di Criteri di Azure usando PowerShell con il comando seguente:

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

    L'ID definizione dei criteri per la definizione dei criteri creata dovrebbe essere simile al seguente:

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

  1. Accedi al portale di Azure.

  2. Avviare il servizio Criteri di Azure nel portale di Azure facendo clic su Tutti i servizi e quindi cercando e selezionando Criteri.

  3. Selezionare Assegnazioni a sinistra nella pagina. Individuare quindi l'assegnazione dei criteri creata.

    Screenshot of Azure Policy dashboard.

Quando una delle operazioni REST di Automazione viene eseguita senza riferimento a un ruolo di lavoro ibrido per runbook nel corpo della richiesta, viene restituito un codice di risposta 403 con un errore simile all'esempio seguente che indica l'operazione tentata l'esecuzione in una sandbox di 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/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": {}
        }
      }
    ]
  }
}

L'operazione tentata viene inoltre registrata nel log attività dell'account di Automazione, simile all'esempio seguente.

Example of Activity log for failed job execution.

Passaggi successivi

Per usare i runbook, vedere Gestire runbook in Automazione di Azure.