Skip to content
Report library
Purpose / Other

Azure Resource Visualizer Skill Security Audit

What the author says it does (original text)

Analyze Azure resource groups and generate detailed Mermaid architecture diagrams showing the relationships between individual resources. WHEN: create architecture diagram, visualize Azure resources, show resource relationships, generate Mermaid diagram, analyze resource group, diagram my resources, architecture visualization, resource topology, map Azure infrastructure.

Independent security check

Security risks found

Files checked
4
Risks found
3
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.Risks found: 1
Medium risk

The Resource Graph path may install and load additional Azure CLI extension code

Source references: 2
What we found

The reference declares `az extension add --name resource-graph` as a prerequisite. This is not merely a read-only cloud query: it downloads and persistently installs an extension whose code can run with the user's permissions. The instructions do not require separate consent, a pinned version, or source verification.

Why this matters

The environment gains new local code and dependencies. If the extension source, version, or distribution chain does not meet the user's trust policy, it could affect local files, Azure credentials visible to the process, or later CLI behavior. The evidence does not show that this extension is itself malicious.

The reference names installation of the `resource-graph` extension as a prerequisite for these queries. If the agent executes it, the local Azure CLI environment is persistently changed and extension code may later load under the user's privileges; the text requires no separate consent, pinned version, or source verification. This does not prove installation occurred, but it creates a plausible supply-chain and environment-change risk. Users can prohibit automatic installs and require an approved pinned version installed in isolation after source verification.

references/azure-resource-graph.md:15In the instructionsOpen original file
Or construct directly:```bashaz graph query -q "<KQL>" --query "data[].{name:name, type:type}" -o table```> ⚠️ **Prerequisite:** `az extension add --name resource-graph`
Show 1 other places
references/azure-resource-graph.md:3In the instructionsOpen original file
Azure Resource Graph (ARG) enables fast, cross-subscription resource querying using KQL via `az graph query`. Use it for bulk resource discovery and relationship mapping.
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.Risks found: 2
Medium risk

Detailed cloud architecture and access metadata is persisted in the workspace

Source references: 4
What we found

The output includes more than a diagram: subscription and region details, every resource name and type, network structure, identities/RBAC, key configuration, and dependencies. Even with secret values replaced, this reveals internal topology and security boundaries.

Why this matters

If the workspace is synced, committed, shared, or readable by another process, an unauthorized party could identify critical services, network ranges, identity relationships, and likely attack paths.

The skill reads resource names, networking, identity/RBAC, configuration, and dependencies, then writes an inventory, relationships, and diagram to a workspace Markdown file. Even with secret values replaced, that file can disclose internal topology and access boundaries, especially if the workspace is shared, committed, or uploaded. Users can require preview-only output, field minimization, redaction of names/addresses, and a controlled output location and retention period.

SKILL.md:42In the instructionsOpen original file
1. **Query all resources** in the resource group using Azure MCP tools or `az`.2. **Analyze each resource** type and capture:   - Resource name and type   - SKU/tier information   - Location/region   - Key configuration properties   - Network settings (VNets, subnets, private endpoints)   - Identity and access (Managed Identity, RBAC)   - Dependencies and connections
Show 3 other places
SKILL.md:88In the instructionsOpen original file
Use [template-architecture.md](./assets/template-architecture.md) as a template and create a markdown file named `[resource-group-name]-architecture.md` with:1. **Header**: Resource group name, subscription, region2. **Summary**: Brief overview of the architecture (2-3 paragraphs)3. **Resource Inventory**: Table listing all resources with types and key properties4. **Architecture Diagram**: The complete Mermaid diagram5. **Relationship Details**: Explanation of key connections and data flows6. **Notes**: Any important observations, potential issues, or recommendations
SKILL.md:115In the instructionsOpen original file
2. **File Creation**:   - Always create in workspace root or a `docs/` folder if it exists   - Use clear, descriptive filenames: `[rg-name]-architecture.md`   - Ensure Mermaid syntax is valid (test syntax mentally before output)
SKILL.md:58In the instructionsOpen original file
> **Important**: You must only use placeholder names to represent secret values, such as keys, connection strings, Key Vault secrets, etc. Use meaningful placeholder names to represent each secret in the diagram. Never put secret values in the resource diagram.
Medium risk

Bulk discovery can query subscriptions beyond the resource group the user selected

Source references: 3
What we found

The main workflow targets one confirmed resource group, but the bulk-discovery guidance directs the agent to cross-subscription Azure Resource Graph patterns. The supplied query lists resources and subscription names without filtering by resource group.

Why this matters

An Azure identity with access to multiple subscriptions could bring resource names, types, locations, resource groups, and subscription names outside the intended analysis into the agent context or generated output.

What this evidence establishes

The material provides a cross-subscription query whose example can list accessible resources and subscription names; running it after selection of one resource group would broaden cloud-metadata access. However, the main workflow explicitly queries the selected group, while cross-subscription access is presented as a bulk-discovery pattern, so the evidence does not establish that it runs during an ordinary single-group request. Users can require mandatory subscription/resource-group filters and confirmation before any cross-subscription query.

