wms/.qoder/repowiki/zh/content/安全考虑/安全考虑.md

21 KiB
Raw Blame History

安全考虑

**本文引用的文件** - [AuthApplication.java](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java) - [AdminApplication.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java) - [SaTokenConfigure.java](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/SaTokenConfigure.java) - [Constant.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java) - [UserDTO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/UserDTO.java) - [LdapUserDTO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/LdapUserDTO.java) - [SRMTokenDTO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SRMTokenDTO.java) - [LdapConfig.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java) - [SAPConfig.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java) - [CorsWebFilter.java](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/config/CorsWebFilter.java) - [RedisConfig.java](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java) - [NflgException.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/exception/NflgException.java)

目录

  1. 引言
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

引言

本文件面向NFLG WMS系统的安全管理员与开发人员系统性梳理身份认证与授权、数据安全、网络安全、审计与合规、API安全防护、第三方系统集成安全以及安全运维与应急响应等关键主题。文档以仓库中实际存在的模块与配置为依据结合可观察到的实现线索提出可落地的安全建议与最佳实践。

项目结构

WMS系统采用多模块分层设计围绕“认证中心”“网关”“业务子域”“通用能力”展开。认证与授权由Sa-Token在统一SSO模式下实现网关负责跨域与基础过滤业务模块通过starter提供的通用能力如Redis、Jackson进行会话与序列化与SAP、LDAP等外部系统通过独立配置类接入。

graph TB
subgraph "认证与发现"
AUTH["认证应用<br/>AuthApplication.java"]
ST_SA_TOKEN["Sa-Token配置<br/>SaTokenConfigure.java"]
end
subgraph "网关与过滤"
GW_CORS["CORS过滤器<br/>CorsWebFilter.java"]
end
subgraph "业务与通用"
ADMIN_APP["管理端应用<br/>AdminApplication.java"]
COMMON["通用常量与异常<br/>Constant.java / NflgException.java"]
DTO_USERS["用户与LDAP模型<br/>UserDTO.java / LdapUserDTO.java"]
DTO_SRM["SRM令牌模型<br/>SRMTokenDTO.java"]
REDIS["Redis配置<br/>RedisConfig.java"]
end
subgraph "第三方集成"
LDAP_CFG["LDAP配置<br/>LdapConfig.java"]
SAP_CFG["SAP配置<br/>SAPConfig.java"]
end
AUTH --> ST_SA_TOKEN
ADMIN_APP --> GW_CORS
ADMIN_APP --> REDIS
ADMIN_APP --> COMMON
ADMIN_APP --> DTO_USERS
ADMIN_APP --> LDAP_CFG
ADMIN_APP --> SAP_CFG
AUTH --> GW_CORS

图表来源

章节来源

核心组件

  • 统一认证中心与SSO客户端
    • 认证中心应用通过组件扫描引入认证与通用模块并启用服务发现与SSO管理器日志输出。
    • 管理端应用同样启用服务发现与SSO客户端配置便于前后端统一认证。
  • 基于JWT的会话与权限
    • 通过Sa-Token配置使用JWT逻辑实现简化分布式场景下的会话状态管理。
  • 跨域与基础过滤
    • 网关层提供CORS过滤器允许常见方法与头部支持预检请求快速返回。
  • 会话与缓存
    • Redis配置提供对象与字符串模板用于存储会话、令牌与临时数据。
  • 第三方系统集成
    • LDAP配置注入DN与密码供目录服务对接。
    • SAP配置集中管理连接参数与连接池校验避免文件IO直接注册到JCo环境。

章节来源

架构总览

下图展示认证、网关、业务与第三方系统之间的交互关系,以及会话与权限的关键路径。

