use crate::compliance::{ComplianceCheckResult, ComplianceStandard};
pub struct FedRampCompliance {
encryption_enabled: bool,
mfa_enabled: bool,
#[allow(dead_code)]
incident_response_plan: bool,
#[allow(dead_code)]
continuous_monitoring: bool,
}
impl FedRampCompliance {
pub fn new() -> Self {
Self {
encryption_enabled: false,
mfa_enabled: false,
incident_response_plan: false,
continuous_monitoring: false,
}
}
pub fn check(&self) -> ComplianceCheckResult {
let mut issues = Vec::new();
let mut recommendations = Vec::new();
if !self.encryption_enabled {
issues.push("FIPS 140-2 encryption not enabled".to_string());
recommendations.push("Enable FIPS 140-2 validated encryption".to_string());
}
if !self.mfa_enabled {
issues.push("Multi-factor authentication not enabled".to_string());
recommendations.push("Implement MFA for all users".to_string());
}
ComplianceCheckResult {
standard: ComplianceStandard::FedRAMP,
compliant: issues.is_empty(),
issues,
recommendations,
}
}
}
impl Default for FedRampCompliance {
fn default() -> Self {
Self::new()
}
}