Files
proxmox/docs/02-architecture/PHOENIX_SYSTEM_BOUNDARY_STATEMENT.md
defiQUG fbda1b4beb
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
docs: Ledger Live integration, contract deploy learnings, NEXT_STEPS updates
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands
- CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround
- CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check
- NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere
- MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates
- LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 15:46:57 -08:00

557 lines
17 KiB
Markdown

# Phoenix System Boundary Statement
**System Name:** Phoenix Core
**System Version:** 1.0.0
**Classification:** Unclassified
**Document Version:** 1.0.0
**Last Updated:** 2026-01-09
**Status:** Active Documentation
**Author:** Infrastructure Team
---
## 1. System Identification
### 1.1 System Name and Acronym
**System Name:** Phoenix Core
**System Acronym:** PHX-CORE
**System Aliases:** Phoenix, Phoenix v1.0
### 1.2 System Purpose
Phoenix Core provides a secure, scalable application platform supporting:
- Authentication and authorization services (Keycloak)
- Application programming interface (GraphQL API)
- Web-based user interface (Portal)
- Data persistence layer (PostgreSQL)
Phoenix Core serves as the foundation for future service migrations and expansion within the Sankofa infrastructure ecosystem.
### 1.3 System Owner and Point of Contact
**System Owner:** Infrastructure Team
**Technical Contact:** Infrastructure Team
**Security Contact:** Infrastructure Team
---
## 2. System Boundary Definition
### 2.1 Components Included in System Boundary
The Phoenix Core system boundary includes the following components:
#### 2.1.1 Computing Resources
**VMID Range:** 8600-8699 (Phoenix Core allocation)
| Component | VMID | IP Address | Function |
|-----------|------|------------|----------|
| Phoenix API | 8600 | 10.160.0.10 | Application API server (GraphQL) |
| Phoenix Portal | 8601 | 10.160.0.11 | Web-based user interface |
| Phoenix Keycloak | 8602 | 10.160.0.12 | Identity and access management |
| Phoenix PostgreSQL | 8603 | 10.160.0.13 | Database server |
**Physical Host:** r630-01 (192.168.11.11) - Proxmox VE hypervisor
#### 2.1.2 Network Infrastructure
**VLAN:** 160 (SANKOFA-SVC)
**Subnet:** 10.160.0.0/22
**Gateway:** 10.160.0.1
**Network Type:** Private (RFC 1918)
**Network Segments:**
- Internal service-to-service communication (10.160.0.0/22)
- Management network connectivity (192.168.11.0/24 via ER605)
- Egress NAT connectivity (via Block #5 when assigned)
#### 2.1.3 Storage Infrastructure
**Storage Type:** Proxmox thin-provisioned LVM (thin1)
**Allocation:**
- VMID 8600: 50GB
- VMID 8601: 50GB
- VMID 8602: 30GB
- VMID 8603: 50GB
**Total Allocated:** 180GB
#### 2.1.4 Software Components
**Operating System:** Ubuntu 22.04 LTS (container base)
**Application Stack:**
- Node.js 18 (API and Portal)
- PostgreSQL 16 (Database)
- Keycloak 24.0.0 (Identity Provider)
- Next.js (Portal framework)
### 2.2 Components Excluded from System Boundary
The following components are **explicitly excluded** from the Phoenix Core system boundary:
#### 2.2.1 Legacy Services
- **VMIDs 7800-7803 (Legacy Sankofa Services):**
- sankofa-api-1 (7800, 192.168.11.13)
- sankofa-portal-1 (7801, 192.168.11.16)
- sankofa-keycloak-1 (7802, 192.168.11.17)
- Legacy PostgreSQL (if exists)
**Rationale:** Legacy services operate on a separate network (192.168.11.x) and are not part of the Phoenix Core system.
#### 2.2.2 DBIS Core Services
- **VMIDs 10100-10151:** DBIS Core services (PostgreSQL, Redis, API, Frontend)
- **Location:** ml110 (192.168.11.10)
- **Network:** 192.168.11.x
**Rationale:** DBIS Core services are separate systems with distinct purposes and will be migrated to Phoenix in future phases.
#### 2.2.3 Blockchain Services
- **VMIDs 1000-1004:** Besu Validators
- **VMIDs 1500-1503:** Besu Sentries
- **VMIDs 2500-2502:** Besu RPC Nodes
- **VMIDs 2400-2402:** RPC Translator Services
**Rationale:** Blockchain services are separate systems with distinct purposes and security requirements.
#### 2.2.4 Infrastructure Services
- **VMID 102:** Cloudflare Tunnel
- **VMID 105:** Nginx Proxy Manager
- **VMID 130:** Monitoring Stack
**Rationale:** Infrastructure services are shared resources used by multiple systems, not part of Phoenix Core.
#### 2.2.5 Network Equipment
- **ER605 Router:** Network gateway and firewall
- **Network Switches:** Layer 2/3 network infrastructure
- **Proxmox Host:** Hypervisor infrastructure
**Rationale:** Network equipment is shared infrastructure, not part of the Phoenix Core application system.
---
## 3. System Architecture
### 3.1 Network Topology
```mermaid
graph TB
subgraph MgmtVLAN["Management VLAN (11)<br/>192.168.11.0/24"]
ProxmoxHost["Proxmox Host<br/>r630-01<br/>192.168.11.11"]
end
subgraph PhoenixVLAN["Phoenix VLAN (160)<br/>10.160.0.0/22"]
API["Phoenix API<br/>VMID 8600<br/>10.160.0.10:4000"]
Portal["Phoenix Portal<br/>VMID 8601<br/>10.160.0.11:3000"]
Keycloak["Phoenix Keycloak<br/>VMID 8602<br/>10.160.0.12:8080"]
PostgreSQL["Phoenix PostgreSQL<br/>VMID 8603<br/>10.160.0.13:5432"]
end
subgraph External["External Access"]
DNS["DNS<br/>phoenix.sankofa.nexus"]
Cloudflare["Cloudflare Tunnel<br/>(Future)"]
end
ProxmoxHost -->|Hosts| PhoenixVLAN
Portal -->|HTTP/HTTPS| API
Portal -->|OAuth/OIDC| Keycloak
API -->|OAuth/OIDC| Keycloak
API -->|SQL| PostgreSQL
Keycloak -->|SQL| PostgreSQL
External -->|Resolves to| PhoenixVLAN
```
### 3.2 Data Flow
#### 3.2.1 External Ingress (Future)
**Path:** External → DNS → NAT Gateway → Phoenix Services
1. External client resolves `api.phoenix.sankofa.nexus` via DNS
2. DNS returns private IP (10.160.0.10) or NAT gateway IP (when configured)
3. Traffic routes through ER605 NAT gateway
4. ER605 routes to Phoenix VLAN 160
5. Traffic reaches Phoenix API container
**Current State:** External ingress not yet configured. DNS records exist but NAT routing pending.
#### 3.2.2 Internal Communication
**Path:** Service-to-Service within VLAN 160
1. Portal (10.160.0.11) → API (10.160.0.10): GraphQL API calls
2. Portal (10.160.0.11) → Keycloak (10.160.0.12): Authentication requests
3. API (10.160.0.10) → Keycloak (10.160.0.12): Token validation
4. API (10.160.0.10) → PostgreSQL (10.160.0.13): Database queries
5. Keycloak (10.160.0.12) → PostgreSQL (10.160.0.13): Database queries
**Security:** All internal communication is unencrypted (HTTP) within the private VLAN. TLS encryption recommended for production.
#### 3.2.3 Management Access
**Path:** Management VLAN → Phoenix VLAN
1. Administrator on 192.168.11.x → ER605 Router
2. ER605 routes to VLAN 160 (via firewall rules)
3. Traffic reaches Phoenix services
**Purpose:** Administrative access, monitoring, logging, troubleshooting.
#### 3.2.4 Egress
**Path:** Phoenix Services → Internet
1. Phoenix services require outbound connectivity (updates, external APIs)
2. Traffic routes through ER605
3. ER605 performs NAT via Block #5 (when assigned)
4. Traffic egresses to Internet
**Purpose:** Software updates, external API calls, external service dependencies.
---
## 4. Trust Boundaries
### 4.1 Trust Zones
#### Zone 1: Phoenix Internal (Highest Trust)
**Components:** VMIDs 8600-8603 within VLAN 160
**Trust Level:** High (same security domain)
**Communication:** Service-to-service within VLAN 160
**Security Controls:** Network segmentation, service authentication
#### Zone 2: Management Network (Administrative Trust)
**Components:** Management VLAN (192.168.11.0/24)
**Trust Level:** Medium (administrative access)
**Communication:** Management VLAN → Phoenix VLAN
**Security Controls:** Firewall rules, source IP restrictions, SSH authentication
#### Zone 3: External Network (Untrusted)
**Components:** Internet, external clients
**Trust Level:** Low (untrusted)
**Communication:** External → Phoenix (via NAT/DNS)
**Security Controls:** Firewall rules (deny by default), authentication, authorization, TLS encryption
### 4.2 Trust Boundary Crossings
**Crossings occur at:**
1. **ER605 Router (Management → Phoenix):**
- Source: Management VLAN (192.168.11.0/24)
- Destination: Phoenix VLAN (10.160.0.0/22)
- Controls: Firewall rules, source IP filtering
2. **ER605 Router (External → Phoenix):**
- Source: External/Internet
- Destination: Phoenix VLAN (10.160.0.0/22)
- Controls: Firewall rules (currently denied), future: NAT routing, TLS termination
3. **ER605 Router (Phoenix → External):**
- Source: Phoenix VLAN (10.160.0.0/22)
- Destination: Internet
- Controls: Egress NAT, firewall rules
---
## 5. Security Controls
### 5.1 Network Security
**Control:** Network Segmentation
**Implementation:** VLAN 160 isolation, firewall rules at ER605 router
**Purpose:** Separate Phoenix services from other systems
**Effectiveness:** High - VLAN isolation prevents unauthorized access
**Control:** Firewall Rules
**Implementation:** ER605 router firewall rules (see firewall rules document)
**Purpose:** Control access to Phoenix services
**Effectiveness:** Medium - Depends on rule configuration accuracy
**Control:** Private IP Addressing
**Implementation:** RFC 1918 private addresses (10.160.0.0/22)
**Purpose:** Prevent direct Internet access, enable NAT
**Effectiveness:** High - Private IPs are not routable on Internet
### 5.2 Access Control
**Control:** Keycloak Authentication
**Implementation:** Keycloak identity provider (VMID 8602)
**Purpose:** Centralized authentication and authorization
**Effectiveness:** High - Industry-standard identity provider
**Control:** Service Authentication
**Implementation:** OAuth 2.0 / OIDC tokens for API access
**Purpose:** Authenticate service-to-service communication
**Effectiveness:** Medium - Depends on proper token validation
**Control:** SSH Access Control
**Implementation:** SSH key authentication, root password
**Purpose:** Administrative access to containers
**Effectiveness:** Medium - SSH keys provide strong authentication
### 5.3 Data Protection
**Control:** Database Access Control
**Implementation:** PostgreSQL user authentication, role-based access
**Purpose:** Control database access
**Effectiveness:** Medium - Database users and passwords
**Control:** Data at Rest (Future)
**Implementation:** Encryption at rest (not currently implemented)
**Purpose:** Protect data if storage is compromised
**Effectiveness:** N/A - Not implemented
**Control:** Data in Transit (Future)
**Implementation:** TLS encryption for external access
**Purpose:** Protect data during transmission
**Effectiveness:** N/A - Not implemented (internal only currently)
### 5.4 Logging and Monitoring
**Control:** System Logs
**Implementation:** systemd journal, application logs
**Purpose:** Track system events and errors
**Effectiveness:** Medium - Logs available but not centralized
**Control:** Access Logs (Future)
**Implementation:** Application access logs, authentication logs
**Purpose:** Track user access and authentication events
**Effectiveness:** N/A - Not fully implemented
**Control:** Monitoring (Future)
**Implementation:** Prometheus, Grafana (if integrated)
**Purpose:** Monitor system health and performance
**Effectiveness:** N/A - Not implemented
---
## 6. Operational Environment
### 6.1 Physical Environment
**Location:** On-premises datacenter
**Hypervisor:** Proxmox VE (r630-01, 192.168.11.11)
**Hardware:** Dell R630 server
**Network Equipment:** ER605 router, managed switches
### 6.2 Virtual Environment
**Containerization:** LXC containers (unprivileged)
**OS Template:** Ubuntu 22.04 LTS
**Resource Allocation:**
- CPU: 12 cores total (2-4 cores per container)
- Memory: 12GB total (2-4GB per container)
- Storage: 180GB total (30-50GB per container)
### 6.3 Dependencies
**External Dependencies:**
- Internet connectivity (for software updates)
- DNS resolution (for external service calls)
- NTP servers (for time synchronization)
**Internal Dependencies:**
- ER605 router (for network routing and firewall)
- Proxmox host (for container execution)
- Storage infrastructure (thin1 LVM pool)
**Application Dependencies:**
- Node.js runtime (for API and Portal)
- PostgreSQL database (for data persistence)
- Keycloak identity provider (for authentication)
---
## 7. System Interfaces
### 7.1 External Interfaces
**Interface 1: HTTP/HTTPS API**
**Protocol:** HTTP (internal), HTTPS (future external)
**Port:** 4000 (API), 3000 (Portal), 8080 (Keycloak)
**Authentication:** OAuth 2.0 / OIDC tokens
**Status:** Internal only (external access pending)
**Interface 2: DNS**
**Protocol:** DNS
**Purpose:** Domain name resolution
**Records:** api.phoenix.sankofa.nexus, auth.phoenix.sankofa.nexus, portal.phoenix.sankofa.nexus
**Status:** Configured, pending NAT routing
### 7.2 Internal Interfaces
**Interface 3: Database**
**Protocol:** PostgreSQL protocol (TCP)
**Port:** 5432
**Authentication:** Username/password (md5)
**Access:** Service-to-service within VLAN 160
**Interface 4: Authentication**
**Protocol:** OAuth 2.0 / OIDC (HTTP)
**Port:** 8080
**Authentication:** Client credentials, user credentials
**Access:** Service-to-service and user-to-service
**Interface 5: Management**
**Protocol:** SSH
**Port:** 22
**Authentication:** SSH keys, password
**Access:** Management VLAN to Phoenix VLAN (admin only)
---
## 8. Compliance Considerations
### 8.1 Security Frameworks
**DoD RMF (Risk Management Framework):**
- Phoenix Core is designed with DoD RMF principles in mind
- System boundary clearly defined
- Security controls documented
- Risk assessment recommended before production use
**NIST Cybersecurity Framework:**
- Identify: System boundaries and assets defined
- Protect: Network segmentation, access controls implemented
- Detect: Logging available (monitoring recommended)
- Respond: Incident response procedures recommended
- Recover: Backup and recovery procedures recommended
### 8.2 Data Classification
**Data Types:**
- User authentication credentials (handled by Keycloak)
- Application data (stored in PostgreSQL)
- Session tokens (OAuth/OIDC)
**Classification:** Unclassified
**Handling:** Standard security practices apply
### 8.3 Compliance Gaps (Future Work)
**Recommended Enhancements:**
- TLS encryption for all external interfaces
- Encryption at rest for database
- Centralized logging and monitoring
- Regular security audits
- Penetration testing
- Backup and recovery procedures
- Incident response procedures
---
## 9. Risk Assessment Summary
### 9.1 Identified Risks
**Risk 1: Unencrypted Internal Communication**
**Likelihood:** High (current state)
**Impact:** Medium (within private VLAN)
**Mitigation:** Implement TLS for internal communication (recommended)
**Risk 2: No Encryption at Rest**
**Likelihood:** Medium (storage compromise)
**Impact:** High (data exposure)
**Mitigation:** Implement database encryption at rest (recommended)
**Risk 3: Limited Logging and Monitoring**
**Likelihood:** High (current state)
**Impact:** Medium (difficulty detecting issues)
**Mitigation:** Implement centralized logging and monitoring (recommended)
**Risk 4: Single Point of Failure (Database)**
**Likelihood:** Low (hardware failure)
**Impact:** High (complete system outage)
**Mitigation:** Implement database replication (recommended for production)
**Risk 5: External Access Not Yet Configured**
**Likelihood:** N/A (pending implementation)
**Impact:** N/A
**Mitigation:** Follow security best practices when implementing external access
### 9.2 Risk Acceptance
**Current State:** Phoenix Core is in initial deployment phase. Some security enhancements are deferred to future phases.
**Risk Acceptance:** Documented risks are accepted for initial deployment. Production deployment should address high-impact risks.
---
## 10. System Boundaries Diagram
```mermaid
graph TB
subgraph Boundary["Phoenix Core System Boundary"]
subgraph PhoenixVLAN["VLAN 160<br/>10.160.0.0/22"]
API["API<br/>8600"]
Portal["Portal<br/>8601"]
Keycloak["Keycloak<br/>8602"]
PostgreSQL["PostgreSQL<br/>8603"]
end
end
subgraph Excluded["Excluded from Boundary"]
Legacy["Legacy Services<br/>7800-7803<br/>192.168.11.x"]
DBIS["DBIS Core<br/>10100-10151<br/>192.168.11.x"]
Blockchain["Blockchain Services<br/>1000-2502<br/>192.168.11.x"]
Infrastructure["Infrastructure<br/>102, 105, 130<br/>192.168.11.x"]
end
subgraph External["External Systems"]
DNS["DNS<br/>Cloudflare"]
Internet["Internet"]
Mgmt["Management<br/>192.168.11.0/24"]
end
Boundary -->|Interfaces| External
Boundary -.->|Not Included| Excluded
```
---
## 11. Document Control
### 11.1 Version History
| Version | Date | Author | Changes |
|---------|------|--------|---------|
| 1.0.0 | 2026-01-09 | Infrastructure Team | Initial system boundary statement |
### 11.2 Review Schedule
- **Initial Review:** After deployment validation
- **Quarterly Reviews:** Every 3 months
- **Change-Driven Reviews:** When system boundary changes
### 11.3 Approval
**Document Status:** Draft
**Approval Status:** Pending
**Reviewers:** Infrastructure Team, Security Team
---
## 12. References
- **Network Architecture:** `docs/02-architecture/NETWORK_ARCHITECTURE.md`
- **Phoenix Deployment Runbook:** `docs/03-deployment/PHOENIX_DEPLOYMENT_RUNBOOK.md`
- **Phoenix Firewall Rules:** `docs/04-configuration/PHOENIX_VLAN160_FIREWALL_RULES.md`
- **Phoenix DNS Template:** `docs/04-configuration/PHOENIX_DNS_ZONE_TEMPLATE.md`
- **VMID Allocation:** `docs/02-architecture/VMID_ALLOCATION_FINAL.md`
---
**Last Updated:** 2026-01-09
**Document Status:** Draft
**Classification:** Unclassified
**Next Review:** After deployment validation