auth_framework/analytics/
compliance.rs1use super::{AnalyticsError, ComplianceMetrics, TimeRange};
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone, Serialize, Deserialize, Default)]
11pub struct ComplianceConfig {
12 pub sox_compliance: bool,
14
15 pub gdpr_compliance: bool,
17
18 pub hipaa_compliance: bool,
20
21 pub custom_rules: Vec<ComplianceRule>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct ComplianceRule {
28 pub id: String,
30
31 pub name: String,
33
34 pub description: String,
36
37 pub rule_type: ComplianceRuleType,
39
40 pub parameters: std::collections::HashMap<String, String>,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize)]
46pub enum ComplianceRuleType {
47 PermissionSeparation,
48 AccessReview,
49 PrivilegeEscalation,
50 DataAccess,
51 Custom(String),
52}
53
54pub struct ComplianceMonitor {
56 #[allow(dead_code)]
57 config: ComplianceConfig,
58}
59
60impl ComplianceMonitor {
61 pub fn new(config: ComplianceConfig) -> Self {
63 Self { config }
64 }
65
66 pub async fn check_compliance(
68 &self,
69 _time_range: TimeRange,
70 ) -> Result<ComplianceMetrics, AnalyticsError> {
71 Ok(ComplianceMetrics {
73 role_assignment_compliance: 95.0,
74 permission_scoping_compliance: 88.0,
75 orphaned_permissions: 5,
76 over_privileged_users: 12,
77 unused_roles: 3,
78 avg_access_revocation_time_hours: 2.5,
79 policy_violations: 8,
80 security_incidents: 1,
81 })
82 }
83}
84
85