Skip to content

Commit 461be09

Browse files
committed
add 0025 separate domain
1 parent 7e7d3b8 commit 461be09

File tree

1 file changed

+178
-0
lines changed

1 file changed

+178
-0
lines changed
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
# ADR_0025: Separate Domain for RPC Nodes and Internal Services
2+
3+
## Date
4+
5+
Decision date:
6+
Last status update: 2025-10-29
7+
8+
## Status
9+
10+
- [x] Proposed
11+
- [ ] Accepted
12+
- [ ] Deprecated
13+
- [ ] Superseded
14+
15+
### Implementation Status
16+
17+
- [x] Planned
18+
- [ ] In Development
19+
- [ ] Implemented
20+
- [ ] Verified
21+
- [ ] Discontinued
22+
23+
## People
24+
25+
### Author/Decision Owner (Single Point of Accountability)
26+
- Leonardo Malik
27+
28+
### Consulted (Subject Matter Experts)
29+
- Alexei Karyagin
30+
- Denis Pisarev
31+
32+
### Informed (Affected Parties)
33+
[People/teams affected by this decision who should be aware]
34+
35+
- [ ] [Person 1]
36+
- [ ] [Person 2]
37+
- [ ] [Person 3]
38+
39+
*Note: People listed in "Informed" should submit a PR to check their name after reading this ADR.*
40+
41+
## Decision
42+
43+
We will acquire and configure a separate domain (distinct from qfnetwork.xyz) dedicated exclusively to RPC nodes and internal services, while maintaining qfnetwork.xyz for public-facing production services (website, email).
44+
45+
## Context
46+
47+
Currently, QF Network uses a single domain (qfnetwork.xyz) for all infrastructure components including:
48+
- Public website
49+
- Email services
50+
- RPC nodes for blockchain access
51+
- Telemetry and monitoring infrastructure
52+
53+
### Decision Criteria
54+
55+
- Security isolation level required
56+
- Maximum acceptable cost
57+
- Implementation timeline constraints
58+
- Operational complexity tolerance
59+
- Access control granularity needed
60+
61+
## Options
62+
63+
1. **(SELECTED)** Separate dedicated domain for RPC and internal services
64+
2. Use subdomains under qfnetwork.xyz
65+
3. Maintain single-domain architecture
66+
67+
## Consequences
68+
69+
### Option 1: Separate Dedicated Domain (SELECTED)
70+
71+
Create entirely new domain (e.g., qf-rpc.network, qf-infra.network, qfnode.network) for all infrastructure and RPC services.
72+
73+
**Selected because:**
74+
- Complete separation between production brand and infrastructure services
75+
- Anyone with domain access knows it's infrastructure-only
76+
- Can grant full infrastructure domain access without production risk
77+
- Compromised infrastructure domain doesn't expose website, email, or brand
78+
- Full DNS automation freedom without production service impact
79+
- New team members start with infrastructure access only
80+
- Matches approach of major blockchain networks
81+
82+
**Selected despite:**
83+
- Annual domain registration and renewal fees
84+
- Multiple separate DNS configurations to maintain
85+
- Moving existing RPC nodes and internal services to new domain
86+
- Need to announce and document new RPC endpoints
87+
- External services may need configuration changes
88+
89+
**Risks and Mitigations:**
90+
- **Risk**: Confusion about which domain to use for different services
91+
- **Mitigation**: Clear documentation and naming conventions; internal service directory
92+
- **Risk**: Increased DNS management complexity
93+
- **Mitigation**: Standardize DNS tooling across both domains; use infrastructure-as-code
94+
- **Risk**: Domain expires or is not renewed
95+
- **Mitigation**: Multi-year registration; calendar reminders; ownership documentation
96+
97+
**Failure Recovery:**
98+
If separate domain proves problematic:
99+
1. Maintain qfnetwork.xyz as fallback for all services
100+
2. Transition can be reversed by pointing new domain to same infrastructure
101+
3. DNS TTL settings allow rapid switchback if needed
102+
4. Parallel operation period provides safety buffer
103+
104+
### Option 2: Subdomains Under qfnetwork.xyz
105+
106+
Use structured subdomains under qfnetwork.xyz, either as:
107+
- Single consolidated subdomain: infra.qfnetwork.xyz or internal.qfnetwork.xyz
108+
- Multiple service-specific subdomains: rpc.qfnetwork.xyz, vpn.qfnetwork.xyz, dev.qfnetwork.xyz
109+
110+
**Rejected because:**
111+
- DNS compromise affects entire qfnetwork.xyz domain tree regardless of subdomain structure
112+
- Subdomain permissions still require parent domain access
113+
- Automated DNS management still touches production domain
114+
- Attack on subdomain can escalate to parent domain
115+
- Cannot truly separate infrastructure from production access
116+
- Less obvious that subdomains are infrastructure-only
117+
- Multiple subdomains increase configuration complexity without addressing core security issues
118+
119+
**Rejected despite:**
120+
- No additional domain registration fees
121+
- Single wildcard certificate covers all subdomains
122+
- Single DNS provider and configuration
123+
- Everything under qfnetwork.xyz umbrella
124+
- Service-specific subdomains provide clear naming
125+
126+
### Option 3: Maintain Single-Domain Architecture
127+
128+
Use qfnetwork.xyz for all services without separation.
129+
130+
**Rejected because:**
131+
- All services share same attack surface
132+
- Infrastructure changes can impact critical production services
133+
- Cannot implement principle of least privilege
134+
- Automated DNS management requires production domain exposure
135+
- RPC scaling automation poses risk to website/email
136+
- Does not align with industry security practices
137+
138+
**Rejected despite:**
139+
- Single domain management
140+
- No new domain fees
141+
142+
143+
## Advice
144+
145+
- "we just have one domain that we use for everything. I would propose that we use a separate one for our VPN nodes and internal services that we run, rather than use the high-risk production qfnetwork.xyz for everything" (Leonardo Malik, 2025-10-22)
146+
- "having a separate domain for RPC nodes that we eventually would run in Kubernetes would also allow us to do DNS-based automated DNS management without exposing the whole website domain as well to the Kubernetes cluster" (Leonardo Malik, 2025-10-22)
147+
- "This is part of like a best practice for security approach as well like it's considered as part of like network segregation" (Leonardo Malik, 2025-10-22)
148+
- "would something like a subdomain be okay for this task, or why do you need completely separate domain?" (Alexei Karyagin, 2025-10-22)
149+
- "I think it's more useful to have a separate domain entirely, also for visibility purposes ... everything that's running on that domain ... are internal services and RPC nodes" (Leonardo Malik, 2025-10-22)
150+
- "if you would hire a new person and then we have a separate domain for just RPC nodes, we can just give access to that domain initially and then step by step give the principle of least privilege approach" (Leonardo Malik, 2025-10-22)
151+
- "core developing companies ... have their own name, and the network or some other products have a different name. So it dilutes the attack vector and attack surface" (Denis Pisarev, 2025-10-22)
152+
- "If... our Kubernetes cluster gets attacked...the RPC node URLs changing is not a big deal, but it is a big deal if it's the main domain and things like our email server, our website URL, etc., can be changed" (Leonardo Malik, 2025-10-22)
153+
- "the secondary domain, we could advertise on the website and then or via the portal" (Leonardo Malik, 2025-10-22)
154+
155+
## Glossary
156+
157+
- **RPC (Remote Procedure Call)**: Interface through which external applications interact with blockchain nodes
158+
- **Network Segregation**: Security practice of separating different types of services into isolated network segments
159+
- **Principle of Least Privilege**: Security principle where users/services receive minimum access needed for their role
160+
- **DNS (Domain Name System)**: System translating human-readable domain names to IP addresses
161+
- **Attack Surface**: Total number of points where unauthorized user could attempt to access system
162+
163+
## References
164+
165+
- Industry Example: Parity Technologies (parity.io vs polkadot.network / polkadot.com)
166+
167+
## ADR Relationships
168+
169+
[Fill in the section if applicable or leave blank for further filling.]
170+
171+
### Supersedes
172+
- ADR #[X]: [Brief description of superseded decision]
173+
174+
### Superseded By
175+
- ADR #[X]: [Brief description of superseding decision]
176+
177+
### Related ADRs
178+
- ADR #[X]: [Brief description of relationship]

0 commit comments

Comments
 (0)