当前位置: 首页 > news >正文

系统架构设计师论文分享-论系统安全设计

我的软考历程

摘要

2023年2月,我所在的公司通过了研发纱线MES系统的立项,该项目为国内纱线工厂提供SAAS服务,旨在提高纱线工厂的数字化和智能化水平。我在该项目中担任系统架构设计师,负责整个项目的架构设计工作。本文结合我在该项目中的实践,详细论述了安全架构的设计,主要设计内容包括身份鉴别服务、访问控制服务和数据完整性服务,其中身份鉴别服务确保只有授权的用户才能访问系统资源,访问控制服务确保只有授权的用户能够访问特定的数据,数据机密性确保数据仅对授权者可用。通过设计安全服务,我们系统面临的安全威胁得到了有效的控制。最终该项目在2023年12月正式上线并对外提供服务,目前已经有231家工厂接入了我们的系统,系统运行稳定,表现优异,得到了客户工厂和公司领导的一致好评。

项目背景

随着我国从制造业大国升级为制造业强国以及工厂数字化和智能化的持续推进,我所在的某地某科技公司基于自研的物联网平台相继开发了染整一体化和织布一体化等系统,这些系统上线后,得到了工厂的追捧,也为公司带来了丰厚的经济回报。基于此,我司于2023年2月开始研发纱线MES系统,该系统总投资730万,开发周期10个月,涵盖纱线工厂从清花、梳棉、并条、精梳、粗纱、细纱到络筒的全流程工序,将为纱线工厂提供全面的生产管理解决方案以及基于数据的智能决策分析能力。该项目采用物联网层次架构,整体分为感知层、网络层和应用层。其中网络层为公司已有的物联网平台,这次重点建设内容为感知层和应用层,感知层使用Golang语言开发,作为联网网关部署在工厂侧,负责工厂数据的采集和云端指令的下发。应用层为纱线MES系统主体,采用Java语言开发,使用Spring Cloud微服务架构,数据库使用Mysql,缓存使用Redis,前端框架使用vue.js,日志、监控和链路追踪采用skywalking、prometheus、grafana和ELK,最终通过devops的方式部署在kubernetes集群中。系统上线后,将提供以下:基础管理、数据接入、工单排产、数字孪生、工资计算、智控中心和数据分析等等功能,通过以上功能,可以全面提升纱线工厂的数字化和智能化水平,使其运营水平和生产效率得到质的提升。

论述内容

纱线MES系统涉及模块众多,涉及工厂分布在全国各地,业务逻辑复杂,流程链路长,作为物联网架构,整体分为感知层、网络层和应用层,对于安全有着非常高的要求,为了满足系统在安全方面的指标,避免系统在身份鉴别、访问控制和数据完整性等方面面临安全威胁,我们必须做好安全服务设计,来抵御常见的安全威胁,比如我们对外提供SAAS服务,结果A工厂可以看到B工厂的生产数据,这就导致了数据机密性的丧失。再比如系统中存在sql注入漏洞,导致非授权用户操作权限的扩大。还有就是系统中保存了大量的客户信息,如果由于安全措施不够而导致泄露,将会给客户造成重大的损失。因此,为了系统的安全性,我们必须要做好安全架构的设计。在该项目中,安全架构设计的内容主要包括身份鉴别服务、访问控制服务、数据完整性服务以及数据机密性服务。其中身份鉴别服务确保只有授权的实体才能访问系统资源,鉴别的方式主要有已知的信息、拥有的信息、不改变的特性、相信可靠的第三方建立的鉴别、环境等;访问控制服务确保只有授权的用户才能访问特定的数据,实现技术主要包括访问控制矩阵、访问控制列表和能力表等;数据机密性服务确保数据仅对授权者可用,实现技术主要包括加密、数据脱敏等。数据完整性服务主要确保数据不被第三方非法修改,主要技术有摘要技术包括md5,sha256等;本文结合我在该项目中的实践,详细介绍身份鉴别服务、访问控制服务、数据机密性服务以及数据完整性服务的设计。

一、身份鉴别服务。

身份鉴别服务是通过识别系统的用户,可以让系统用户进入系统,让非法用户隔离在外。在纱线MES系统中,我们采用了微服务设计,把用户相关功能独立了出来,单独做成了一个微服务,该微服务提供登录和验证服务,通过对外提供接口,然后把接口注册到nacos集群中。然后所有的微服务通过API网关对外提供接口,该API网关采用Spring cloud gateway,登录通过转发到用户微服务,token的验证则在API网关中。我们在设计身份鉴别服务时,采用了多种方式,第一种是通过短信验证,第二种是通过微信支付宝的第三方的登录方式。第一种方式灵活,并且可以减轻用户的记忆负担,是用户最喜欢用的方法。但是这种方式有一定的安全隐患,比如当短信被第三方劫持时,第三方就可以顶替登录,从而对该用户的生产数据信息造成破坏。为了解决这个问题,我们采用在发短信之前获取token,然后在提交验证码时,也带上token的方式,这样token和验证码是绑定在一起的,只拿到验证码是无法登录的,只有token和验证码都正确才能登录成功。通过这种方式,我们提供了灵活的登录方式也避免了潜在的风险。

二、访问控制服务。

