Enterprise compliance, audit trails, and data governance
Ensure regulatory compliance with comprehensive audit logging, policy enforcement, and data masking across 400+ modules
Enterprise Compliance
Part of 237 enterprise modules with 18 compliance & audit features including PII detection, GDPR tools, and tamper-evident logging. See Enterprise Documentation.
The Compliance module provides 10 enterprise governance modules including tamper-evident audit trails, configurable policy enforcement, and intelligent data masking for PII protection.
fromagenticaiframework.complianceimport(AuditTrailManager,audit_trail,AuditEvent,AuditEventType,AuditSeverity)# Use global instanceaudit=AuditTrailManager()# Log an eventaudit.log_event(event_type=AuditEventType.DATA_ACCESS,severity=AuditSeverity.INFO,actor="user@example.com",action="read_customer_data",resource="customers/12345",details={"fields":["name","email"]})
fromagenticaiframework.complianceimportAuditEventType# Available event typesAuditEventType.AUTHENTICATION# Login/logout eventsAuditEventType.AUTHORIZATION# Access control decisionsAuditEventType.DATA_ACCESS# Data read operationsAuditEventType.DATA_MODIFICATION# Data write operationsAuditEventType.DATA_DELETION# Data removalAuditEventType.CONFIGURATION# Config changesAuditEventType.SYSTEM# System eventsAuditEventType.SECURITY# Security eventsAuditEventType.COMPLIANCE# Compliance checksAuditEventType.AGENT_ACTION# Agent operations
fromagenticaiframework.complianceimportaudit_action@audit_action(event_type=AuditEventType.DATA_ACCESS,severity=AuditSeverity.INFO,resource_param="customer_id")defget_customer_data(customer_id:str,fields:list):"""Fetch customer data - automatically audited."""returndatabase.get_customer(customer_id,fields)# Call is automatically loggeddata=get_customer_data("12345",["name","email"])
fromagenticaiframework.complianceimport(DataMaskingEngine,data_masking,MaskingRule,MaskingType)# Create masking enginemasker=DataMaskingEngine(audit_trail)# Mask datamasked=masker.mask_text("Contact John Doe at john.doe@email.com or 555-123-4567")# Result: "Contact [NAME] at [EMAIL] or [PHONE]"
# Define custom rulesemail_rule=MaskingRule(name="email",pattern=r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}',masking_type=MaskingType.PARTIAL,partial_show=2# Show first 2 chars)phone_rule=MaskingRule(name="phone",pattern=r'\b\d{3}[-.]?\d{3}[-.]?\d{4}\b',masking_type=MaskingType.REDACT,replacement="[PHONE]")ssn_rule=MaskingRule(name="ssn",pattern=r'\b\d{3}-\d{2}-\d{4}\b',masking_type=MaskingType.HASH)# Register rulesmasker.add_rule(email_rule)masker.add_rule(phone_rule)masker.add_rule(ssn_rule)
fromagenticaiframework.complianceimportmask_output@mask_output(fields=["email","phone","ssn"],masking_type=MaskingType.REDACT)defget_user_profile(user_id:str)->dict:"""Get user profile - sensitive fields automatically masked."""returndatabase.get_user(user_id)# Returned data has masked fieldsprofile=get_user_profile("user-123")# {"name": "John", "email": "[EMAIL]", "phone": "[PHONE]"}
importlogginglogger=logging.getLogger(__name__)# Detect PII without maskingpii_found=masker.detect_pii(text)forpiiinpii_found:logger.info(f"Found {pii.type} at position {pii.start}-{pii.end}")logger.info(f"Value: {pii.value}")logger.info(f"Confidence: {pii.confidence}")
fromagenticaiframeworkimportAgentfromagenticaiframework.complianceimport(audit_trail,policy_engine,data_masking,audit_action,enforce_policy,mask_output,AuditEventType,AuditSeverity,Policy,PolicyType,MaskingType)# Configure compliance# 1. Set up audit trailaudit_trail.configure(storage="database",connection_string="postgresql://...",retention_days=365)# 2. Define policiescustomer_policy=Policy(name="customer_data_access",type=PolicyType.ACCESS_CONTROL,rules=[{"condition":"role == 'admin'","action":"allow"},{"condition":"role == 'support'","action":"allow","fields":["name","email"]},{"condition":"default","action":"deny"}])policy_engine.register_policy(customer_policy)# 3. Configure data maskingdata_masking.configure_pii_detection(detect_emails=True,detect_phones=True,detect_ssn=True,detect_credit_cards=True)# Compliant service implementationclassCustomerService:@audit_action(event_type=AuditEventType.DATA_ACCESS,severity=AuditSeverity.INFO)@enforce_policy(policy_name="customer_data_access")@mask_output(masking_type=MaskingType.PARTIAL)defget_customer(self,customer_id:str,context:dict)->dict:"""Get customer data with full compliance."""returnself.database.get_customer(customer_id)@audit_action(event_type=AuditEventType.DATA_MODIFICATION,severity=AuditSeverity.WARNING)@enforce_policy(policy_name="customer_data_access")defupdate_customer(self,customer_id:str,data:dict,context:dict)->bool:"""Update customer with audit trail."""# Mask sensitive data in logssafe_data=data_masking.mask_dict(data)audit_trail.log_event(event_type=AuditEventType.DATA_MODIFICATION,details={"customer_id":customer_id,"changes":safe_data})returnself.database.update_customer(customer_id,data)# Usageservice=CustomerService()# This call is:# - Audited (who, what, when)# - Policy checked (access control)# - Output masked (PII protection)customer=service.get_customer("12345",context={"role":"support","user":"alice@example.com"})