Query Details
ExposureGraphEdges
| make-graph SourceNodeId --> TargetNodeId with ExposureGraphNodes on NodeId
| graph-match cycles=none (Recommendation)-[affecting]->(azuredevopsrepository)-[actions*1..3]->(Resource)
where Recommendation.NodeLabel == "mdcManagementRecommendation"
and affecting.EdgeLabel == "affecting"
and all(actions, EdgeLabel == "provisions")
and Resource.NodeLabel == "microsoft.storage/storageaccounts"
project
RecommendationName = Recommendation.NodeName,
Severity = tostring(Recommendation.NodeProperties.rawData.severity),
RepoName = azuredevopsrepository.NodeName,
Resource = Resource.NodeNameThis query is analyzing a graph of nodes and edges to identify specific relationships between recommendations, Azure DevOps repositories, and storage account resources. Here's a simplified breakdown:
Data Source: The query starts with a dataset called ExposureGraphEdges and uses another dataset ExposureGraphNodes to provide additional context.
Graph Construction: It constructs a graph where each edge represents a connection from a SourceNodeId to a TargetNodeId.
Pattern Matching: The query looks for a specific pattern in the graph:
Conditions: It ensures:
Output: The query projects (or selects) the following information:
In essence, this query is identifying and listing management recommendations that affect Azure DevOps repositories, which in turn provision storage account resources, along with their severity and involved entities.

Thomas Naunheim
Released: June 4, 2025
Tables
Keywords
Operators