sequenceDiagram
participant Browser as "浏览器"
participant Gateway as "网关CORS过滤器"
participant Admin as "管理端应用"
participant Auth as "认证中心应用"
participant SaToken as "Sa-Token JWT"
participant Redis as "Redis缓存"
Browser->>Gateway : "HTTP 请求含跨域头"
Gateway->>Gateway : "添加CORS响应头/OPTIONS预检处理"
Gateway-->>Browser : "允许跨域响应"
Browser->>Admin : "携带认证头访问业务接口"
Admin->>SaToken : "解析JWT并校验"
SaToken->>Redis : "查询会话/权限信息"
Redis-->>SaToken : "返回会话数据"
SaToken-->>Admin : "鉴权通过/拒绝"
Admin-->>Browser : "业务响应"
Note over Auth,SaToken : "认证中心负责签发与SSO管理"

图表来源

详细组件分析

身份认证与授权机制

  • 基于Token的认证
    • 使用Sa-Token的JWT逻辑简化分布式会话与SSO。
    • 管理端与认证中心均启用服务发现与SSO客户端/服务端配置,确保统一认证入口。
  • 权限控制与会话管理
    • 会话与权限数据通过Redis存储便于横向扩展与共享。
    • 建议结合业务角色与资源授权策略,配合统一异常处理与审计日志实现细粒度权限控制。
  • 登录扩展信息
    • 常量定义了登录扩展字段键名,可用于传递用户姓名、工号、邮箱、部门、角色、类型等上下文信息。
classDiagram
class SaTokenConfigure {
+getStpLogicJwt() StpLogic
}
class AuthApplication {
+main(args)
}
class AdminApplication {
+main(args)
}
class RedisConfig {
+redisObjectTemplate()
+redisStringTemplate()
}
class Constant {
+LOGIN_EXTRA_* 常量
}
AuthApplication --> SaTokenConfigure : "使用JWT逻辑"
AdminApplication --> SaTokenConfigure : "使用JWT逻辑"
AdminApplication --> RedisConfig : "会话/权限存储"
SaTokenConfigure --> RedisConfig : "依赖Redis"
Constant <.. AdminApplication : "登录扩展键名"

图表来源

章节来源

数据安全保护

  • 传输安全
    • 建议在生产环境强制HTTPS与TLS 1.2+并在网关层统一终止TLS确保内部服务间通信安全。
  • 存储安全
    • Redis作为会话与缓存介质需启用网络隔离、只监听内网、设置访问密码与最小权限ACL。
    • 对敏感字段(如用户密码、令牌)仅在必要时落盘或临时缓存,避免明文持久化。
  • 数据加密
    • 建议对静态数据如日志中的敏感字段进行脱敏与加密存储对传输中的令牌与凭证使用TLS保护。

章节来源

网络安全防护

  • 跨域与预检
    • CORS过滤器允许常见方法与常用头部预检请求直接返回200减少前端复杂度。
    • 建议在生产环境限定具体来源域名,避免通配符。
  • 防火墙与边界
    • 网关对外暴露内部服务通过内网访问对认证中心与数据库、SAP、LDAP等敏感后端实施最小权限网络策略。
  • DDoS与入侵检测
    • 建议在网关层部署速率限制、IP黑白名单与WAF结合云厂商DDoS清洗与入侵检测系统IDS联动。

章节来源

审计日志与合规

  • 操作日志与审计追踪
    • 建议在统一异常处理与业务切面中记录关键操作登录、权限变更、高风险操作包含用户标识、时间戳、IP、操作内容与结果。
  • 数据隐私保护
    • 对个人数据与敏感字段进行脱敏显示与最小化采集;遵循数据生命周期管理,定期清理过期数据。
  • 合规要求
    • 建立数据分类分级与访问审批流程;保留审计日志至少满足法规要求的最短期限。

章节来源

API安全防护方案

  • 请求签名与完整性
    • 建议在网关层引入API签名如HMAC-SHA256结合nonce与timestamp防重放。
  • 频率限制
    • 在网关或业务层按IP/用户维度实施限流,阻断异常流量。
  • 防重放攻击
    • 引入一次性nonce与滑动窗口时间窗服务端缓存已使用nonce并设置TTL。
  • 令牌治理
    • 缩短刷新令牌有效期、启用旋转机制;对失效令牌与异常行为触发即时撤销。

章节来源

