高安全架构设计
概述
高安全架构通过多层次、多维度的安全策略保障系统全生命周期的安全性。本文围绕五大安全策略体系展开:物理安全(机房/设备/门禁)、数据安全(访问控制/加密/保护)、通信安全(网络攻击防护/加密传输)、身份安全(认证/授权/审计)、软件安全(OS/数据库/Web 应用),并给出安全编码规范与常见攻击防护方案。
前置知识
- HTTP 协议与 HTTPS 原理
- Node.js / Express 中间件机制
- 参见:架构设计五大维度
学习目标
- 建立五大安全策略的全局视图
- 掌握对称/非对称/哈希三种加密技术的适用场景
- 理解 JWT 认证与 RBAC 授权机制
- 熟悉 SQL 注入、XSS、CSRF、DDoS 的防护方案
- 了解安全响应头与安全编码规范
一、五大安全策略体系
图表渲染中…
安全架构不是独立存在的,而是与业务架构深度融合,贯穿系统全生命周期。
二、物理安全
2.1 机房等级
| 等级 | 适用场景 | 电力保障 |
|---|---|---|
| A 级 | 核心业务机房 | 双路市电 + UPS + 发电机 |
| B 级 | 重要业务机房 | 双路市电 + UPS |
| C 级 | 一般业务机房 | 单路市电 + UPS |
2.2 物理安全要素
| 维度 | 措施 |
|---|---|
| 环境 | 温度 18-28°C、湿度 35-75%、气体灭火、防水防潮 |
| 电力 | 双路市电、UPS 满载 ≥ 2h、柴油发电机 |
| 访问控制 | 指纹/人脸识别、门禁卡、访客登记+陪同、24h 监控 |
| 网络 | 不同路由光缆、双上联设备、核心区物理隔离 |
2.3 分区访问控制
| 安全级别 | 区域 | 要求 |
|---|---|---|
| Level 1 | 公共区域、接待大厅 | 登记即可 |
| Level 2 | 办公区域、会议室 | 门禁卡 |
| Level 3 | 机房外围、监控室 | 审批 + 生物识别 |
| Level 4 | 核心机房、设备间 | 审批 + 生物识别 + 多人陪同 |
三、数据安全
3.1 三要素
| 要素 | 核心内容 |
|---|---|
| 访问权限控制 | 责任分层(所有者→管理员→使用者)、最小权限原则 |
| 数据加密 | 对称加密、非对称加密、哈希算法 |
| 数据保护 | 逻辑保护、高可用保障、备份恢复、脱敏 |
3.2 加密技术对比
| 类型 | 特点 | 优点 | 缺点 | 典型算法 |
|---|---|---|---|---|
| 对称加密 | 加解密同一密钥 | 速度快 | 密钥分发困难 | AES-256、3DES |
| 非对称加密 | 公钥加密/私钥解密 | 密钥管理方便 | 速度慢 | RSA-2048、ECC |
| 哈希算法 | 单向不可逆 | 固定长度、唯一性 | 无法解密 | SHA-256、bcrypt |
3.3 AES 对称加密示例
javascript
const crypto = require('crypto');
class SymmetricEncryption {
constructor() {
this.algorithm = 'aes-256-cbc';
this.key = crypto.randomBytes(32);
this.iv = crypto.randomBytes(16);
}
encrypt(plainText) {
const cipher = crypto.createCipheriv(this.algorithm, this.key, this.iv);
let encrypted = cipher.update(plainText, 'utf8', 'hex');
encrypted += cipher.final('hex');
return { encrypted, iv: this.iv.toString('hex'), key: this.key.toString('hex') };
}
decrypt(encryptedData, keyHex, ivHex) {
const decipher = crypto.createDecipheriv(
this.algorithm,
Buffer.from(keyHex, 'hex'),
Buffer.from(ivHex, 'hex')
);
let decrypted = decipher.update(encryptedData, 'hex', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}
}3.4 权限控制(RBAC)
javascript
class DataAccessControl {
checkPermission(userId, resource, action, context = {}) {
const permissions = this.permissions.get(`${userId}:${resource}`) || [];
for (const perm of permissions) {
if (perm.action === action || perm.action === 'admin') {
if (this.checkConditions(perm.conditions, context)) {
return { allowed: true };
}
}
}
return { allowed: false, reason: '权限不足' };
}
}四、通信安全
4.1 常见网络攻击
| 攻击类型 | 方式 | 防护措施 |
|---|---|---|
| DDoS | 大量请求耗尽资源 | 流量清洗、CDN、限流 |
| DNS 劫持 | 篡改 DNS 解析 | DNSSEC、HTTPS |
| 重放攻击 | 截获并重复发送请求 | 时间戳 + Nonce + 签名 |
| ARP 欺骗 | 伪造 MAC 映射 | 静态 ARP、交换机安全策略 |
| MITM 中间人 | 拦截双方通信 | HTTPS、证书固定 |
4.2 DDoS 防护
| 攻击层 | 方式 | 防护 |
|---|---|---|
| 流量层 | 数据包拥塞带宽 | 流量清洗、CDN 分发 |
| 协议层 | 耗尽连接资源 | 防火墙、负载均衡 |
| 应用层 | 针对应用漏洞 | WAF、限流、验证码 |
4.3 限流中间件
javascript
class RateLimiter {
constructor(threshold = 100) {
this.requests = new Map();
this.threshold = threshold; // 每秒最大请求数
}
middleware() {
return (req, res, next) => {
const ip = req.ip;
const now = Date.now();
const record = this.requests.get(ip) || { count: 0, start: now };
if (now - record.start > 1000) {
record.count = 0;
record.start = now;
}
record.count++;
this.requests.set(ip, record);
if (record.count > this.threshold) {
return res.status(429).json({ error: 'Too Many Requests' });
}
next();
};
}
}五、身份安全
5.1 三要素
| 要素 | 说明 | 技术 |
|---|---|---|
| 认证(Authentication) | 验证用户身份 | JWT / OAuth 2.0 / MFA |
| 授权(Authorization) | 权限控制 | RBAC / ABAC |
| 审计(Audit) | 操作记录与异常检测 | 日志 / 行为分析 |
5.2 JWT 认证
javascript
const jwt = require('jsonwebtoken');
class JWTAuth {
constructor(secret, expiresIn = '7d') {
this.secret = secret;
this.expiresIn = expiresIn;
}
generateToken(user) {
return jwt.sign(
{ userId: user.id, role: user.role, type: 'access' },
this.secret,
{ expiresIn: this.expiresIn }
);
}
authenticate() {
return (req, res, next) => {
const token = req.headers.authorization?.replace('Bearer ', '');
if (!token) return res.status(401).json({ error: 'Unauthorized' });
try {
req.user = jwt.verify(token, this.secret);
next();
} catch {
res.status(401).json({ error: 'Token invalid or expired' });
}
};
}
}5.3 多因素认证(MFA)
| 因素 | 示例 |
|---|---|
| 知识因素 | 密码、安全问题 |
| 持有因素 | 手机验证码、硬件 Key |
| 生物因素 | 指纹、人脸识别 |
六、软件安全
6.1 三层面
| 层面 | 威胁 | 防护 |
|---|---|---|
| 操作系统 | 病毒、木马、漏洞 | 补丁管理、恶意脚本防护 |
| 数据库 | SQL 注入、推理攻击 | 参数化查询、访问控制、加密 |
| Web 应用 | XSS、CSRF、信息泄露 | 输出编码、Token、安全头 |
6.2 SQL 注入防护
javascript
// 不安全 - 字符串拼接
const unsafe = `SELECT * FROM users WHERE name = '${input}'`;
// 安全 - 参数化查询
const safe = async (input) => {
return db.query('SELECT * FROM users WHERE name = ?', [input]);
};6.3 XSS 防护
javascript
// HTML 转义
function escapeHtml(input) {
const map = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' };
return String(input).replace(/[&<>"']/g, c => map[c]);
}
// CSP 内容安全策略
res.setHeader('Content-Security-Policy',
"default-src 'self'; script-src 'self'; frame-ancestors 'none'");6.4 CSRF 防护
javascript
// 生成 Token
const token = crypto.createHmac('sha256', secret)
.update(`${sessionId}:${Date.now()}`)
.digest('hex');
// 验证中间件:仅检查 POST/PUT/DELETE/PATCH
// Token 来源:req.body._csrf || req.get('X-CSRF-Token')6.5 安全响应头
javascript
const securityHeaders = (req, res, next) => {
res.setHeader('X-Frame-Options', 'DENY');
res.setHeader('X-XSS-Protection', '1; mode=block');
res.setHeader('X-Content-Type-Options', 'nosniff');
res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin');
res.setHeader('Permissions-Policy', 'geolocation=(), microphone=(), camera=()');
next();
};常见问题
| 问题 | 风险等级 | 解决方案 |
|---|---|---|
| SQL 注入 | 严重 | 参数化查询 + 输入验证 |
| XSS 攻击 | 高 | 输出编码 + CSP |
| CSRF 攻击 | 高 | CSRF Token + SameSite Cookie |
| 弱密码 | 高 | 强度验证 + bcrypt 存储 |
| 会话劫持 | 高 | HTTPS + Secure Cookie + Session 轮换 |
| DDoS 攻击 | 高 | 流量清洗 + 限流 + CDN |
| 敏感信息泄露 | 高 | 数据脱敏 + 访问控制 |
| 未授权访问 | 高 | 认证 + RBAC 权限控制 |
最佳实践
- 输入验证:验证所有用户输入,使用白名单而非黑名单
- 输出编码:对 HTML/URL/JS 输出进行编码
- 最小权限:只授予必要的权限,定期审计
- 安全存储:密码用 bcrypt,敏感数据用 AES-256
- HTTPS 全站:HSTS 强制 HTTPS,证书定期更新
- 安全响应头:CSP + X-Frame-Options + nosniff 全套配置
- 定期审计:使用 OWASP ZAP / Burp Suite 进行渗透测试
延伸阅读
- 《白帽子讲 Web 安全》- 吴翰清
- 《应用密码学》- Bruce Schneier
- OWASP Top 10
- Mozilla 安全指南
- 安全响应头检查工具
上一篇: 异地容灾与多活架构 下一篇: 伸缩性架构与容器编排 — 微服务伸缩、K8s 编排、HPA/VPA/CA