0
# Policy Tracked Resources Operations
1
2
## Overview
3
4
Policy Tracked Resources operations enable querying resources that are tracked by Azure Policy to understand which resources are being monitored for compliance across different scopes.
5
6
## Core Functionality
7
8
### Query Operations
9
10
#### list_query_results_for_management_group
11
12
```python
13
def list_query_results_for_management_group(
14
management_group_name: str,
15
query_options: Optional[QueryOptions] = None,
16
**kwargs
17
) -> ItemPaged[PolicyTrackedResource]
18
```
19
{ .api }
20
21
Query tracked resources for a management group.
22
23
**Parameters:**
24
- `management_group_name`: Management group name
25
- `query_options`: Optional query parameters (top, filter, orderby, select)
26
27
**Returns:** Paginated collection of PolicyTrackedResource objects
28
29
#### list_query_results_for_subscription
30
31
```python
32
def list_query_results_for_subscription(
33
subscription_id: str,
34
query_options: Optional[QueryOptions] = None,
35
**kwargs
36
) -> ItemPaged[PolicyTrackedResource]
37
```
38
{ .api }
39
40
Query tracked resources for a subscription.
41
42
**Parameters:**
43
- `subscription_id`: Azure subscription ID
44
- `query_options`: Optional query parameters
45
46
**Returns:** Paginated collection of PolicyTrackedResource objects
47
48
#### list_query_results_for_resource_group
49
50
```python
51
def list_query_results_for_resource_group(
52
subscription_id: str,
53
resource_group_name: str,
54
query_options: Optional[QueryOptions] = None,
55
**kwargs
56
) -> ItemPaged[PolicyTrackedResource]
57
```
58
{ .api }
59
60
Query tracked resources for a resource group.
61
62
**Parameters:**
63
- `subscription_id`: Azure subscription ID
64
- `resource_group_name`: Resource group name
65
- `query_options`: Optional query parameters
66
67
**Returns:** Paginated collection of PolicyTrackedResource objects
68
69
#### list_query_results_for_resource
70
71
```python
72
def list_query_results_for_resource(
73
resource_id: str,
74
query_options: Optional[QueryOptions] = None,
75
**kwargs
76
) -> ItemPaged[PolicyTrackedResource]
77
```
78
{ .api }
79
80
Query tracked resources for a specific resource.
81
82
**Parameters:**
83
- `resource_id`: Full Azure resource ID
84
- `query_options`: Optional query parameters
85
86
**Returns:** Paginated collection of PolicyTrackedResource objects
87
88
## Related Types
89
90
### PolicyTrackedResource
91
92
```python
93
class PolicyTrackedResource:
94
tracked_resource_id: Optional[str]
95
policy_details: Optional[PolicyDetails]
96
tracked_resource_type: Optional[str]
97
last_update_utc: Optional[datetime.datetime]
98
tracked_resource_modification_details: Optional[TrackedResourceModificationDetails]
99
```
100
{ .api }
101
102
### PolicyDetails
103
104
```python
105
class PolicyDetails:
106
policy_definition_id: Optional[str]
107
policy_assignment_id: Optional[str]
108
policy_assignment_name: Optional[str]
109
policy_assignment_owner: Optional[str]
110
policy_assignment_scope: Optional[str]
111
policy_set_definition_id: Optional[str]
112
policy_definition_reference_id: Optional[str]
113
```
114
{ .api }
115
116
### TrackedResourceModificationDetails
117
118
```python
119
class TrackedResourceModificationDetails:
120
policy_details: Optional[PolicyDetails]
121
deployment_id: Optional[str]
122
deployment_time: Optional[datetime.datetime]
123
```
124
{ .api }
125
126
### PolicyTrackedResourcesQueryResults
127
128
```python
129
class PolicyTrackedResourcesQueryResults:
130
odata_context: Optional[str]
131
odata_count: Optional[int]
132
odata_next_link: Optional[str]
133
value: Optional[List[PolicyTrackedResource]]
134
```
135
{ .api }
136
137
## Usage Examples
138
139
### Query All Tracked Resources for Subscription
140
141
```python
142
# Query all resources tracked by policies in a subscription
143
tracked_resources = client.policy_tracked_resources.list_query_results_for_subscription(
144
subscription_id=subscription_id
145
)
146
147
for resource in tracked_resources:
148
print(f"Resource ID: {resource.tracked_resource_id}")
149
print(f"Resource Type: {resource.tracked_resource_type}")
150
print(f"Last Updated: {resource.last_update_utc}")
151
152
if resource.policy_details:
153
policy = resource.policy_details
154
print(f"Policy Assignment: {policy.policy_assignment_name}")
155
print(f"Policy Definition: {policy.policy_definition_id}")
156
157
print("---")
158
```
159
160
### Filter Tracked Resources by Type
161
162
```python
163
from azure.mgmt.policyinsights.models import QueryOptions
164
165
# Query only storage account resources being tracked
166
query_options = QueryOptions(
167
filter="trackedResourceType eq 'Microsoft.Storage/storageAccounts'",
168
top=50,
169
orderby="lastUpdateUtc desc"
170
)
171
172
storage_tracked = client.policy_tracked_resources.list_query_results_for_subscription(
173
subscription_id=subscription_id,
174
query_options=query_options
175
)
176
177
print("Tracked Storage Accounts:")
178
for resource in storage_tracked:
179
print(f"- {resource.tracked_resource_id}")
180
print(f" Last Modified: {resource.last_update_utc}")
181
182
if resource.tracked_resource_modification_details:
183
mod_details = resource.tracked_resource_modification_details
184
print(f" Modified by deployment: {mod_details.deployment_id}")
185
print(f" Deployment time: {mod_details.deployment_time}")
186
```
187
188
### Query Recently Modified Tracked Resources
189
190
```python
191
from datetime import datetime, timedelta
192
193
# Query resources modified in the last 7 days
194
week_ago = datetime.utcnow() - timedelta(days=7)
195
query_options = QueryOptions(
196
filter=f"lastUpdateUtc ge {week_ago.isoformat()}Z",
197
orderby="lastUpdateUtc desc",
198
top=100
199
)
200
201
recent_tracked = client.policy_tracked_resources.list_query_results_for_subscription(
202
subscription_id=subscription_id,
203
query_options=query_options
204
)
205
206
print("Recently modified tracked resources:")
207
for resource in recent_tracked:
208
print(f"Resource: {resource.tracked_resource_id}")
209
print(f"Type: {resource.tracked_resource_type}")
210
print(f"Modified: {resource.last_update_utc}")
211
212
# Check if resource was modified by a remediation
213
if resource.tracked_resource_modification_details:
214
mod_details = resource.tracked_resource_modification_details
215
if mod_details.deployment_id:
216
print(f" -> Modified by remediation deployment: {mod_details.deployment_id}")
217
print()
218
```
219
220
### Query Tracked Resources for Specific Policy
221
222
```python
223
# Query resources tracked by a specific policy assignment
224
policy_assignment_id = "/subscriptions/{subscription-id}/providers/Microsoft.Authorization/policyAssignments/my-policy"
225
226
query_options = QueryOptions(
227
filter=f"policyDetails/policyAssignmentId eq '{policy_assignment_id}'"
228
)
229
230
policy_tracked = client.policy_tracked_resources.list_query_results_for_subscription(
231
subscription_id=subscription_id,
232
query_options=query_options
233
)
234
235
print(f"Resources tracked by policy assignment:")
236
for resource in policy_tracked:
237
print(f"- {resource.tracked_resource_id}")
238
print(f" Type: {resource.tracked_resource_type}")
239
if resource.policy_details:
240
print(f" Assignment: {resource.policy_details.policy_assignment_name}")
241
```
242
243
### Monitor Resource Group Tracked Resources
244
245
```python
246
# Monitor tracked resources in a specific resource group
247
tracked_in_rg = client.policy_tracked_resources.list_query_results_for_resource_group(
248
subscription_id=subscription_id,
249
resource_group_name="production-rg",
250
query_options=QueryOptions(orderby="trackedResourceType,trackedResourceId")
251
)
252
253
# Group by resource type
254
by_type = {}
255
for resource in tracked_in_rg:
256
resource_type = resource.tracked_resource_type or "Unknown"
257
if resource_type not in by_type:
258
by_type[resource_type] = []
259
by_type[resource_type].append(resource)
260
261
print("Tracked resources by type:")
262
for resource_type, resources in by_type.items():
263
print(f"\n{resource_type} ({len(resources)} resources):")
264
for resource in resources:
265
print(f" - {resource.tracked_resource_id}")
266
if resource.policy_details:
267
print(f" Policy: {resource.policy_details.policy_assignment_name}")
268
```
269
270
### Check Individual Resource Tracking
271
272
```python
273
# Check if a specific resource is being tracked
274
resource_id = "/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Storage/storageAccounts/{name}"
275
276
tracked_resource = client.policy_tracked_resources.list_query_results_for_resource(
277
resource_id=resource_id
278
)
279
280
tracked_list = list(tracked_resource)
281
if tracked_list:
282
print(f"Resource {resource_id} is being tracked by {len(tracked_list)} policies:")
283
for tracked in tracked_list:
284
if tracked.policy_details:
285
policy = tracked.policy_details
286
print(f"- Policy Assignment: {policy.policy_assignment_name}")
287
print(f" Policy Definition: {policy.policy_definition_id}")
288
print(f" Last Updated: {tracked.last_update_utc}")
289
else:
290
print(f"Resource {resource_id} is not currently being tracked by any policies")
291
```