Defender Secure Score Monitor logo

Defender Secure Score Monitor

Community
ricmmartins
defender-secure-score-monitor

Monitor and improve Microsoft Defender for Cloud Secure Score. Tracks score trends, identifies quick wins to improve the score, checks Defender plan coverage, and highlights critical security recommendations. Use when asked about secure score, security posture, Defender status, or security improvements.

Overview

Publisherricmmartins
Repositoryazure-sre-agent-skills
Skill namedefender-secure-score-monitor
Stars
70
Forks
14
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by ricmmartins on GitHub. Read the source before you install it.

Installation

Install the Defender Secure Score Monitor AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/ricmmartins/azure-sre-agent-skills/tree/main/skills/06-defender-secure-score
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/ricmmartins/azure-sre-agent-skills.git /tmp/azure-sre-agent-skills
mkdir -p .claude/skills
cp -r /tmp/azure-sre-agent-skills/skills/06-defender-secure-score .claude/skills/defender-secure-score-monitor
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Defender Secure Score Monitor in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Defender Secure Score Monitor on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Defender Secure Score Monitor is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Defender Secure Score Monitor

Purpose

Track and improve your Microsoft Defender for Cloud Secure Score through focused monitoring, trend analysis, and actionable remediation guidance. Answers "what's our security score and how do we improve it?"

When to use this skill

  • User asks "what's our secure score?"
  • User asks how to improve security posture
  • Weekly security posture check
  • Before a security audit or customer questionnaire
  • After deploying new resources (to check score impact)

Difference from Compliance/Governance Audit

The Compliance skill does a broad governance audit (policy, RBAC, tagging, locks, naming). This skill is laser-focused on Defender for Cloud Secure Score — the single most important security KPI — and provides targeted actions to improve it.

Assessment procedure

Step 1: Current Secure Score

Get the overall score and per-control breakdown.

bash
az rest --method get --url "https://management.azure.com/subscriptions/<sub-id>/providers/Microsoft.Security/secureScores/ascScore?api-version=2020-01-01"
bash
az rest --method get --url "https://management.azure.com/subscriptions/<sub-id>/providers/Microsoft.Security/secureScores/ascScore/secureScoreControls?api-version=2020-01-01"

Note: The az security secure-scores list CLI command may fail in some environments. The REST API approach above is more reliable. Replace <sub-id> with the target subscription ID.

Report:

  • Current Secure Score: X% (X/Y points)
  • Trend (if memory available): improved/declined vs. last check
  • Top 5 controls with the most room for improvement (highest max - current)

Step 2: Unhealthy assessments (recommendations)

Get the list of active security recommendations.

bash
az rest --method get --url "https://management.azure.com/subscriptions/<sub-id>/providers/Microsoft.Security/assessments?api-version=2021-06-01" --query "value[?properties.status.code=='Unhealthy'].{displayName:properties.displayName, severity:properties.metadata.severity, category:properties.metadata.categories[0], resourceId:properties.resourceDetails.id}"

Group by severity:

  • 🔴 High: Must fix — significant risk
  • 🟡 Medium: Should fix — moderate risk
  • 🟢 Low: Nice to have — minimal risk

Step 3: Quick wins (most points for least effort)

Identify recommendations that:

  1. Affect the most resources (batch fix possible)
  2. Have the highest point value per control
  3. Can be fixed with a single CLI command or policy

Examples of quick wins:

  • Enable HTTPS-only on App Services
  • Enable secure transfer on storage accounts
  • Enable Defender plans that are off
  • Restrict public network access

Step 4: Defender plan coverage

Check which Defender plans are enabled.

bash
az security pricing list --query "[].{plan:name, tier:pricingTier, subPlan:subPlan}" -o table

Expected plans to be enabled for full coverage:

  • Servers (P2 recommended)
  • App Service
  • SQL (databases)
  • Storage
  • Containers (with vulnerability assessment)
  • Key Vault
  • Resource Manager (ARM)
  • DNS

Flag disabled plans and estimate score impact of enabling them.

Step 5: Attack surface indicators

Check the most exploitable security gaps.

  1. Public management ports (SSH/RDP open to internet):

    bash
    az graph query -q "resources | where type == 'microsoft.network/networksecuritygroups' | mvexpand rules = properties.securityRules | where rules.properties.access == 'Allow' and rules.properties.direction == 'Inbound' and (rules.properties.destinationPortRange == '22' or rules.properties.destinationPortRange == '3389' or rules.properties.destinationPortRange == '*') and rules.properties.sourceAddressPrefix in ('*', '0.0.0.0/0', 'Internet')" -o table
  2. Storage accounts with public blob access:

    bash
    az storage account list --query "[?allowBlobPublicAccess==true].{name:name, rg:resourceGroup}" -o table
  3. SQL servers with public endpoint:

    bash
    az sql server list --query "[?properties.publicNetworkAccess=='Enabled'].{name:name, rg:resourceGroup}" -o table
  4. Key Vaults accessible from public network:

    bash
    az keyvault list --query "[?properties.publicNetworkAccess=='Enabled'].{name:name, rg:resourceGroup}" -o table

Step 6: Credential and certificate hygiene