第三方系统集成安全

  • LDAP集成
    • LDAP配置注入DN与密码建议
      • 使用只读账户执行查询;
      • 开启TLS连接
      • 严格限制查询范围与属性;
      • 对用户输入进行白名单校验。
  • SAP集成
    • SAP配置集中管理连接参数与连接池校验建议
      • 仅在内存中注册目的地避免文件IO泄露
      • 校验峰值与池容量关系,防止资源耗尽;
      • 限制调用方权限与RFC调用范围
      • 对SAP侧的错误与异常进行降级与告警。
flowchart TD
Start(["初始化SAP连接"]) --> Validate["校验峰值与池容量关系"]
Validate --> Valid{"配置有效?"}
Valid --> |否| RaiseErr["抛出非法参数异常"]
Valid --> |是| Register["注册目的地到JCo环境"]
Register --> Done(["可用的JCoDestination"])
RaiseErr --> End(["结束"])
Done --> End

图表来源

章节来源

安全漏洞评估与修复流程

  • 评估
    • 定期进行依赖扫描、容器镜像扫描与源码安全扫描;对认证、授权、数据与网络层面进行渗透测试。
  • 修复
    • 建立补丁发布流程与回滚预案对高危漏洞在72小时内发布修复版本。
  • 监控
    • 结合日志与指标建立异常告警覆盖认证失败、权限异常、SAP/LDAP连接异常等。

章节来源

安全监控与应急响应

  • 监控
    • 关键指标认证失败率、会话异常增长、Redis连接数、SAP/LDAP超时与错误率。
  • 应急响应
    • 触发条件:大规模认证失败、会话风暴、第三方系统不可用、审计日志异常激增。
    • 处置步骤:隔离问题模块、降级非关键功能、回滚可疑变更、通知安全部门与合规团队。

章节来源

依赖分析

  • 组件耦合
    • 管理端应用依赖Sa-Token与Redis配置认证中心负责统一签发与SSO网关提供跨域与基础过滤。
  • 外部依赖
    • SAP与LDAP通过独立配置类接入降低耦合度建议在运行时对这些连接进行健康检查与熔断。
graph LR
Admin["管理端应用"] --> SaToken["Sa-Token配置"]
Admin --> Redis["Redis配置"]
Admin --> LDAP["LDAP配置"]
Admin --> SAP["SAP配置"]
Auth["认证中心应用"] --> SaToken
Gateway["网关CORS"] --> Admin

图表来源

章节来源

性能考虑

  • 会话与缓存
    • Redis模板已配置序列化策略建议根据热点数据调整TTL与淘汰策略避免内存压力。
  • 认证与授权
    • JWT解码与Redis查询应尽量本地化与缓存减少跨实例查询开销。
  • 第三方系统
    • SAP连接池参数需与业务峰值匹配避免频繁创建销毁连接对LDAP查询结果进行分页与索引优化。

章节来源

故障排查指南

  • 认证失败
    • 检查JWT是否过期、Redis会话是否被清理、SSO配置是否一致。
  • 跨域问题
    • 确认CORS响应头是否正确下发预检请求是否被提前拦截。
  • Redis异常
    • 检查连接数、内存占用与序列化异常;确认模板键值序列化策略一致。
  • SAP/LDAP连接异常
    • 校验连接参数与池容量配置,查看初始化日志与异常堆栈。

章节来源

结论

本文件基于仓库现有实现总结了WMS系统的认证授权、数据与网络安全、审计与合规、API防护、第三方集成与运维应急等方面的安全要点。建议在生产环境中补充TLS、限流、签名与防重放、敏感数据脱敏与加密、严格的第三方访问控制与健康检查以形成闭环的安全体系。

附录

  • 安全最佳实践清单
    • 强制HTTPS与TLS 1.2+启用CORS白名单部署WAF与DDoS防护。
    • 会话令牌最小权限与短有效期Redis启用密码与网络隔离。
    • 对SAP/LDAP使用只读账户与最小权限连接池参数与健康检查。
    • 审计日志与数据脱敏;异常告警与应急响应流程。
  • 合规性检查清单
    • 数据分类分级与最小化采集;日志保留期限与可追溯性;第三方供应商安全评估与合同约束。