↳ Source GitHubRègle analytiqueHigh
SAP BTP - Cloud Integration artifact deployment
Description
Identifies deployment and undeployment of integration artifacts in SAP Cloud Integration.
Integration flows are executable code that can process, transform, and route data between
systems.
Unauthorized artifact deployment could indicate:
- Attacker deploying malicious integration flows for data exfiltration
- Deployment of rogue code for persistent access
- Undeployment of critical integrations causing denial of service
- Type de règle
- Scheduled
- Version
- 1.1.1
- Statut déclaré
- Available
- Fréquence
- 15m
- Période analysée
- 15m
- Déclenchement
- gt 0
Couverture MITRE déclarée
Sources déclarées
Métadonnées du fichier source. Aucune dépendance déduite du KQL.
Connecteurs
Types de données
Requête KQL
Requête originale, sans modification.
SAPBTPAuditLog_CL
| where Category == "audit.configuration"
| extend objectType = tostring(Message.object.type)
| where objectType in ("Deployment", "Undeployment")
| extend attributes = todynamic(Message.attributes)
| mv-apply attr = attributes on (
summarize
SymbolicName = take_anyif(tostring(coalesce(attr.["new"], attr.["old"])), tostring(attr.name) == "symbolicName"),
ArtifactId = take_anyif(tostring(coalesce(attr.["new"], attr.["old"])), tostring(attr.name) == "id"),
ArtifactVersion = take_anyif(tostring(coalesce(attr.["new"], attr.["old"])), tostring(attr.name) == "version"),
DeployedBy = take_anyif(tostring(attr.["new"]), tostring(attr.name) == "deployedBy"),
UndeployedBy = take_anyif(tostring(attr.["new"]), tostring(attr.name) == "undeployedBy"),
Creator = take_anyif(tostring(coalesce(attr.["new"], attr.["old"])), tostring(attr.name) == "creator"),
TenantName = take_anyif(tostring(attr.["new"]), tostring(attr.name) == "tenantName"),
RuntimeLocationId = take_anyif(tostring(coalesce(attr.["new"], attr.["old"])), tostring(attr.name) == "runtimeLocationId")
)
| extend Actor = case(
isnotempty(DeployedBy), DeployedBy,
isnotempty(UndeployedBy), UndeployedBy,
isnotempty(Creator), Creator,
""
)
| extend ActionCategory = iff(objectType == "Deployment", "Deploy", "Undeploy"),
normalizedAction = iff(objectType == "Deployment", "deployed", "undeployed")
| extend MessageText = strcat("Integration artifact '", SymbolicName, "' (version ", ArtifactVersion, ") was ", normalizedAction, " in tenant ", TenantName)
| extend AccountName = iff(Actor has "@", tostring(split(Actor, "@")[0]), ""),
UPNSuffix = iff(Actor has "@", tostring(split(Actor, "@")[1]), "")
| project
UpdatedOn,
Actor,
AccountName,
UPNSuffix,
MessageText,
ArtifactName = SymbolicName,
ArtifactId,
ArtifactVersion,
ActionCategory,
ObjectType = objectType,
TenantName,
RuntimeLocationId,
Tenant,
CloudApp = "SAP Cloud Integration"
Entités déclarées
Contenus associés
Liens établis à partir des identifiants déclarés et des manifests des solutions.
Traçabilité de la source
GitHubLes valeurs affichées proviennent des fichiers du dépôt Azure/Azure-Sentinel. Elles décrivent le modèle publié, pas la configuration de votre workspace.
- Commit
9800e51↗- Identifiant source
a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d
GSTEP / SUIVI DU CATALOGUE
Ajouté au catalogue : 16 sept. 2026 · 05:49 UTC
Dernier changement observé : 16 sept. 2026 · 05:49 UTC