# Microsoft Defender for AI Services is enabled on every Azure subscription that hosts Azure OpenAI or Azure AI Services accounts

Defender for Cloud's AI threat protection plan detects attacks against Azure OpenAI and Azure AI Services accounts and must be enabled at the subscription…

Source: https://maester.dev/docs/tests/ZTA.61022

<!-- This file is generated by website/scripts/generate-test-docs.mjs. Do not edit manually. -->

## Overview

Defender for Cloud's AI threat protection plan detects attacks against Azure OpenAI and Azure AI Services accounts and must be enabled at the subscription level. A subscription without the plan enabled emits no AI threat alerts, regardless of how Sentinel or Defender XDR is configured downstream. This check verifies the plan is active on every subscription that hosts Azure OpenAI or Azure AI Services accounts.

When the plan is not enabled on every subscription, the SOC cannot determine whether a silent subscription is clean or simply unmonitored — there is no way to tell the difference. Threat actors who target an unmonitored AI endpoint can carry out attacks without generating a single alert. Without coverage on every subscription, the organization cannot confirm that any of its AI workloads are protected.

**Source:** [Overview - AI threat protection](https://learn.microsoft.com/azure/defender-for-cloud/ai-threat-protection)

## Remediation

- [Enable threat protection for AI services (step-by-step)](https://learn.microsoft.com/azure/defender-for-cloud/ai-onboarding)
- [Overview — AI threat protection](https://learn.microsoft.com/azure/defender-for-cloud/ai-threat-protection)
- [Defender for AI Services alert reference](https://learn.microsoft.com/azure/defender-for-cloud/alerts-ai-workloads)
- [Microsoft.Security/pricings REST reference (read / set the `AI` plan)](https://learn.microsoft.com/rest/api/defenderforcloud/pricings/get)

## Run it

The check runs as part of the whole assessment, with the ZeroTrustAssessment module installed:

```powershell
Install-Module ZeroTrustAssessment -Scope CurrentUser
Connect-Maester
Invoke-Maester -Pack ZTA -SkipBuiltIn
```

Leave out `-SkipBuiltIn` to run Maester's own checks in the same run.

<details>
<summary>About this check</summary>

| | |
| --- | --- |
| Severity | High |
| Effort to fix | Low |
| Impact on users | Low |
| Pillar | AI |
| Category | AI Threat Detection |
| Product | [Azure](/docs/tests/products/azure) |
| Feature | Subscriptions |
| Area | Logging and detection |
| Licence | Microsoft_Defender_for_AI_Services |
| Tenant | Workforce |

Product, feature, area and ATT&CK are Maester's: the assessment does not record them, so Maester keeps them in the pack's `taxonomy.json`.

</details>

<p class="mt-ms-note not-content"><svg class="mt-ms-note__logo" viewBox="0 0 21 21" aria-hidden="true"><rect width="10" height="10" fill="#f25022"/><rect x="11" width="10" height="10" fill="#7fba00"/><rect y="11" width="10" height="10" fill="#00a4ef"/><rect x="11" y="11" width="10" height="10" fill="#ffb900"/></svg><span>A Microsoft check, part of the <a href="/docs/tests/packs/zero-trust-assessment">Zero Trust Assessment</a> pack. Text from ZeroTrustAssessment 3.1.0, © Microsoft, <a href="/docs/tests/packs/zero-trust-assessment#licence">MIT licence</a>.</span></p>