身份鉴别服务解决了用户是否可以登录的问题,而访问控制服务则要解决用户有什么权限可以做什么操作的问题。由于访问控制比较复杂,我们一致决定采用RBAC模型,该模型又称基于角色的权限控制模型。其操作步骤如下:1、先定义资源;2、定义权限,并把资源分配给权限;3、定义角色,并把权限分配给角色;4、把角色分配给用户;5、校验用户的权限。具体实施过程如下:权限管理相关功能既然在用户微服务中,资源、权限、角色、用户的管理操作也在用户微服务中。我们先进行相关的权限配置,然后我们通过Spring中的Aop机制,写了一个公共的基于注解的权限校验Aop切面,当某个方法需要具备某权限时,就在该方面上添加注解,该注解标识这个方法需要的权限代码,只要校验该用户有这个权限才会继续调用该方法,否则异常返回没有权限。同时由于该系统提供SAAS服务,所有的数据都是根据工厂做分割的,每一个工厂都只能访问到自己的数据。最后用户的所有的操作、时间、过程和参数都会被日志记录,该日志永久保存下来,以便后面进行追踪和审计。

三、数据完整性和机密性服务。

数据完整性和机密性服务分别保证了数据的不可修改以及只有授权人才能访问的特性。为了实现这两个特性,我们在项目中采用了摘要和加密的方式。比如工厂的络筒机的生产数据中有锭速、支数、捻度等,这些数据在感知层会做处理,第一步先通过对称加密对数据进行加密,然后再对加密后的数据做摘要。等数据到了应用层也就是纱线MES系统中,再对加密的数据做摘要,跟传过来的摘要比对,看是否被修改,然后再通过密钥进行解密,得到完整的数据。通过这个数据,我们保证了数据在中间的网络中是安全的。到了纱线MES系统后,我们会对重要的敏感的用户数据进行识别,比如用户的身份证号、地址、银行卡号等等,当识别为重要数据时,就需要采用加密的方式进行数据库的存储,如此,就算数据库被第三方盗用也不用泄露用户信息。最后就是密钥的管理,为了密钥的安全,我们采购了第三方的密钥管理系统,让数据和密钥分离开,最大限度保障系统的安全性。

总结

通过以上的安全服务设计,我们有效地提高了系统的安全性和可靠性。最终在2023年12月,该项目正式投产并对外提供服务,至今稳定运行,各项功能和性能指标均远远超过了客户的预期,得到了客户工厂和公司领导的一致赞扬。虽然项目取得了成功,但是也遇到过一些问题,在项目初期,由于产品经理对纱线业务的不熟悉,导致很多功能的调整和返工,这打击了开发人员的士气,基于此,我提出两个解决方式:1、派产品进入工厂一线,与工人交流,熟悉操作流程,彻底摸清纱线业务,保证需求质量;2、开发人员也要学习纱线业务,遇到问题反馈给产品,同时在做设计时,采用灵活的设计模式,为需求的变动留下可操作的空间。我们通过这两个方法解决了这个问题,保证了项目的进展。通过这次实践,我不仅学习到了安全相关的技术,也锻炼了自己的架构和管理能力,我意识到只有不断地学习和实践才能让知识融汇于自己的技术体系之中,才能为业务服务,才能在未来的工作中游刃有余、勇担大任,为纱线业务发展与祖国的信息化建设贡献自己的力量。

http://www.dtcms.com/a/270076.html

相关文章:

  • IoTDB:专为物联网场景设计的高性能时序数据库
  • 把word中表格转成excle文件
  • 基于GeoTools的根据Shp文件生成完全包围格网实战
  • Oracle 存储过程、函数与触发器
  • AI标注平台label-studio之二添加机器学习后端模型辅助标注
  • vue3官方文档学习心得
  • SpringCloud系列 - Gateway 网关功能(五)
  • 人体坐姿检测系统开发实战(YOLOv8+PyTorch+可视化)
  • 本地部署 R 语言环境运行软件 RStudio Server 并实现外部访问
  • 玩具语音方案选型决策OTP vs Flash 的成本功耗与灵活性
  • window wsl 环境下编译openharmony,HarmonyOS 三方库 FFmpeg
  • VLLM 调用有哪些超参数; clean_up_tokenization_spaces是什么
  • ubuntu24.04安装NFS网络文件系统/ARM开发板NFS挂载
  • 20250708-03-string结构及命令详解_笔记
  • CI/CD — DevOps概念之实现k8s持续交付持续集成(一)
  • NumPy-统计函数详解
  • UE5内置插件 AnimToTexture 简单入门
  • 一次编码,多端运行:HTML5多终端调用
  • Android 依赖注入框架详解
  • 2025年7月8日学习笔记——模式识别与机器学习绪论
  • bro code Interface
  • 社区云管家 - 智慧生活新方式 ——仙盟创梦IDE
  • 玩转Docker | 使用Docker部署HomeBox家庭库存管理工具
  • NestJS 系列教程(四):中间件、中断器与异常过滤器详解
  • JavaScript基础篇——第一章 JavaScript基础的认识
  • MySQL 【环境安装、基础认识】
  • OpenCV在Visual Studio 2022下的配置
  • 牛市来临之际,如何用期权抢占反弹先机?
  • Centos和麒麟系统如何每天晚上2点10分定时备份达梦数据库
  • VUE 带有搜索功能的穿梭框(简单demo)