↳ Source GitHubRègle analytiqueMedium
SAP BTP - Cloud Integration tampering with security material
Description
Identifies operations on security material (credentials, certificates, and keys) within SAP Cloud Integration.
This includes credentials (passwords/secrets), X.509 certificates and key pairs, and PGP keys.
Unauthorized manipulation of security material could indicate an attacker attempting to:
- Gain access to external systems using stored credentials
- Intercept or tamper with encrypted communications
- Establish persistence through certificate manipulation
- Cover tracks by deleting security artifacts
- Type de règle
- Scheduled
- Version
- 1.0.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.
let securityMaterialTypes = dynamic(["Credential", "X.509 Certificate", "X.509 Key-Pair", "PGP Public Keys", "PGP Secret Keys"]);
let keystoreActions = dynamic(["Create", "Update", "Change", "Delete"]);
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),
keystoreName = tostring(parsedData.attributes["Keystore Name"])
| where objectType in (securityMaterialTypes)
| where
(objectType == "Credential" and action in ("PasswordStore", "PasswordUpdate", "PasswordDelete"))
or
(objectType != "Credential" and action in (keystoreActions))
| extend normalizedAction = case(
action == "PasswordStore", "created",
action == "PasswordUpdate", "updated",
action == "PasswordDelete", "deleted",
action == "Create", "created",
action == "Update", "updated",
action == "Change", "changed",
action == "Delete", "deleted",
action
)
| extend MessageText = case(
objectType == "Credential", strcat("Security credential '", objectId, "' was ", normalizedAction),
isnotempty(keystoreName), strcat(objectType, " '", objectId, "' was ", normalizedAction, " in keystore '", keystoreName, "'"),
strcat(objectType, " '", objectId, "' was ", normalizedAction)
)
| project
UpdatedOn,
UserName,
MessageText,
ObjectType = objectType,
ObjectId = objectId,
Action = action,
NormalizedAction = normalizedAction,
KeystoreName = keystoreName,
Tenant,
ipAddress,
CloudApp = "SAP Cloud Integration"
| extend AccountName = split(UserName, "@")[0], UPNSuffix = split(UserName, "@")[1]
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.
- Fichier
- Solutions/SAP BTP/Analytic Rules/BTP - Cloud Integration tampering with security material.yaml ↗
- Commit
9800e51↗- Identifiant source
8d5f3a1b-9c2e-4f7d-b8a6-1e4c7f9d2b5a
GSTEP / SUIVI DU CATALOGUE
Ajouté au catalogue : 16 sept. 2026 · 05:49 UTC
Dernier changement observé : 16 sept. 2026 · 05:49 UTC