This assessment concerns the code and conditions shown, not proof that harm has occurred.
SKILL.md:33In the instructionsOpen original file
If a resource group is specified, validate it exists and proceed.### Step 2: Resource Discovery & AnalysisFor bulk resource discovery across subscriptions, use Azure Resource Graph queries. See [Azure Resource Graph Queries](references/azure-resource-graph.md) for cross-subscription inventory and relationship discovery patterns.Once you have the resource group:1. **Query all resources** in the resource group using Azure MCP tools or `az`.2. **Analyze each resource** type and capture:
Show 2 other places
references/azure-resource-graph.md:52In the instructionsOpen original file
**Cross-subscription resource inventory with subscription names:**```kqlResources| join kind=leftouter (    ResourceContainers    | where type == 'microsoft.resources/subscriptions'    | project subscriptionId, subscriptionName=name) on subscriptionId| project name, type, location, resourceGroup, subscriptionName```
references/azure-resource-graph.md:85In the instructionsOpen original file
- Navigate properties with `properties.fieldName`- Use `--first N` to limit result count- Use `--subscriptions` to scope to specific subscriptions- Use `mv-expand` to flatten arrays (e.g., subnets, IP configurations)
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.No risks found
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.No risks found
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.No risks found
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.No risks found

Inside this skill

5 instruction sections

The Skill has the user select and confirm a resource group, then queries it through Azure MCP or Azure CLI. It states that the analysis must remain read-only and must not modify or delete Azure resources.

View source
SKILL.md:28In the instructionsOpen original file
1. Use your tools to query available resource groups. If you do not have a tool for this, use `az`.2. Present a numbered list of resource groups with their locations3. Ask the user to select one by number or name4. Wait for user response before proceeding
SKILL.md:41In the instructionsOpen original file
1. **Query all resources** in the resource group using Azure MCP tools or `az`.2. **Analyze each resource** type and capture:
SKILL.md:144In the instructionsOpen original file
- ❌ Generate invalid Mermaid syntax- ❌ Modify or delete Azure resources (read-only analysis)

It collects architectural metadata such as resource names, SKUs, locations, network settings, identities/RBAC, and dependencies, then writes an inventory, relationship details, and Mermaid diagram to a Markdown file.

View source
SKILL.md:42In the instructionsOpen original file
1. **Query all resources** in the resource group using Azure MCP tools or `az`.2. **Analyze each resource** type and capture:   - Resource name and type   - SKU/tier information   - Location/region   - Key configuration properties   - Network settings (VNets, subnets, private endpoints)   - Identity and access (Managed Identity, RBAC)   - Dependencies and connections
SKILL.md:88In the instructionsOpen original file
Use [template-architecture.md](./assets/template-architecture.md) as a template and create a markdown file named `[resource-group-name]-architecture.md` with:1. **Header**: Resource group name, subscription, region2. **Summary**: Brief overview of the architecture (2-3 paragraphs)3. **Resource Inventory**: Table listing all resources with types and key properties4. **Architecture Diagram**: The complete Mermaid diagram5. **Relationship Details**: Explanation of key connections and data flows6. **Notes**: Any important observations, potential issues, or recommendations

The Skill explicitly prohibits placing actual keys, connection strings, or Key Vault secret values in the diagram and requires meaningful placeholders instead.

View source
SKILL.md:58In the instructionsOpen original file
> **Important**: You must only use placeholder names to represent secret values, such as keys, connection strings, Key Vault secrets, etc. Use meaningful placeholder names to represent each secret in the diagram. Never put secret values in the resource diagram.

The bulk-discovery path uses Azure Resource Graph. Its reference includes a cross-subscription query and lists installation of an Azure CLI extension as a prerequisite.

View source
SKILL.md:37In the instructionsOpen original file
For bulk resource discovery across subscriptions, use Azure Resource Graph queries. See [Azure Resource Graph Queries](references/azure-resource-graph.md) for cross-subscription inventory and relationship discovery patterns.
references/azure-resource-graph.md:21In the instructionsOpen original file
> ⚠️ **Prerequisite:** `az extension add --name resource-graph`
references/azure-resource-graph.md:52In the instructionsOpen original file
**Cross-subscription resource inventory with subscription names:**```kqlResources| join kind=leftouter (    ResourceContainers    | where type == 'microsoft.resources/subscriptions'    | project subscriptionId, subscriptionName=name) on subscriptionId| project name, type, location, resourceGroup, subscriptionName```
Start here · InstructionsSKILL.md
azure-resource-visualizer
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source.

File reference map

References: 3
Files making referencesReferenced content
Lines show actual file references, not execution order. Select a node to highlight its connections and inspect the files and source locations. Dashed lines include files that still need locating.
Files and check records4 files

Coverage and gaps

Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included
  • assets/example-diagram.mdFull text included
  • assets/template-architecture.mdFull text included
  • references/azure-resource-graph.mdFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions
  • assets/example-diagram.mdSupporting file
  • assets/template-architecture.mdSupporting file
  • references/azure-resource-graph.mdSupporting file

Operations mentioned in code and instructions

Run commands
references/azure-resource-graph.md:17In the instructionsOpen original file
```bashaz graph query -q "<KQL>" --query "data[].{name:name, type:type}" -o table
Lines read
370
File checksum (to compare versions)
1f0edcfb280fe9e35bc871ac666cc2331eb6cfc70195be7a16de7560f6e27a6f