Condividi tramite


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

Importante

Il Ruolo di lavoro ibrido per runbook utente basato su agente di Automazione di Azure (Windows e Linux) è stato ritirato il 31 agosto 2024 e non è più supportato. Seguire le linee guida su come effettuare la migrazione da un ruoli di lavoro ibrido per i runbook basati su agente a ruoli di lavoro ibrido basati su estensione.

L'avvio di un runbook in un ruolo di lavoro ibrido per runbook usa un'opzione Esegui in che consente di specificare il nome di un gruppo di ruoli di lavoro ibridi per runbook quando si avvia dal 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 lo esegue nel sandbox di Azure.

Chiunque nell'organizzazione sia membro dell'Operatore processo di automazione o di livello superiore in grado di 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 dalle persone designate e non si possa eseguire un runbook in una sandbox di Azure, solo nei ruoli di lavoro ibridi per runbook.

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

Questo criterio si basa sulla proprietà runOn. 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 le risorse di Criteri di Azure.

Creare e assegnare la definizione di criteri

Qui si compone la regola dei criteri 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 Verifica applicazione dei processi ai 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. Accedere 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 del dashboard di Criteri di Azure.

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, a indicare che l'operazione ha tentato 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/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": {}
        }
      }
    ]
  }
}

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

Esempio di log attività per l'esecuzione del processo non riuscita.

Passaggi successivi

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