pub mod load_balancing;
pub mod performance;
pub use load_balancing::*;
pub use performance::*;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::time::Duration;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudSecurityConfig {
pub authentication: AuthenticationConfig,
pub authorization: AuthorizationConfig,
pub encryption: EncryptionConfig,
pub network_security: NetworkSecurityConfig,
pub compliance: ComplianceConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuthenticationConfig {
pub methods: Vec<AuthMethod>,
pub mfa: MFAConfig,
pub sso: SSOConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AuthMethod {
Password,
APIKey,
Certificate,
OAuth2,
SAML,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MFAConfig {
pub enabled: bool,
pub methods: Vec<MFAMethod>,
pub backup_codes: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum MFAMethod {
TOTP,
SMS,
Email,
PushNotification,
Hardware,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SSOConfig {
pub enabled: bool,
pub provider: SSOProvider,
pub saml: SAMLConfig,
pub oidc: OIDCConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum SSOProvider {
SAML,
OIDC,
LDAP,
ActiveDirectory,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SAMLConfig {
pub idp_url: String,
pub sp_id: String,
pub certificate: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OIDCConfig {
pub client_id: String,
pub client_secret: String,
pub discovery_url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuthorizationConfig {
pub model: AuthorizationModel,
pub roles: Vec<RoleDefinition>,
pub permissions: PermissionSystem,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AuthorizationModel {
RBAC,
ABAC,
DAC,
MAC,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RoleDefinition {
pub name: String,
pub description: String,
pub permissions: Vec<String>,
pub parent_roles: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PermissionSystem {
pub model: PermissionModel,
pub resources: Vec<ResourceDefinition>,
pub actions: Vec<ActionDefinition>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PermissionModel {
ResourceAction,
CapabilityBased,
AttributeBased,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceDefinition {
pub resource_type: String,
pub attributes: HashMap<String, String>,
pub access_patterns: Vec<AccessPattern>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccessPattern {
pub name: String,
pub actions: Vec<String>,
pub conditions: Vec<AccessCondition>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccessCondition {
pub attribute: String,
pub operator: String,
pub value: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActionDefinition {
pub name: String,
pub description: String,
pub required_permissions: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EncryptionConfig {
pub at_rest: EncryptionAtRestConfig,
pub in_transit: EncryptionInTransitConfig,
pub key_management: EncryptionKeyManagementConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EncryptionAtRestConfig {
pub enabled: bool,
pub algorithm: String,
pub key_size: usize,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EncryptionInTransitConfig {
pub enabled: bool,
pub tls_version: String,
pub cipher_suites: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EncryptionKeyManagementConfig {
pub service: KeyManagementService,
pub rotation_policy: EncryptionKeyRotationPolicy,
pub backup_policy: EncryptionKeyBackupPolicy,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum KeyManagementService {
AwsKms,
AzureKeyVault,
GoogleKms,
HashiCorpVault,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EncryptionKeyRotationPolicy {
pub enabled: bool,
pub frequency: Duration,
pub automatic: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EncryptionKeyBackupPolicy {
pub enabled: bool,
pub frequency: Duration,
pub locations: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NetworkSecurityConfig {
pub firewall: FirewallConfig,
pub vpn: VPNConfig,
pub ddos_protection: DDoSProtectionConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FirewallConfig {
pub enabled: bool,
pub rules: Vec<FirewallRule>,
pub default_policy: FirewallPolicy,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FirewallRule {
pub name: String,
pub source: String,
pub destination: String,
pub port: String,
pub protocol: String,
pub action: FirewallAction,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum FirewallPolicy {
Allow,
Deny,
Log,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum FirewallAction {
Allow,
Deny,
Log,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VPNConfig {
pub enabled: bool,
pub vpn_type: VPNType,
pub connection: VPNConnectionConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum VPNType {
SiteToSite,
PointToSite,
PointToPoint,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VPNConnectionConfig {
pub gateway: String,
pub psk: String,
pub encryption: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DDoSProtectionConfig {
pub enabled: bool,
pub level: DDoSProtectionLevel,
pub rate_limiting: RateLimitingConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DDoSProtectionLevel {
Basic,
Standard,
Premium,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RateLimitingConfig {
pub enabled: bool,
pub limits: HashMap<String, usize>,
pub windows: HashMap<String, Duration>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ComplianceConfig {
pub frameworks: Vec<ComplianceFramework>,
pub audit: AuditConfig,
pub data_governance: DataGovernanceConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ComplianceFramework {
SOC2,
ISO27001,
GDPR,
HIPAA,
PciDss,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuditConfig {
pub enabled: bool,
pub events: Vec<AuditEvent>,
pub retention: Duration,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AuditEvent {
Authentication,
Authorization,
DataAccess,
ConfigChange,
SecurityEvent,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DataGovernanceConfig {
pub classification: DataClassificationConfig,
pub retention: DataRetentionConfig,
pub privacy: DataPrivacyConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DataClassificationConfig {
pub levels: Vec<ClassificationLevel>,
pub auto_classification: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ClassificationLevel {
pub name: String,
pub sensitivity: u8,
pub requirements: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DataRetentionConfig {
pub policies: Vec<RetentionPolicy>,
pub default_retention: Duration,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RetentionPolicy {
pub data_type: String,
pub retention_period: Duration,
pub disposal_method: DisposalMethod,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DisposalMethod {
Delete,
Archive,
Anonymize,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DataPrivacyConfig {
pub controls: Vec<PrivacyControl>,
pub consent: ConsentManagementConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PrivacyControl {
Anonymization,
Pseudonymization,
DataMinimization,
AccessControl,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConsentManagementConfig {
pub enabled: bool,
pub consent_types: Vec<String>,
pub withdrawal_process: WithdrawalProcess,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WithdrawalProcess {
pub methods: Vec<WithdrawalMethod>,
pub processing_time: Duration,
pub confirmation_required: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum WithdrawalMethod {
Online,
Email,
Phone,
Mail,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BudgetManagementConfig {
pub global_budget: GlobalBudgetConfig,
pub department_budgets: HashMap<String, DepartmentBudgetConfig>,
pub project_budgets: HashMap<String, ProjectBudgetConfig>,
pub monitoring: BudgetMonitoringConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GlobalBudgetConfig {
pub total_budget: f64,
pub period: BudgetPeriod,
pub currency: String,
pub rollover_policy: RolloverPolicy,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum BudgetPeriod {
Monthly,
Quarterly,
Annual,
Custom(Duration),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum RolloverPolicy {
NoRollover,
FullRollover,
PartialRollover(f64),
ConditionalRollover,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DepartmentBudgetConfig {
pub name: String,
pub allocated_budget: f64,
pub spending_limits: SpendingLimits,
pub approval_workflow: BudgetApprovalWorkflow,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SpendingLimits {
pub daily_limit: Option<f64>,
pub weekly_limit: Option<f64>,
pub monthly_limit: Option<f64>,
pub per_transaction_limit: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BudgetApprovalWorkflow {
pub levels: Vec<BudgetApprovalLevel>,
pub auto_approval_thresholds: HashMap<String, f64>,
pub escalation_timeouts: HashMap<String, Duration>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BudgetApprovalLevel {
pub name: String,
pub approvers: Vec<String>,
pub thresholds: HashMap<String, f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProjectBudgetConfig {
pub name: String,
pub budget: f64,
pub cost_tracking: ProjectCostTracking,
pub alerts: ProjectBudgetAlerts,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProjectCostTracking {
pub granularity: CostTrackingGranularity,
pub categories: Vec<CostCategory>,
pub allocation_rules: Vec<CostAllocationRule>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum CostTrackingGranularity {
Hourly,
Daily,
Weekly,
Monthly,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CostCategory {
pub name: String,
pub description: String,
pub budget_allocation: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CostAllocationRule {
pub name: String,
pub source: String,
pub target: String,
pub percentage: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProjectBudgetAlerts {
pub thresholds: Vec<f64>,
pub recipients: Vec<String>,
pub frequency: AlertFrequency,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AlertFrequency {
Immediate,
Daily,
Weekly,
OnThreshold,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BudgetMonitoringConfig {
pub real_time: bool,
pub reporting_frequency: ReportingFrequency,
pub variance_analysis: BudgetVarianceAnalysis,
pub forecasting: BudgetForecastingConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ReportingFrequency {
RealTime,
Hourly,
Daily,
Weekly,
Monthly,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BudgetVarianceAnalysis {
pub enabled: bool,
pub thresholds: BudgetVarianceThresholds,
pub methods: Vec<VarianceAnalysisMethod>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BudgetVarianceThresholds {
pub warning: f64,
pub critical: f64,
pub emergency: f64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum VarianceAnalysisMethod {
AbsoluteVariance,
PercentageVariance,
TrendAnalysis,
SeasonalAnalysis,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BudgetForecastingConfig {
pub enabled: bool,
pub models: Vec<BudgetForecastingModel>,
pub horizon: Duration,
pub update_frequency: Duration,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum BudgetForecastingModel {
LinearTrend,
ExponentialSmoothing,
ARIMA,
MachineLearning,
Custom(String),
}