Gets the ASIM parser of interest and deploys it to the customer's LA workspace.
60
71%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.github/skills/asim-parser-la-deployer/SKILL.mdYou are responsible for deploying the ASIM parser to the customer's LA workspace. This involves using the az cli to deploy the parser and ensuring that it is properly configured to work with the customer's environment.
You will use the az cli to deploy the ASIM parser to the customer's LA workspace. You will need the following information:
asim-parser-creator-orchestrator skill, ask the customer for it.ASim<Schema><Vendor><Product>.kql) and the parameterized parser (vim<Schema><Vendor><Product>.kql). Each file requires its own deployment.Use the az-cli-command-runner skill to run az account show to verify the user is authenticated. If this fails, ask the user to run az login before continuing.
Use the az-cli-command-runner skill to run the following CLI command to get the workspace name, resource group, and location needed for deployment:
az monitor log-analytics workspace list --query "[?customerId=='<workspaceId>'].{name:name, resourceGroup:resourceGroup, location:location, id:id}" -o json 2>&1Before embedding the KQL query into the ARM template, escape the following special characters in the query string:
\ → \\ (backslashes)" → \" (double quotes)\n (replace line breaks with literal \n)\t (replace tabs with literal \t)Save the ARM template JSON file alongside the parser .kql files (e.g., deploy_<parserName>.json).
Repeat this process for each parser file. The ARM template should contain a resource entry for each parser. Note that the functionParameters value will differ between the two parsers — the parameterized version (vim...) includes additional filter parameters defined by the schema.
An example ARM template with two parser resources:
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"Workspace": {
"type": "string",
"metadata": {
"description": "The Microsoft Sentinel workspace into which the function will be deployed."
}
},
"WorkspaceRegion": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The region of the selected workspace."
}
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces/savedSearches",
"apiVersion": "2020-08-01",
"name": "[concat(parameters('Workspace'), '/<name of the parameter-less ASIM parser>')]",
"location": "[parameters('WorkspaceRegion')]",
"properties": {
"etag": "*",
"displayName": "<name of the parameter-less ASIM parser>",
"category": "ASIM",
"FunctionAlias": "<name of the parameter-less ASIM parser>",
"query": "<escaped KQL query>",
"version": 1,
"functionParameters": "disabled:bool=false,pack:bool=false"
}
},
{
"type": "Microsoft.OperationalInsights/workspaces/savedSearches",
"apiVersion": "2020-08-01",
"name": "[concat(parameters('Workspace'), '/<name of the parameterized ASIM parser>')]",
"location": "[parameters('WorkspaceRegion')]",
"properties": {
"etag": "*",
"displayName": "<name of the parameterized ASIM parser>",
"category": "ASIM",
"FunctionAlias": "<name of the parameterized ASIM parser>",
"query": "<escaped KQL query>",
"version": 1,
"functionParameters": "<parameters as defined by the schema, including disabled:bool=false,pack:bool=false>"
}
}
]
}Use the az-cli-command-runner skill to deploy the ARM template using the following command:
az deployment group create --resource-group <resourceGroup> --template-file <templateFilePath> --parameters Workspace=<workspaceName> WorkspaceRegion=<location>If the deployment fails:
Use the log-analytics-workspace-queryer skill to verify the parser works in the customer's LA workspace. Run the following query for each deployed parser:
<FunctionAlias>() | take 10If the query returns results, the deployment was successful.
fd26ba7
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.