Analytic rule catalog
SAP BTP - Cloud Integration package import or transport
Back
| Id | c3d4e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f |
| Rulename | SAP BTP - Cloud Integration package import or transport |
| Description | Identifies import and transport operations for integration packages and artifacts in SAP Cloud Integration. Packages contain integration flows, mappings, scripts, and other artifacts that can be imported from external sources or transported between tenants. Unauthorized package operations could indicate: - Supply chain attack through malicious package import - Lateral movement between environments via artifact transport - Introduction of backdoors or rogue integration logic |
| Severity | Medium |
| Tactics | InitialAccess Persistence |
| Techniques | T1195 T1546 |
| Required data connectors | SAPBTPAuditEvents |
| Kind | Scheduled |
| Query frequency | 15m |
| Query period | 15m |
| Trigger threshold | 0 |
| Trigger operator | gt |
| Source Uri | https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/SAP%20BTP/Analytic%20Rules/BTP%20-%20Cloud%20Integration%20package%20import%20or%20transport.yaml |
| Version | 1.0.1 |
| Arm template | c3d4e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f.json |
let packageActions = dynamic(["Package_Import_Started", "Package_Import_Completed", "Package_Transport_Started", "Package_Transport_Completed", "Artifact_Transport_Started", "Artifact_Transport_Completed"]);
SAPBTPAuditLog_CL
| where Category == "audit.security-events"
| extend data_s = tostring(Message.data),
ipAddress = tostring(Message.ip)
| extend parsedData = parse_json(data_s)
| extend action = tostring(parsedData.action),
objectType = tostring(parsedData.objectType),
objectId = tostring(parsedData.objectId)
| where action in (packageActions)
| extend operationType = case(
action contains "Import", "Import",
action contains "Transport", "Transport",
"Unknown"
),
operationStatus = case(
action endswith "Started", "Started",
action endswith "Completed", "Completed",
"Unknown"
)
| extend MessageText = strcat(objectType, " '", objectId, "' ", tolower(operationType), " ", tolower(operationStatus))
| project
UpdatedOn,
UserName,
MessageText,
ObjectType = objectType,
ObjectId = objectId,
Action = action,
OperationType = operationType,
OperationStatus = operationStatus,
Tenant,
ipAddress,
CloudApp = "SAP Cloud Integration"
| extend AccountName = split(UserName, "@")[0], UPNSuffix = split(UserName, "@")[1]
name: SAP BTP - Cloud Integration package import or transport
triggerOperator: gt
kind: Scheduled
queryFrequency: 15m
description: |
Identifies import and transport operations for integration packages and artifacts in
SAP Cloud Integration. Packages contain integration flows, mappings, scripts, and other
artifacts that can be imported from external sources or transported between tenants.
Unauthorized package operations could indicate:
- Supply chain attack through malicious package import
- Lateral movement between environments via artifact transport
- Introduction of backdoors or rogue integration logic
id: c3d4e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f
triggerThreshold: 0
queryPeriod: 15m
query: |
let packageActions = dynamic(["Package_Import_Started", "Package_Import_Completed", "Package_Transport_Started", "Package_Transport_Completed", "Artifact_Transport_Started", "Artifact_Transport_Completed"]);
SAPBTPAuditLog_CL
| where Category == "audit.security-events"
| extend data_s = tostring(Message.data),
ipAddress = tostring(Message.ip)
| extend parsedData = parse_json(data_s)
| extend action = tostring(parsedData.action),
objectType = tostring(parsedData.objectType),
objectId = tostring(parsedData.objectId)
| where action in (packageActions)
| extend operationType = case(
action contains "Import", "Import",
action contains "Transport", "Transport",
"Unknown"
),
operationStatus = case(
action endswith "Started", "Started",
action endswith "Completed", "Completed",
"Unknown"
)
| extend MessageText = strcat(objectType, " '", objectId, "' ", tolower(operationType), " ", tolower(operationStatus))
| project
UpdatedOn,
UserName,
MessageText,
ObjectType = objectType,
ObjectId = objectId,
Action = action,
OperationType = operationType,
OperationStatus = operationStatus,
Tenant,
ipAddress,
CloudApp = "SAP Cloud Integration"
| extend AccountName = split(UserName, "@")[0], UPNSuffix = split(UserName, "@")[1]
version: 1.0.1
customDetails:
OperationStatus: OperationStatus
ObjectType: ObjectType
SourceIP: ipAddress
OperationType: OperationType
ObjectId: ObjectId
Action: Action
status: Available
eventGroupingSettings:
aggregationKind: SingleAlert
severity: Medium
requiredDataConnectors:
- connectorId: SAPBTPAuditEvents
dataTypes:
- SAPBTPAuditLog_CL
OriginalUri: https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/SAP%20BTP/Analytic%20Rules/BTP%20-%20Cloud%20Integration%20package%20import%20or%20transport.yaml
alertDetailsOverride:
alertDescriptionFormat: |
{{MessageText}} by {{UserName}} from IP {{ipAddress}}.
This could indicate:
- Legitimate package management and deployment
- Import of malicious integration content from untrusted sources
- Unauthorized transport of artifacts between environments
alertDisplayNameFormat: 'SAP Cloud Integration: {{MessageText}}'
relevantTechniques:
- T1195
- T1546
tactics:
- InitialAccess
- Persistence
entityMappings:
- fieldMappings:
- identifier: Name
columnName: AccountName
- identifier: UPNSuffix
columnName: UPNSuffix
entityType: Account
- fieldMappings:
- identifier: Address
columnName: ipAddress
entityType: IP
- fieldMappings:
- identifier: Name
columnName: CloudApp
entityType: CloudApplication
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspace": {
"type": "String"
}
},
"resources": [
{
"apiVersion": "2024-01-01-preview",
"id": "[concat(resourceId('Microsoft.OperationalInsights/workspaces/providers', parameters('workspace'), 'Microsoft.SecurityInsights'),'/alertRules/c3d4e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f')]",
"kind": "Scheduled",
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/c3d4e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f')]",
"properties": {
"alertDetailsOverride": {
"alertDescriptionFormat": "{{MessageText}} by {{UserName}} from IP {{ipAddress}}.\n\nThis could indicate:\n- Legitimate package management and deployment\n- Import of malicious integration content from untrusted sources\n- Unauthorized transport of artifacts between environments\n",
"alertDisplayNameFormat": "SAP Cloud Integration: {{MessageText}}"
},
"alertRuleTemplateName": "c3d4e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f",
"customDetails": {
"Action": "Action",
"ObjectId": "ObjectId",
"ObjectType": "ObjectType",
"OperationStatus": "OperationStatus",
"OperationType": "OperationType",
"SourceIP": "ipAddress"
},
"description": "Identifies import and transport operations for integration packages and artifacts in\nSAP Cloud Integration. Packages contain integration flows, mappings, scripts, and other\nartifacts that can be imported from external sources or transported between tenants.\n\nUnauthorized package operations could indicate:\n- Supply chain attack through malicious package import\n- Lateral movement between environments via artifact transport\n- Introduction of backdoors or rogue integration logic\n",
"displayName": "SAP BTP - Cloud Integration package import or transport",
"enabled": true,
"entityMappings": [
{
"entityType": "Account",
"fieldMappings": [
{
"columnName": "AccountName",
"identifier": "Name"
},
{
"columnName": "UPNSuffix",
"identifier": "UPNSuffix"
}
]
},
{
"entityType": "IP",
"fieldMappings": [
{
"columnName": "ipAddress",
"identifier": "Address"
}
]
},
{
"entityType": "CloudApplication",
"fieldMappings": [
{
"columnName": "CloudApp",
"identifier": "Name"
}
]
}
],
"eventGroupingSettings": {
"aggregationKind": "SingleAlert"
},
"OriginalUri": "https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/SAP%20BTP/Analytic%20Rules/BTP%20-%20Cloud%20Integration%20package%20import%20or%20transport.yaml",
"query": "let packageActions = dynamic([\"Package_Import_Started\", \"Package_Import_Completed\", \"Package_Transport_Started\", \"Package_Transport_Completed\", \"Artifact_Transport_Started\", \"Artifact_Transport_Completed\"]);\nSAPBTPAuditLog_CL\n| where Category == \"audit.security-events\"\n| extend data_s = tostring(Message.data),\n ipAddress = tostring(Message.ip)\n| extend parsedData = parse_json(data_s)\n| extend action = tostring(parsedData.action),\n objectType = tostring(parsedData.objectType),\n objectId = tostring(parsedData.objectId)\n| where action in (packageActions)\n| extend operationType = case(\n action contains \"Import\", \"Import\",\n action contains \"Transport\", \"Transport\",\n \"Unknown\"\n),\noperationStatus = case(\n action endswith \"Started\", \"Started\",\n action endswith \"Completed\", \"Completed\",\n \"Unknown\"\n)\n| extend MessageText = strcat(objectType, \" '\", objectId, \"' \", tolower(operationType), \" \", tolower(operationStatus))\n| project\n UpdatedOn,\n UserName,\n MessageText,\n ObjectType = objectType,\n ObjectId = objectId,\n Action = action,\n OperationType = operationType,\n OperationStatus = operationStatus,\n Tenant,\n ipAddress,\n CloudApp = \"SAP Cloud Integration\"\n| extend AccountName = split(UserName, \"@\")[0], UPNSuffix = split(UserName, \"@\")[1]\n",
"queryFrequency": "PT15M",
"queryPeriod": "PT15M",
"severity": "Medium",
"status": "Available",
"subTechniques": [],
"suppressionDuration": "PT1H",
"suppressionEnabled": false,
"tactics": [
"InitialAccess",
"Persistence"
],
"techniques": [
"T1195",
"T1546"
],
"templateVersion": "1.0.1",
"triggerOperator": "GreaterThan",
"triggerThreshold": 0
},
"type": "Microsoft.OperationalInsights/workspaces/providers/alertRules"
}
]
}