Check for expiring secrets that could cause outages or security drift.

  1. Key Vault secrets expiring within 30 days (per vault):

    bash
    az keyvault secret list --vault-name <vault> --query "[?attributes.expires!=null && attributes.expires<'$(date -u -d '30 days' +%Y-%m-%dT%H:%M:%SZ)']" -o table
  2. Key Vault certificates expiring within 30 days (per vault):

    bash
    az keyvault certificate list --vault-name <vault> --query "[?attributes.expires!=null && attributes.expires<'$(date -u -d '30 days' +%Y-%m-%dT%H:%M:%SZ)']" -o table
  3. App registrations with expiring secrets:

    bash
    az ad app list --query "[].{name:displayName, creds:passwordCredentials[?endDateTime<'$(date -u -d '30 days' +%Y-%m-%dT%H:%M:%SZ)']}" --all -o table

Note on date handling: The SRE Agent sandbox runs Linux. Use $(date -u -d '30 days' +%Y-%m-%dT%H:%M:%SZ) for date calculations.

Risk scoring

LevelCriteriaColor
CriticalActive exposure, immediate risk of breach🔴
HighSignificant gap, exploit requires minimal effort🟠
MediumGap exists but requires specific conditions to exploit🟡
LowBest practice deviation, minimal immediate risk🟢

Accepted exceptions (optional)

If the user provides a list of accepted exceptions, do not flag those items. Instead, note them in the report as Accepted Exception with the reason provided.

Example format the user may provide:

CheckReason
3.1 Defender for DNSDNS plan deprecated by Microsoft, not applicable
5.2 Public blob access on storagePublic read access required for CDN-served static assets
5.4 Key Vault public accessKey Vault is accessed from hybrid on-prem workloads

When exceptions are provided:

  • Skip the flagged checks in scoring
  • List them in a separate "Accepted Exceptions" section at the end of the report
  • Recalculate the overall score excluding excepted checks

Expected output

Report header (mandatory — use this exact format)

Defender Secure Score Report

FieldValue
Subscription(name + ID)
Assessment DateYYYY-MM-DD
Overall ScoreXX.XX / YY (ZZ%)

Then present the gap summary:

The subscription is earning only ZZ% of its maximum Secure Score. There is a N-point gap to close.

Score improvement plan

PriorityActionPointsEffortResources affected
1Enable HTTPS-only on 4 App Services+45 minapp-web-, app-api-
2Enable Defender for Storage+32 minsubscription-level
3Restrict SQL public access on 2 servers+330 minsql-prod-, sql-staging-
4Add NSG to 2 subnets without rules+215 minsubnet-data-, subnet-mgmt-
Total achievable+12~1 hour

Critical findings (fix now)

Items that represent immediate exploitable risk.

Remediation commands

Pre-formatted az cli commands for each quick win, ready to approve and execute. Use GetAzCliHelp to validate the command syntax before suggesting.

bash
# Enable HTTPS-only on App Service
az webapp update --name <app> --resource-group <rg> --set httpsOnly=true

# Enable Defender for Storage
az security pricing create --name StorageAccounts --tier Standard

References

Recommended cadence

Schedule this skill as a weekly task via SRE Agent scheduled tasks for continuous score improvement tracking.

Sample output

The following is a redacted example of what the report looks like when run against a subscription.

Defender Secure Score Report

FieldValue
Subscriptioncontoso-prod-001 (a1b2c3d4-e5f6-7890-abcd-ef1234567890)
Assessment Date2026-07-15
Overall Score38.50 / 56 (69%)

The subscription is earning only 69% of its maximum Secure Score. There is a 17.5-point gap to close.

Score improvement plan

PriorityActionPointsEffortResources affected
1Enable HTTPS-only on 3 App Services+45 minapp-web-prod, app-api-prod, app-admin-prod
2Enable Defender for Storage+32 minsubscription-level
3Restrict SQL public access on 2 servers+330 minsql-contoso-prod, sql-contoso-staging
4Add NSG to 2 subnets without rules+215 minsubnet-data-prod, subnet-mgmt-prod
5Rotate 3 expiring Key Vault secrets+1.520 minkv-contoso-prod
Total achievable+13.5~1.5 hours

Critical findings (sample)

#FindingSeverityResources
1SSH port 22 open to internet on NSG nsg-mgmt-prod🔴 Critical2 VMs exposed
2Storage account stcontosoprod allows public blob access🔴 Critical1 account
3Defender for Containers disabled🟠 HighAKS cluster aks-app-prod

Defender plan coverage

PlanStatusImpact
Cloud Posture (CSPM)✅ Standard—
Servers✅ P2—
Storage❌ Free+3 points if enabled
Containers❌ Free+2 points if enabled
Key Vault✅ Standard—
App Service✅ Standard—

Remediation commands (sample)

bash
# Enable HTTPS-only on App Service
az webapp update --name app-web-prod --resource-group rg-app-prod --set httpsOnly=true

# Enable Defender for Storage
az security pricing create --name StorageAccounts --tier Standard

# Restrict SQL Server public access
az sql server update --name sql-contoso-prod --resource-group rg-data-prod --set publicNetworkAccess="Disabled"

Frequently asked questions

What does the Defender Secure Score Monitor AI skill do?

Monitor and improve Microsoft Defender for Cloud Secure Score. Tracks score trends, identifies quick wins to improve the score, checks Defender plan coverage, and highlights critical security recommendations. Use when asked about secure score, security posture, Defender status, or security improvements.

Why use Defender Secure Score Monitor on TypingMind?

Because you install it once and use it with any model. Defender Secure Score Monitor is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Defender Secure Score Monitor in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/ricmmartins/azure-sre-agent-skills/tree/main/skills/06-defender-secure-score. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Defender Secure Score Monitor?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Defender Secure Score Monitor?

As many as you like. As long as a model supports skills, you can use Defender Secure Score Monitor with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Defender Secure Score Monitor AI skill free?

Yes. It is published on GitHub by ricmmartins under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