{T}

高安全架构设计

概述

高安全架构通过多层次、多维度的安全策略保障系统全生命周期的安全性。本文围绕五大安全策略体系展开:物理安全(机房/设备/门禁)、数据安全(访问控制/加密/保护)、通信安全(网络攻击防护/加密传输)、身份安全(认证/授权/审计)、软件安全(OS/数据库/Web 应用),并给出安全编码规范与常见攻击防护方案。

前置知识

学习目标

  • 建立五大安全策略的全局视图
  • 掌握对称/非对称/哈希三种加密技术的适用场景
  • 理解 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 = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#x27;' };
  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 权限控制

最佳实践

  1. 输入验证:验证所有用户输入,使用白名单而非黑名单
  2. 输出编码:对 HTML/URL/JS 输出进行编码
  3. 最小权限:只授予必要的权限,定期审计
  4. 安全存储:密码用 bcrypt,敏感数据用 AES-256
  5. HTTPS 全站:HSTS 强制 HTTPS,证书定期更新
  6. 安全响应头:CSP + X-Frame-Options + nosniff 全套配置
  7. 定期审计:使用 OWASP ZAP / Burp Suite 进行渗透测试

延伸阅读


上一篇: 异地容灾与多活架构 下一篇: 伸缩性架构与容器编排 — 微服务伸缩、K8s 编排、HPA/VPA/CA