pub struct Config {Show 15 fields
pub server: ServerConfig,
pub scanner: ScannerConfig,
pub shield: ShieldConfig,
pub auth: AuthConfig,
pub signing: SigningConfig,
pub rate_limit: RateLimitConfig,
pub event_processor: EventProcessorConfig,
pub telemetry: TelemetryConfig,
pub storage: StorageConfig,
pub plugins: PluginConfig,
pub audit: AuditConfig,
pub transport: TransportConfig,
pub resilience: ResilienceConfig,
pub neutralization: NeutralizationConfig,
pub neutralizer: Option<NeutralizationConfig>,
}Expand description
Main configuration structure for KindlyGuard
§Security Architecture
KindlyGuard’s configuration implements defense-in-depth with multiple security layers that work together:
- Authentication (
auth) - Identity verification and access control - Rate Limiting (
rate_limit) - Abuse and DoS prevention - Scanner (
scanner) - Threat detection and analysis - Neutralization (
neutralization) - Threat remediation - Audit (
audit) - Security event logging and compliance
§Configuration Priority
When multiple security features could conflict:
- Authentication failures block everything (highest priority)
- Rate limits apply after authentication
- Scanner runs on all authenticated requests
- Neutralization only acts on detected threats
§Example: Minimum Secure Configuration
[auth]
enabled = true
jwt_secret = "your-base64-encoded-secret"
trusted_issuers = ["https://your-auth-server.com"]
[rate_limit]
enabled = true
default_rpm = 60
[scanner]
unicode_detection = true
injection_detection = true
path_traversal_detection = true
xss_detection = true
[neutralization]
mode = "automatic"
audit_all_actions = trueFields§
§server: ServerConfigServer configuration
Controls network exposure and connection handling. Lower limits = more secure but less scalable.
scanner: ScannerConfigSecurity scanning configuration
Primary defense against malicious input. More detections enabled = better security coverage.
shield: ShieldConfigShield display configuration
Visual security status indicator. No direct security impact but aids monitoring.
auth: AuthConfigAuthentication configuration
Access control and identity verification. MUST be enabled in production environments.
signing: SigningConfigMessage signing configuration
Cryptographic integrity for requests/responses. Prevents tampering and replay attacks.
rate_limit: RateLimitConfigRate limiting configuration
Prevents abuse and resource exhaustion. Essential for public-facing deployments.
event_processor: EventProcessorConfigEnhanced security event processing configuration
Advanced threat correlation and analysis. Provides deeper security insights when enabled.
telemetry: TelemetryConfigTelemetry configuration
Security monitoring and metrics. Critical for detecting attacks and anomalies.
storage: StorageConfigStorage configuration
Secure storage for backups and audit logs. Encryption and access control are essential.
plugins: PluginConfigPlugin system configuration
Extensibility with security boundaries. Only load trusted, signed plugins.
audit: AuditConfigAudit logging configuration
Forensic trail of all security events. Required for compliance and incident response.
transport: TransportConfigTransport layer configuration
Communication security settings. Use TLS for all network transports.
resilience: ResilienceConfigResilience configuration for circuit breakers and retry
Prevents cascading failures under attack. Maintains availability during security incidents.
neutralization: NeutralizationConfigThreat neutralization configuration
Active threat remediation settings. Transforms malicious input into safe content.
neutralizer: Option<NeutralizationConfig>Neutralizer configuration (alias for neutralization)
Some tests expect this field name. This is an alias for backwards compatibility.
Implementations§
Source§impl Config
impl Config
Sourcepub const fn is_event_processor_enabled(&self) -> bool
pub const fn is_event_processor_enabled(&self) -> bool
Check if event processor is enabled
Sourcepub fn neutralizer(&self) -> &NeutralizationConfig
pub fn neutralizer(&self) -> &NeutralizationConfig
Get neutralizer configuration Returns the neutralizer field if set, otherwise returns neutralization
Sourcepub fn load() -> Result<Config, Error>
pub fn load() -> Result<Config, Error>
Load configuration from environment and files
§Security Notes
- Configuration files should have restricted permissions (600 or 640)
- Never store secrets directly in config files - use environment variables
- Validate all loaded configurations before use
- Default configuration is intentionally conservative for security
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Config
impl<'de> Deserialize<'de> for Config
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Config, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Config, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for Config
impl Serialize for Config
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more