ADR-0006: Trust Boundary Definition and Security Assumptions
- Status: accepted
- Date: 2024-11-03
- Tags: Security, Threat Model, Trust
Context
We need to clearly define our system’s trust boundaries and security assumptions to:
- Establish realistic security expectations
- Guide security hardening efforts
- Define the scope of security measures
- Inform deployment strategies
- Guide incident response planning
The system includes multiple critical components (SPIKE Nexus, SPIKE Keeper, SPIRE) that handle sensitive data, particularly the root key.
Decision
We will establish the following trust boundary model:
-
Primary Trust Boundary:
- Set at the machine/host level
- Consider the machine as the primary security perimeter
- Treat machine compromise as a complete system compromise
-
Component Security Approach:
- Implement defense-in-depth while acknowledging its limitations
- Focus on container hardening for containerized deployments
- Accept that component-level security provides diminishing returns after machine compromise
Consequences
Positive
- Clear security expectations and boundaries
- Focused security efforts
- Realistic threat modeling
- Efficient resource allocation for security measures
- Clear incident response triggers
- Simplified security architecture
Negative
- Accepting certain security limitations
- Dependency on host-level security
- Need for strong physical security measures
- Higher requirements for host hardening
- Increased importance of access control
Security Implications
Machine-Level Security
Critical Areas
- Physical security
- OS-level hardening
- Access control
- Host monitoring
- System integrity
Attack Vectors Accepted as Valid Threats
- Memory inspection/modification
- Process manipulation
- Workload injection
- SPIRE entry manipulation
- Root key exposure through memory access
Component-Level Security
SPIKE Nexus
- Implement container hardening
- Minimize attack surface
- Monitor for anomalies
- Restrict capabilities
SPIKE Keeper
- Treat compromise as machine compromise
- Implement memory protection measures
- Restrict access and capabilities
- Monitor for unauthorized access
Implementation Requirements
Host Security
Physical Security:
- Secure data center access
- Hardware security modules where applicable
- Physical access logging
- Tamper detection
OS Security:
- Regular security updates
- Minimal running services
- Secure boot
- Kernel hardening
- Access control lists
Container Security
Container Hardening:
- Minimal base images
- No privileged containers
- Resource limitations
- Read-only filesystems
- Security context constraints
Runtime Protection:
- Container scanning
- Runtime security monitoring
- Behavioral analysis
- Resource isolation
Monitoring and Detection
Host-Level
- System integrity monitoring
- Privilege escalation detection
- Resource usage anomalies
- Access pattern analysis
Component-Level:
- Memory access patterns
- Process behavior
- API call patterns
- Resource utilization
Incident Response Triggers
- Unauthorized physical access
- Anomalous system calls
- Unexpected memory access patterns
- SPIRE entry modifications
- Container escape attempts
References
- NIST Guidelines for Server Security
- CIS Benchmarks
- Container Security Best Practices
- NIST SP 800-207A A Zero Trust Architecture Model for Access Control in Cloud-Native Applications in Multi-Cloud Environments
Notes
This ADR should be reviewed when:
- New deployment models are considered
- Significant architecture changes occur
- New security threats emerge
- ADR-0021: SPIKE Keeper as a Stateless Shard Holder
- ADR-0020: Switch to Zola for Documentation System
- ADR-0019: Plugin-Based Storage Backend Architecture
- ADR-0018: Administrative Access to SPIKE
- ADR-0017: Synchronous Persistence for SPIKE Secrets Store
- ADR-0016: Memory-First Secrets Store
- ADR-0015: Use Singular Form for File and Package Naming
- ADR-0014: Maintaining SQLite as SPIKE’s Primary Storage Backend
- ADR-0013: S3-Compatible Storage as SPIKE’s Backing Store
- ADR-0012: HTTP Methods for SPIKE API
- ADR-0011: PostgreSQL as SPIKE’s Backing Store
- ADR-0010: Session Token Storage Strategy for SPIKE Nexus
- ADR-0009: Multi-Administrator Support System
- ADR-0008: Administrative Access Control System
- ADR-0007: Root Key Lifecycle and Management Strategy
- ADR-0006: Trust Boundary Definition and Security Assumptions
- ADR-0005: Use SPIFFE mTLS for Inter-Component Authentication and Communication
- ADR-0004: SPIKE Keeper Minimalist Design Approach
- ADR-0003: Root Key Management and Storage Strategy
- ADR-0002: Use Docsify for Documentation System
- ADR-0001: Display Secrets in Plain Text in SPIKE Pilot Admin CLI