Microsoft Azure Policy Insights Client Library for Python providing comprehensive Azure Policy services management.
npx @tessl/cli install tessl/pypi-azure-mgmt-policyinsights@1.0.0The Azure Policy Insights Client Library provides comprehensive programmatic access to Azure Policy services, enabling developers to query policy compliance states, policy events, policy metadata, remediations, tracked resources, and policy restrictions. This library supports both synchronous and asynchronous operations and integrates seamlessly with Azure authentication and management workflows.
pip install azure-mgmt-policyinsights# Main synchronous client
from azure.mgmt.policyinsights import PolicyInsightsClient
# Asynchronous client
from azure.mgmt.policyinsights.aio import PolicyInsightsClient as AsyncPolicyInsightsClient
# Models and data types
from azure.mgmt.policyinsights.models import (
PolicyEvent,
PolicyState,
Remediation,
PolicyMetadata,
CheckRestrictionsRequest,
FieldRestrictionResult,
PolicyStatesResource,
ResourceDiscoveryMode
)from azure.identity import DefaultAzureCredential
from azure.mgmt.policyinsights import PolicyInsightsClient
# Initialize client with Azure credentials
credential = DefaultAzureCredential()
subscription_id = "your-subscription-id"
client = PolicyInsightsClient(credential, subscription_id)
# Context manager usage for automatic cleanup
with PolicyInsightsClient(credential, subscription_id) as client:
# Use client operations
passfrom azure.identity.aio import DefaultAzureCredential
from azure.mgmt.policyinsights.aio import PolicyInsightsClient
async def async_example():
credential = DefaultAzureCredential()
async with PolicyInsightsClient(credential, subscription_id) as client:
# Use async client operations
passQuery and summarize policy compliance states across different Azure scopes (management groups, subscriptions, resource groups, and individual resources). Supports filtering, triggering evaluations, and comprehensive compliance reporting.
# Query policy states for subscription
policy_states = client.policy_states.list_query_results_for_subscription(
subscription_id=subscription_id,
policy_states_resource="latest"
)
# Summarize compliance for resource group
summary = client.policy_states.summarize_for_resource_group(
resource_group_name="my-rg",
subscription_id=subscription_id
)Details: Policy States Operations
Query policy evaluation events to track when policies are evaluated and what results are produced. Essential for compliance monitoring and auditing workflows.
# Query policy events for subscription
events = client.policy_events.list_query_results_for_subscription(
subscription_id=subscription_id
)
# Query events for specific resource
resource_events = client.policy_events.list_query_results_for_resource(
resource_id="/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/{provider}/{resource}"
)Details: Policy Events Operations
Create, manage, and monitor policy remediations to automatically fix non-compliant resources. Supports management group, subscription, resource group, and individual resource scopes.
# Create remediation at subscription level
remediation = client.remediations.create_or_update_at_subscription(
subscription_id=subscription_id,
remediation_name="fix-non-compliant-resources",
parameters={
"properties": {
"policyAssignmentId": "/subscriptions/{sub}/providers/Microsoft.Authorization/policyAssignments/{assignment}",
"resourceDiscoveryMode": "ExistingNonCompliant"
}
}
)
# List remediation deployments
deployments = client.remediations.list_deployments_at_subscription(
subscription_id=subscription_id,
remediation_name="fix-non-compliant-resources"
)Details: Remediations Operations
Access policy metadata including built-in policy definitions, categories, and detailed policy information for governance and compliance workflows.
# List all policy metadata
metadata_list = client.policy_metadata.list()
# Get specific policy metadata
metadata = client.policy_metadata.get_resource(
resource_name="policy-metadata-name"
)Details: Policy Metadata Operations
Query resources that are tracked by Azure Policy to understand which resources are being monitored for compliance.
# Query tracked resources for subscription
tracked_resources = client.policy_tracked_resources.list_query_results_for_subscription(
subscription_id=subscription_id
)Details: Policy Tracked Resources Operations
Check what policy restrictions would apply to resource operations before attempting to perform them, enabling proactive compliance validation.
from azure.mgmt.policyinsights.models import CheckRestrictionsRequest
# Check restrictions for subscription scope
request = CheckRestrictionsRequest(
resource_details={
"resource_content": {"location": "eastus", "kind": "web"},
"api_version": "2021-01-01"
}
)
restrictions = client.policy_restrictions.check_at_subscription_scope(
subscription_id=subscription_id,
parameters=request
)Details: Policy Restrictions Operations
Query available operations and capabilities provided by the Policy Insights service for programmatic discovery of supported API functionality.
# List all available operations
operations = client.operations.list()Usage example:
# Discover available operations
operations_list = client.operations.list()
for operation in operations_list:
print(f"Operation: {operation.name}")
print(f"Display Name: {operation.display.operation}")
print(f"Description: {operation.display.description}")The Azure Policy Insights Client Library follows the Azure SDK design patterns:
PolicyInsightsClient serves as the main entry point with operation groups as propertiespolicy_states: Policy compliance state queries and summariespolicy_events: Policy evaluation event queriesremediations: Policy remediation managementpolicy_metadata: Policy metadata and definition discoverypolicy_tracked_resources: Tracked resource queriespolicy_restrictions: Policy restriction validationoperations: API operation discoveryaio moduleThe library uses standard Azure SDK exceptions:
from azure.core.exceptions import HttpResponseError, ClientAuthenticationError
try:
policy_states = client.policy_states.list_query_results_for_subscription(
subscription_id=subscription_id,
policy_states_resource="latest"
)
except ClientAuthenticationError:
# Handle authentication issues
pass
except HttpResponseError as e:
# Handle HTTP errors (4xx, 5xx)
print(f"HTTP error: {e.status_code} - {e.message}")