Skip to content

Commit 4476cd1

Browse files
Merge pull request #313487 from MicrosoftDocs/main
Auto Publish – main to live - 2026-03-21 11:00 UTC
2 parents 81c31b3 + 37b5a3d commit 4476cd1

3 files changed

Lines changed: 110 additions & 64 deletions

File tree

articles/governance/policy/concepts/exemption-structure.md

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,41 @@ Exemptions support an optional property `resourceSelectors` that works the same
118118
}
119119
```
120120

121-
Regions can be added or removed from the `resourceLocation` list in the example. Resource selectors allow for greater flexibility of where and how exemptions can be created and managed.
121+
The follow resource selectors `kinds` are supported in the policy exemptions object:
122+
- resourceLocation: This property is used to select resources based on their type. Can't be used in the same resource selector as resourceWithoutLocation.
123+
- resourceType: This property is used to select resources based on their type.
124+
- resourceWithoutLocation: This property is used to select resources at the subscription level that don't have a location. Currently only supports subscriptionLevelResources. Can't be used in the same resource selector as resourceLocation.
125+
- in: The list of allowed values for the specified kind. Can't be used with notIn. Can contain up to 50 values.
126+
- notIn: The list of not-allowed values for the specified kind. Can't be used with in. Can contain up to 50 values.
127+
- userPrincipalId: the list of the allowed user object IDs can be exempt in the request. This can be associated with an individual user, an MSI, or a service principal.
128+
- groupPrincipalId: the list of the allowed security group IDs can be exempt in the request. A resource selector can contain multiple selectors. To be applicable to a resource selector, a resource must meet requirements specified by all its selectors. Further, up to 10 resourceSelectors can be specified in a single assignment. In-scope resources are evaluated when they satisfy any one of these resource selectors.
129+
130+
131+
### Identity based exemptions (preview)
132+
133+
You can leverage selector kinds userPrincipalId and groupPrincipalId within the exemption structure to enable a specific service principal, MSI, user, or security group to bypass a policy assignment's enforcement.
134+
135+
Take an example where you want to assign the built-in policy definition `Allowed virtual machine size SKUs` in your subscription to ensure that only A-family VMs can be deployed, with the exception of a high privileged group. You can use identity based conditions to exempt this group in your organization from this enforcement.
136+
137+
This is an example of an identity-based exemption:
138+
139+
```json
140+
"properties": {
141+
"policyAssignmentId": "/subscriptions/<subscriptionID>/providers/Microsoft.Authorization/policyAssignments/CostMgmt",
142+
"resourceSelectors": [{
143+
"name": "AllowedGroups",
144+
"selectors": [{
145+
"kind": "groupPrincipalId",
146+
"in": [ "<HighPrivEngGroupId>" ]
147+
},
148+
]
149+
}
150+
],
151+
"exemptionCategory": "Waiver",
152+
"displayName": "Exempt high SKU VM",
153+
"description": "Exempt high SKU VM for business need"
154+
}
155+
```
122156

123157
## Assignment scope validation (preview)
124158

articles/governance/policy/concepts/policy-for-kubernetes.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,13 @@ Finally, to identify the AKS cluster version that you're using, follow the linke
610610

611611
### Add-on versions available per each AKS cluster version
612612

613+
#### 1.16.0
614+
Introducing Validating Admission Policy (VAP) generation. [Validating Admission Policies](https://kubernetes.io/docs/reference/access-authn-authz/validating-admission-policy/) are Kubernetes-native validating policy resources that are evaluated in-process, allowing for reduced latency and fail-close evaluation. Azure Policies that contain Common Expression Language (CEL) will automatically generate VAPs. For more information, view the [Gatekeeper Documentation](https://open-policy-agent.github.io/gatekeeper/website/docs/validating-admission-policy/).
615+
Patch CVEs.
616+
- Released Apr 2026
617+
- Kubernetes 1.29+
618+
##### Gatekeeper 3.22.1-1
619+
613620
#### 1.15.4
614621
Patch CVE-2025-61727
615622
- Released Dec 2025

0 commit comments

Comments
 (0)