产品文档已发布
RAILWISE-OS 数据安全白皮书
RAILWISE-OS 数据安全架构、加密策略、访问控制与合规认证的全面说明
产品文档
RAILWISE-OS 数据安全白皮书
Section titled “RAILWISE-OS 数据安全白皮书”AI语义标签:
#数据安全#加密策略#合规认证#等保三级#ISO27001#隐私保护#访问控制
1. 安全概述
Section titled “1. 安全概述”RAILWISE-OS 作为工程监测业务的核心操作系统,承载着大量敏感的工程数据、客户信息与商业机密。本白皮书详细阐述 RAILWISE-OS 在数据安全方面的技术架构、管理措施与合规认证。
1.1 安全原则
Section titled “1.1 安全原则”| 原则 | 说明 |
|---|---|
| 纵深防御 | 多层安全控制,单点失效不影响整体安全 |
| 最小权限 | 用户和系统仅获得完成任务所需的最小权限 |
| 数据分类 | 按敏感度分级保护,核心数据最高级别加密 |
| 审计留痕 | 所有操作完整记录,支持追溯与合规审计 |
| 持续改进 | 定期安全评估、渗透测试与漏洞修复 |
2. 数据分类与保护
Section titled “2. 数据分类与保护”2.1 数据分级
Section titled “2.1 数据分级”| 级别 | 数据类型 | 保护要求 |
|---|---|---|
| L1-公开 | 产品文档、公开API | 基础访问控制 |
| L2-内部 | 项目概况、组织架构 | 身份认证 + 角色权限 |
| L3-敏感 | 监测数据、客户信息 | 字段级加密 + 审计日志 |
| L4-核心 | 坐标数据、合同金额 | 端到端加密 + 多因素认证 |
2.2 数据生命周期保护
Section titled “2.2 数据生命周期保护”数据产生 → 数据传输 → 数据存储 → 数据使用 → 数据归档 → 数据销毁 ↓ ↓ ↓ ↓ ↓ ↓ TLS 1.3 TLS 1.3 AES-256 字段脱敏 加密归档 安全擦除 签名验证 证书 pinning 密钥托管 访问审计 保留策略 不可恢复3. 传输安全
Section titled “3. 传输安全”3.1 传输加密
Section titled “3.1 传输加密”所有数据传输使用 TLS 1.3 协议:
| 场景 | 协议 | 配置 |
|---|---|---|
| Web 访问 | HTTPS | TLS 1.3, HSTS, 证书 pinning |
| API 调用 | HTTPS | 强制 TLS 1.3, 证书验证 |
| MQTT 推送 | MQTTS | TLS 1.3, 双向证书认证 |
| 数据库连接 | PostgreSQL SSL | TLS 1.3, 客户端证书验证 |
| 内部服务通信 | mTLS | 双向 TLS, 服务网格证书 |
3.2 证书管理
Section titled “3.2 证书管理”# 证书配置示例tls: version: "TLSv1.3" cipher_suites: - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 certificate: source: "letsencrypt" # 或 "custom" auto_renew: true renewal_days_before: 30 hsts: enabled: true max_age: 31536000 include_subdomains: true preload: true4. 存储安全
Section titled “4. 存储安全”4.1 数据库加密
Section titled “4.1 数据库加密”静态数据加密 (TDE)
Section titled “静态数据加密 (TDE)”PostgreSQL 启用透明数据加密:
-- 启用表空间加密CREATE TABLESPACE encrypted_ts LOCATION '/var/lib/postgresql/data/encrypted' WITH (encryption = 'aes-256');
-- 创建加密表CREATE TABLE monitoring_data ( id UUID PRIMARY KEY, project_id VARCHAR(64) NOT NULL, point_id VARCHAR(64) NOT NULL, values JSONB NOT NULL, measured_at TIMESTAMPTZ NOT NULL) TABLESPACE encrypted_ts;敏感字段使用应用层加密:
// 字段级加密示例import { createCipheriv, createDecipheriv, randomBytes } from 'crypto';
const ALGORITHM = 'aes-256-gcm';const KEY = Buffer.from(process.env.FIELD_ENCRYPTION_KEY!, 'hex');
function encryptField(plaintext: string): string { const iv = randomBytes(12); const cipher = createCipheriv(ALGORITHM, KEY, iv);
let encrypted = cipher.update(plaintext, 'utf8', 'hex'); encrypted += cipher.final('hex');
const authTag = cipher.getAuthTag();
// 格式: iv:authTag:encrypted return `${iv.toString('hex')}:${authTag.toString('hex')}:${encrypted}`;}
function decryptField(ciphertext: string): string { const [ivHex, authTagHex, encrypted] = ciphertext.split(':');
const decipher = createDecipheriv( ALGORITHM, KEY, Buffer.from(ivHex, 'hex') ); decipher.setAuthTag(Buffer.from(authTagHex, 'hex'));
let decrypted = decipher.update(encrypted, 'hex', 'utf8'); decrypted += decipher.final('utf8');
return decrypted;}4.2 对象存储加密
Section titled “4.2 对象存储加密”MinIO 对象存储配置:
# MinIO 服务端加密配置minio: encryption: enabled: true type: "sse-s3" # 或 sse-kms kms: endpoint: "https://kms.railwise.cn" key_id: "minio-data-key"
# 版本控制与保留策略 versioning: enabled: true retention: mode: "compliance" duration: "7y" # 7年保留期
# 访问日志 audit_log: enabled: true endpoint: "https://audit.railwise.cn"4.3 备份加密
Section titled “4.3 备份加密”#!/bin/bash# 加密备份脚本
BACKUP_DIR="/backup/railwise-os"DATE=$(date +%Y%m%d_%H%M%S)ENCRYPTION_KEY="/etc/railwise/backup-key.pub"
# 创建备份并加密docker exec railwise-os-postgresql-1 pg_dump -U railwise railwise_os | \ gpg --encrypt --recipient-file $ENCRYPTION_KEY \ --output $BACKUP_DIR/railwise-os_${DATE}.dump.gpg
# 验证加密文件gpg --list-packets $BACKUP_DIR/railwise-os_${DATE}.dump.gpg5. 访问控制
Section titled “5. 访问控制”5.1 身份认证
Section titled “5.1 身份认证”| 认证方式 | 安全等级 | 适用场景 |
|---|---|---|
| 用户名密码 | ⭐⭐ | 日常登录 |
| 用户名密码 + MFA | ⭐⭐⭐⭐ | 管理员、敏感操作 |
| API Key | ⭐⭐⭐ | 服务端集成 |
| JWT Token | ⭐⭐⭐⭐ | Web/移动端会话 |
| OAuth2 + PKCE | ⭐⭐⭐⭐⭐ | 第三方应用 |
| 硬件令牌 | ⭐⭐⭐⭐⭐ | 超级管理员 |
5.2 多因素认证 (MFA)
Section titled “5.2 多因素认证 (MFA)”// MFA 验证流程interface MFAConfig { methods: ('totp' | 'sms' | 'email' | 'hardware')[]; required_for: ('admin' | 'data_write' | 'report_approve')[];}
// TOTP 验证示例function verifyTOTP(userSecret: string, token: string): boolean { const expected = generateTOTP(userSecret, { algorithm: 'SHA256', digits: 6, period: 30, window: 1, // 允许前后1个时间窗口 });
return expected === token;}5.3 RBAC 权限模型
Section titled “5.3 RBAC 权限模型”# 权限配置示例roles: - name: "系统管理员" id: "role_admin" permissions: - "system:*" - "project:*" - "data:*" - "report:*" mfa_required: true
- name: "项目负责人" id: "role_project_manager" permissions: - "project:read" - "project:write" - "task:*" - "data:read" - "data:write" - "report:read" - "report:write" data_scope: "own_project"
- name: "监测工程师" id: "role_engineer" permissions: - "project:read" - "task:read" - "task:write" - "data:read" - "data:write" data_scope: "assigned_task"
- name: "报告审核员" id: "role_reviewer" permissions: - "project:read" - "data:read" - "report:read" - "report:approve" data_scope: "own_project"5.4 数据级权限
Section titled “5.4 数据级权限”// 数据级权限控制(行级安全)interface DataAccessPolicy { userId: string; projectIds: string[]; // 可访问的项目 pointIds?: string[]; // 可访问的监测点(可选,更细粒度) timeRange?: { // 时间范围限制 start: string; end: string; }; operations: ('read' | 'write' | 'delete')[]; fields?: string[]; // 字段级权限(为空表示全部)}
// PostgreSQL 行级安全策略示例/*CREATE POLICY project_isolation ON monitoring_data USING (project_id IN ( SELECT project_id FROM user_project_access WHERE user_id = current_user_id() ));*/6. 审计与日志
Section titled “6. 审计与日志”6.1 审计日志内容
Section titled “6.1 审计日志内容”| 字段 | 说明 | 示例 |
|---|---|---|
timestamp |
操作时间 | 2026-07-08T12:00:00Z |
user_id |
操作用户 | user_001 |
action |
操作类型 | data.create |
resource |
操作对象 | project:proj_abc123 |
ip_address |
来源IP | 192.168.1.100 |
user_agent |
客户端 | Mozilla/5.0... |
result |
操作结果 | success / failure |
details |
详细信息 | { data_id: "data_001" } |
session_id |
会话ID | sess_abc123 |
mfa_used |
是否使用MFA | true |
6.2 日志保留策略
Section titled “6.2 日志保留策略”| 日志类型 | 保留期限 | 存储位置 | 加密 |
|---|---|---|---|
| 操作审计日志 | 7 年 | 专用日志服务器 | AES-256 |
| 访问日志 | 2 年 | 对象存储 | AES-256 |
| 错误日志 | 1 年 | 日志系统 | AES-256 |
| 安全事件日志 | 永久 | 独立存储 | AES-256 + 签名 |
6.3 日志查询 API
Section titled “6.3 日志查询 API”# 查询审计日志(管理员权限)curl -X GET "https://api.os.railwise.cn/v3/system/audit-logs" \ -H "Authorization: Bearer {admin_token}" \ -G -d "user_id=user_001" \ -d "action=data.create" \ -d "start_time=2026-07-01T00:00:00Z" \ -d "end_time=2026-07-08T23:59:59Z"7. 合规认证
Section titled “7. 合规认证”7.1 等保三级
Section titled “7.1 等保三级”RAILWISE-OS 已通过 网络安全等级保护三级 测评:
| 测评项 | 要求 | 状态 |
|---|---|---|
| 安全物理环境 | 机房物理安全、环境监控 | ✅ 符合 |
| 安全通信网络 | 网络架构、边界防护 | ✅ 符合 |
| 安全区域边界 | 访问控制、入侵防范 | ✅ 符合 |
| 安全计算环境 | 身份鉴别、访问控制、安全审计 | ✅ 符合 |
| 安全管理中心 | 系统管理、审计管理 | ✅ 符合 |
| 安全管理制度 | 制度体系、人员管理 | ✅ 符合 |
证书编号: 3302-XXXX-XXXX-202512 测评日期: 2025年12月 有效期: 2025年12月 - 2028年12月
7.2 ISO 27001
Section titled “7.2 ISO 27001”已通过 ISO/IEC 27001:2022 信息安全管理体系认证:
- 认证范围: RAILWISE-OS 系统的开发、运维与数据管理
- 证书编号: ISO27K-XXXX-2025
- 发证日期: 2025年6月
- 有效期: 2025年6月 - 2028年6月
7.3 数据本地化合规
Section titled “7.3 数据本地化合规”| 要求 | 实现方式 |
|---|---|
| 数据不出域 | 私有化部署支持,数据存储在客户自有环境 |
| 数据跨境 | 不涉及数据出境,所有数据存储在中国境内 |
| 数据删除 | 支持用户请求删除,物理删除不可恢复 |
| 数据可携带 | 支持导出为开放格式(JSON/CSV/Excel) |
8. 安全事件响应
Section titled “8. 安全事件响应”8.1 响应流程
Section titled “8.1 响应流程”发现事件 → 初步评估 → 遏制影响 → 根除原因 → 恢复服务 → 总结改进 ↓ ↓ ↓ ↓ ↓ ↓ 自动告警 严重程度 隔离系统 修复漏洞 验证恢复 更新预案 人工上报 分级(P1-P4) 保留证据 清除威胁 监控稳定 培训演练8.2 事件分级
Section titled “8.2 事件分级”| 级别 | 定义 | 响应时间 | 示例 |
|---|---|---|---|
| P1-紧急 | 系统不可用或数据泄露 | 15分钟 | 数据库被入侵、核心数据泄露 |
| P2-严重 | 主要功能受损 | 1小时 | API大面积不可用、认证系统故障 |
| P3-一般 | 部分功能受影响 | 4小时 | 单个服务异常、非核心功能故障 |
| P4-轻微 | 不影响业务 | 24小时 | 日志异常、监控告警误报 |
8.3 联系信息
Section titled “8.3 联系信息”- 安全事件邮箱: security@railwise.cn
- 安全事件热线: 400-888-XXXX 转分机 9(24小时)
- PGP 公钥: https://railwise.cn/security/pgp-key.asc
9. 安全最佳实践
Section titled “9. 安全最佳实践”9.1 客户侧安全建议
Section titled “9.1 客户侧安全建议”| 建议 | 说明 |
|---|---|
| 强密码策略 | 密码长度 ≥ 12,包含大小写、数字、特殊字符 |
| 定期轮换 | API Key 每 90 天更换,密码每 180 天更换 |
| 最小权限 | 为每个用户/应用分配最小必要权限 |
| MFA 启用 | 管理员和敏感操作强制启用多因素认证 |
| 网络隔离 | 私有化部署使用独立网络/VLAN |
| 定期审计 | 每月审查用户权限、访问日志 |
9.2 安全更新
Section titled “9.2 安全更新”| 类型 | 响应时间 | 通知方式 |
|---|---|---|
| 紧急安全补丁 | 24小时内 | 邮件 + 短信 + 系统公告 |
| 重要安全更新 | 7天内 | 邮件 + 系统公告 |
| 常规安全更新 | 30天内 | 系统公告 + 更新日志 |
10. 相关文档
Section titled “10. 相关文档”文档版本: v3.2.0 | 最后更新: 2026-07-08 | 安全版本: 2025.12
