Używanie usługi Azure Policy do wymuszania wykonywania zadań w hybrydowym procesie roboczym elementu Runbook
Ważne
- Od 1 kwietnia 2025 r. wszystkie zadania uruchomione w hybrydowym procesie roboczym opartym na agencie zostaną zatrzymane.
- Hybrydowy proces roboczy elementu Runbook opartego na agencie usługi Azure Automation (Windows i Linux) został wycofany 31 sierpnia 2024 r. i nie jest już obsługiwany. Postępuj zgodnie z wytycznymi dotyczącymi migracji z istniejących hybrydowych procesów roboczych elementów Runbook użytkownika opartych na agentach do hybrydowych procesów roboczych opartych na rozszerzeniach.
Uruchamianie elementu Runbook w hybrydowym procesie roboczym elementu Runbook używa opcji Uruchom w celu określenia nazwy grupy hybrydowych procesów roboczych elementu Runbook podczas inicjowania z witryny Azure Portal przy użyciu programu Azure PowerShell lub interfejsu API REST. Po określeniu grupy jeden z procesów roboczych w tej grupie pobiera i uruchamia element Runbook. Jeśli element Runbook nie określi tej opcji, usługa Azure Automation uruchomi element Runbook w piaskownicy platformy Azure.
Każda osoba w organizacji, która jest członkiem operatora zadań automatyzacji lub nowszej, może tworzyć zadania elementu Runbook. Aby zarządzać wykonywaniem elementu Runbook przeznaczonym dla hybrydowej grupy procesów roboczych elementu Runbook na koncie usługi Automation, możesz użyć usługi Azure Policy. Pomaga to wymusić standardy organizacyjne i zapewnić, że zadania automatyzacji są kontrolowane i zarządzane przez wyznaczone osoby, a każda osoba nie może wykonać elementu Runbook w piaskownicy platformy Azure, tylko w hybrydowych procesach roboczych elementu Runbook.
W tym artykule znajduje się niestandardowa definicja usługi Azure Policy, która ułatwia kontrolowanie tych działań przy użyciu następujących operacji interfejsu API REST usługi Automation. Szczególnie:
Te zasady są oparte na runOn
właściwości . Zasady weryfikują wartość właściwości, która powinna zawierać nazwę istniejącej grupy hybrydowych procesów roboczych elementu Runbook. Jeśli wartość ma wartość null, jest interpretowana jako żądanie tworzenia zadania, harmonogramu zadań lub elementu webhook jest przeznaczone dla piaskownicy platformy Azure, a żądanie zostanie odrzucone.
Wymagane uprawnienia
Aby uzyskać uprawnienia do zasobów usługi Azure Policy, musisz być członkiem roli Właściciel na poziomie subskrypcji.
Tworzenie i przypisywanie definicji zasad
W tym miejscu utworzymy regułę zasad, a następnie przypiszemy ją do grupy zarządzania lub subskrypcji i opcjonalnie określimy grupę zasobów w subskrypcji. Jeśli jeszcze nie znasz języka zasad, zapoznaj się z artykułem dotyczącym struktury definicji zasad, aby dowiedzieć się, jak określić strukturę definicji zasad.
Użyj poniższego fragmentu kodu JSON, aby utworzyć plik JSON o nazwie 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')]" } } } }
Uruchom następujące polecenie programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure, aby utworzyć definicję zasad przy użyciu pliku 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
Polecenie tworzy definicję zasad o nazwie Audit Enforce Jobs on Automation Hybrid Runbook Workers (Wymuszanie zadań inspekcji w hybrydowych procesach roboczych elementów Runbook usługi Automation). Aby uzyskać więcej informacji na temat innych parametrów, których można użyć, zobacz az policy definition create.
Po wywołaniu bez parametrów
az policy definition create
lokalizacji domyślnie zapisuje definicję zasad w wybranej subskrypcji kontekstu sesji. Aby zapisać definicję w innej lokalizacji, użyj następujących parametrów:- subskrypcja — zapisz w innej subskrypcji. Wymaga wartości identyfikatora GUID dla identyfikatora subskrypcji lub wartości ciągu dla nazwy subskrypcji.
- management-group — zapisywanie w grupie zarządzania. Wymaga wartości ciągu.
Po utworzeniu definicji zasad można utworzyć przypisanie zasad, uruchamiając następujące polecenia:
az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'
Parametr
az policy assignment create
zakresu działa z grupą zarządzania, subskrypcją, grupą zasobów lub pojedynczym zasobem. Parametr używa pełnej ścieżki zasobu. Wzorzec zakresu dla każdego kontenera jest następujący. Zastąp{rName}
wartości ,{rgName}
,{subId}
i{mgName}
nazwą zasobu, nazwą grupy zasobów, identyfikatorem subskrypcji i nazwą grupy zarządzania.{rType}
element zostanie zastąpiony typem zasobu, takim jakMicrosoft.Compute/virtualMachines
dla maszyny wirtualnej.- Zasób-
/subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
- Grupa zasobów —
/subscriptions/{subID}/resourceGroups/{rgName}
- Subskrypcja-
/subscriptions/{subID}
- Grupa zarządzania —
/providers/Microsoft.Management/managementGroups/{mgName}
Identyfikator definicji usługi Azure Policy można uzyskać przy użyciu programu PowerShell za pomocą następującego polecenia:
az policy definition show --name 'Audit Enforce Jobs on Automation Hybrid Runbook Workers'
Identyfikator definicji zasad dla utworzonej definicji zasad powinien przypominać następujący przykład:
"/subscription/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Enforce Jobs on Automation Hybrid Runbook Workers"
- Zasób-
Zaloguj się w witrynie Azure Portal.
Uruchom usługę Azure Policy w witrynie Azure Portal, wybierając pozycję Wszystkie usługi, a następnie wyszukując i wybierając pozycję Zasady.
Wybierz pozycję Zgodność w lewej części strony. Następnie znajdź utworzone przypisanie zasad.
Gdy jedna z operacji REST usługi Automation jest wykonywana bez odwołania do hybrydowego procesu roboczego elementu Runbook w treści żądania, kod odpowiedzi 403 jest zwracany z błędem podobnym do poniższego przykładu wskazującego na próbę wykonania operacji w piaskownicy platformy 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": {}
}
}
]
}
}
Podjęta operacja jest również rejestrowana w dzienniku aktywności konta usługi Automation, podobnie jak w poniższym przykładzie.
Następne kroki
Aby pracować z elementami Runbook, zobacz Zarządzanie elementami Runbook w usłudze Azure Automation.