Microsoft Azure Policy Insights Client Library for Python providing comprehensive Azure Policy services management.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Policy Metadata operations enable querying and accessing policy metadata including built-in policy definitions, categories, and detailed policy information for governance and compliance workflows.
def list(
query_options: Optional[QueryOptions] = None,
**kwargs
) -> ItemPaged[SlimPolicyMetadata]{ .api }
List policy metadata resources.
Parameters:
query_options: Optional query parameters (top, filter, orderby, select)Returns: Paginated collection of SlimPolicyMetadata objects
def get_resource(
resource_name: str,
**kwargs
) -> PolicyMetadata{ .api }
Get a specific policy metadata resource.
Parameters:
resource_name: Name of the policy metadata resourceReturns: PolicyMetadata object with full details
class PolicyMetadata:
id: Optional[str]
type: Optional[str]
name: Optional[str]
properties: Optional[PolicyMetadataProperties]{ .api }
class PolicyMetadataProperties:
metadata_id: Optional[str]
category: Optional[str]
title: Optional[str]
owner: Optional[str]
additional_content_url: Optional[str]
requirements: Optional[List[str]]
description: Optional[str]{ .api }
class SlimPolicyMetadata:
id: Optional[str]
type: Optional[str]
name: Optional[str]
properties: Optional[PolicyMetadataSlimProperties]{ .api }
class PolicyMetadataSlimProperties:
metadata_id: Optional[str]
category: Optional[str]
title: Optional[str]
owner: Optional[str]
additional_content_url: Optional[str]{ .api }
class PolicyMetadataCollection:
value: Optional[List[PolicyMetadata]]
next_link: Optional[str]{ .api }
# List all available policy metadata
metadata_list = client.policy_metadata.list()
for metadata in metadata_list:
print(f"ID: {metadata.name}")
print(f"Category: {metadata.properties.category}")
print(f"Title: {metadata.properties.title}")
print(f"Owner: {metadata.properties.owner}")
print("---")from azure.mgmt.policyinsights.models import QueryOptions
# Filter metadata by specific category
query_options = QueryOptions(
filter="properties/category eq 'Security'",
top=20
)
security_metadata = client.policy_metadata.list(query_options)
print("Security-related policy metadata:")
for metadata in security_metadata:
print(f"- {metadata.properties.title}")
if metadata.properties.additional_content_url:
print(f" Documentation: {metadata.properties.additional_content_url}")# Get full details for a specific policy metadata resource
metadata = client.policy_metadata.get_resource(
resource_name="NIST_SP_800-53_R4_AC-1"
)
print(f"Title: {metadata.properties.title}")
print(f"Category: {metadata.properties.category}")
print(f"Description: {metadata.properties.description}")
print(f"Owner: {metadata.properties.owner}")
if metadata.properties.requirements:
print("Requirements:")
for requirement in metadata.properties.requirements:
print(f" - {requirement}")
if metadata.properties.additional_content_url:
print(f"Additional Content: {metadata.properties.additional_content_url}")# Search for metadata containing specific terms
query_options = QueryOptions(
filter="contains(properties/title, 'encryption')",
orderby="properties/title"
)
encryption_metadata = client.policy_metadata.list(query_options)
print("Encryption-related policies:")
for metadata in encryption_metadata:
print(f"- {metadata.properties.title}")
print(f" Category: {metadata.properties.category}")
print(f" ID: {metadata.name}")# List metadata by owner (e.g., Microsoft)
query_options = QueryOptions(
filter="properties/owner eq 'Microsoft'",
select="name,properties/title,properties/category",
top=50
)
microsoft_metadata = client.policy_metadata.list(query_options)
# Group by category
categories = {}
for metadata in microsoft_metadata:
category = metadata.properties.category or "Other"
if category not in categories:
categories[category] = []
categories[category].append(metadata.properties.title)
for category, titles in categories.items():
print(f"\n{category}:")
for title in sorted(titles):
print(f" - {title}")# Find metadata for specific compliance frameworks
frameworks = ["NIST", "CIS", "PCI", "HIPAA", "SOX"]
for framework in frameworks:
query_options = QueryOptions(
filter=f"contains(properties/title, '{framework}')"
)
framework_metadata = client.policy_metadata.list(query_options)
metadata_list = list(framework_metadata)
print(f"\n{framework} Framework ({len(metadata_list)} policies):")
for metadata in metadata_list:
print(f" - {metadata.properties.title}")Install with Tessl CLI
npx tessl i tessl/pypi-azure-mgmt-policyinsights