Framework/Configurations/SVT/Services/Automation.json

{
    "FeatureName": "Automation",
    "Reference": "",
    "IsManintenanceMode": false,
  "Controls": [
    {
      "ControlID": "Azure_Automation_AuthZ_Grant_Min_RBAC_Access",
      "Description": "All users/identities must be granted minimum required permissions using Role Based Access Control (RBAC)",
      "Id": "Automation110",
      "ControlSeverity": "Medium",
      "Automated": "Yes",
      "MethodName": "CheckRBACAccess",
      "Recommendation": "Remove any excessive privileges granted on the Automation account. Run command Remove-AzureRmRoleAssignment -SignInName '{signInName}' -Scope '{scope}' -RoleDefinitionName '{role definition name}'. Run 'Get-Help Remove-AzureRmRoleAssignment -full' for more help. Assign 'Automation Operator' RBAC role to members who need to start/stop/suspend/resume jobs. Refer: https://docs.microsoft.com/en-us/azure/automation/automation-role-based-access-control, https://docs.microsoft.com/en-us/azure/active-directory/role-based-access-control-manage-access-powershell",
      "Tags": [
        "SDL",
        "TCP",
        "Automated",
        "AuthZ",
        "RBAC"
      ],
      "Enabled": true
    },
    {
      "ControlID": "Azure_Automation_DP_Review_Webhook_Usage",
      "Description": "Webhooks should not be used for runbooks that perform highly sensitive functions",
      "Id": "Automation120",
      "ControlSeverity": "Medium",
      "Automated": "Yes",
      "MethodName": "CheckWebhooks",
      "Recommendation": "Remove webhook(s) if not required. Run command Remove-AzureRmAutomationWebhook -AutomationAccountName '{AutomationAccountName}' -Name '{WebhookName}' -ResourceGroupName '{ResourceGroupName}",
      "Tags": [
        "SDL",
        "TCP",
        "Automated",
        "DP"
      ],
      "Enabled": true
    },
    {
      "ControlID": "Azure_Automation_DP_Minimal_Webhook_Validity",
      "Description": "Webhook URL must have a shorter validity period (<= $($this.ControlSettings.Automation.WebhookValidityInDays) days) to prevent malicious access",
      "Id": "Automation130",
      "ControlSeverity": "Medium",
      "Automated": "Yes",
      "MethodName": "CheckWebhookExpiry",
      "Recommendation": "Change the webhook expiry date by navigating to Azure Portal --> Your Auotmation account --> Your runbook --> Webhooks --> Your webhook --> Edit 'Expiration' field --> Save",
      "Tags": [
        "SDL",
        "TCP",
        "Automated",
        "DP"
      ],
      "Enabled": true
    },
    {
      "ControlID": "Azure_Automation_DP_Use_Encrypted_Variables",
      "Description": "Encryption of Automation account variable assets must be enabled when storing sensitive data",
      "Id": "Automation140",
      "ControlSeverity": "High",
      "Automated": "Yes",
      "MethodName": "CheckVariables",
      "Recommendation": "Encrypt variable if it stores sensitive data. Run command Set-AzureRmAutomationVariable -AutomationAccountName '{AutomationAccountName}' -Encrypted $true -Name '{VariableName}' -ResourceGroupName '{ResourceGroupName}' -Value '{Value}",
      "Tags": [
        "SDL",
        "TCP",
        "Automated",
        "DP"
      ],
      "Enabled": true
    },
    {
      "ControlID": "Azure_Automation_DP_Use_Secure_Assets",
      "Description": "Never hardcode secure information in your runbook, instead use Automation account assets (Credentials, encrypted variables etc.)",
      "Id": "Automation150",
      "ControlSeverity": "High",
      "Automated": "No",
      "MethodName": "",
      "Recommendation": "For detailed information about assets refer: https://docs.microsoft.com/en-us/azure/automation/automation-certificates, https://docs.microsoft.com/en-us/azure/automation/automation-connections, https://docs.microsoft.com/en-us/azure/automation/automation-credentials, https://docs.microsoft.com/en-us/azure/automation/automation-variables",
      "Tags": [
        "SDL",
        "TCP",
        "DP"
      ],
      "Enabled": true
    },
    {
      "ControlID": "Azure_Automation_DP_Rotate_Account_Keys",
      "Description": "Automation account keys should be rotated periodically as per the company standards",
      "Id": "Automation160",
      "ControlSeverity": "Medium",
      "Automated": "No",
      "MethodName": "",
      "Recommendation": "Run command New-AzureRmAutomationKey -AutomationAccountName '{AutomationAccountName}' -KeyType '{Primary/Secondary}' -ResourceGroupName '{ResourceGroupName}' to rotate keys",
      "Tags": [
        "SDL",
        "TCP",
        "DP"
      ],
      "Enabled": true
    },
    {
      "ControlID": "Azure_Automation_DP_Rotate_RunAsAccount_Credentials",
      "Description": "Credentials for Run As Account should be deleted and recreated at regular intervals to make sure that Service Principal connection credentials are not compromised",
      "Id": "Automation170",
      "ControlSeverity": "Medium",
      "Automated": "No",
      "MethodName": "",
      "Recommendation": "Remove existing certificate and connection using command Remove-AzureRmAutomationCertificate and Remove-AzureRmAutomationConnection. Create new certificate and connection using commands New-AzureRmAutomationCertificate and New-AzureRmAutomationConnection. Refer : https://docs.microsoft.com/en-us/azure/automation/automation-create-runas-account",
      "Tags": [
        "SDL",
        "Best Practice",
        "DP"
      ],
      "Enabled": true
    },
    {
 
      "ControlID": "Azure_Automation_DP_Automation_Asset_Protection",
      "Description": "Automation account having Hybrid Runbook Worker feature configured must have only limited/required assets added, since on-premise machines running the MMA (Microsoft Monitoring Agent) have access to all the Automation account assets",
      "Id": "Automation180",
      "ControlSeverity": "Medium",
      "Automated": "No",
      "MethodName": "",
      "Recommendation": "Create dedicated Auotmation account for Hybrid Worker Groups",
      "Tags": [
        "SDL",
        "TCP",
        "DP"
      ],
      "Enabled": true
    },
    {
      "ControlID": "Azure_Automation_Auth_Dedicated_SP_For_Runbook",
      "Description": "Runbook authentication must be done using dedicated service principal instead of AD User account ",
      "Id": "Automation190",
      "ControlSeverity": "Medium",
      "Automated": "No",
      "MethodName": "",
      "Recommendation": "Refer : https://docs.microsoft.com/en-us/azure/automation/automation-create-runas-account",
      "Tags": [
        "SDL",
        "TCP",
        "Auth"
      ],
      "Enabled": true
    },
    {
      "ControlID": "Azure_Automation_Audit_Configure_Log_Analytics",
      "Description": "Configure Log Analytics to get greater operational visibility of your Automation jobs",
      "Id": "Automation200",
      "ControlSeverity": "Medium",
      "Automated": "No",
      "MethodName": "CheckOMSSetup",
      "Recommendation": "Run command Set-AzureRmDiagnosticSetting -ResourceId '{AutomationAccountId}' -WorkspaceId '{OMSWorkspaceId}' -Enabled $true. Refer : https://docs.microsoft.com/en-us/azure/automation/automation-manage-send-joblogs-log-analytics",
      "Tags": [
        "SDL",
        "Best Practice",
        "Audit"
      ],
      "Enabled": true
    }
  ]
}