
1) 【一句话结论】:采用“传输加密+存储分片加密+访问控制ABAC+RBAC”三层架构,结合分布式数据库(如TiDB)多副本主从复制、消息队列解耦、动态策略引擎,满足百万级调度系统的高可用(99.9%+)、秒级响应、等保2.0三级要求,并实现不同铁路局数据的物理/逻辑隔离。
2) 【原理/概念讲解】:老师口吻解释关键设计:
3) 【对比与适用场景】:
存储方案对比:
| 方案 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| TiDB(分布式事务型) | 分布式MySQL兼容数据库 | 支持ACID事务,高并发读写,分片复制 | 核心调度指令(如列车运行指令、位置数据,需强一致性) | 需设计分片键,复杂查询优化 |
| Cassandra(分布式NoSQL) | 高写入吞吐NoSQL | 最终一致性,高可扩展 | 实时状态(如列车实时位置、设备状态,写入频繁) | 事务支持弱,复杂查询需二次开发 |
访问控制模型对比:
| 模型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| RBAC | 基于角色分配权限 | 简单,角色与权限绑定 | 铁路局管理员、调度员角色(固定权限) | 难以处理动态策略(如临时授权) |
| ABAC | 基于属性访问控制 | 动态策略,属性灵活 | 高安全敏感场景(如紧急调度指令,需临时跨局授权) | 策略复杂,计算开销大,需高性能引擎 |
4) 【示例】:
function sendCommand(command, target_endpoint):
session_key = generate_session_key()
encrypted_data = AES_GCM_encrypt(command, session_key)
send(encrypted_data, target_endpoint, TLS_1.3, HSTS)
function request_temporary_access(user_id, target_railway, duration):
approval = get_approval(user_id, target_railway)
if approval:
temp_policy = create_temp_policy(user_id, target_railway, duration)
apply_policy(temp_policy)
return "授权成功"
else:
return "审批失败"
5) 【面试口播版答案】:面试官您好,针对百万级列车调度系统,我设计的架构从数据传输、存储、访问控制三层构建。传输层采用TLS 1.3加密并配置HSTS,防止中间人攻击;存储层选用TiDB分布式数据库,按铁路局分片存储,数据字段级加密并部署3副本主从复制,确保99.9%高可用;访问控制采用RBAC结合细粒度ABAC策略引擎,用户权限绑定铁路局,支持动态临时授权,指令访问前通过策略引擎验证。这样既满足秒级响应(通过消息队列解耦和Redis缓存热点数据),又符合等保2.0三级要求,且不同铁路局数据物理隔离,保障安全。
6) 【追问清单】:
7) 【常见坑/雷区】: