论软件的安全性设计

写给开发者的软件架构实战:如何进行安全性设计 1.背景介绍 写给开发者的软件架构实战:如何进行安全性设计 作者:禅与计算机程序设计艺术 背景介绍 1.1 互联网时代的安全性挑战 在当今的互联网时代,由于技术的快速发展 阅读详情

摘要:

2018年5月我参与了某省电信智慧BSS系统的运营管理平台(NOSP)项目的开发。该项目为解决BSS系统的日常运营中提前发现故障、快速定位问题、保障服务稳定运行等方面提供全方位的软件支撑,我在该项目中担任系统架构师,主要负责系统的总体架构设计和技术选型。本文以该项目为例,主要论述了安全技术和解决方案在项目中的具体应用。通过设置防火墙和加密技术保证内部网络的安全。在应用层采用RBAC模型和Token机制,解决了系统认证环节安全性;在数据层采用容灾备份和加密机制,解决数据抗突发风险的安全性问题;事实证明,采用这些安全技术后,系统在安全性、可扩展性、实时性等方面都达到了预期目标。系统自2019年2月上线后运行平稳,得到了领导和用户的一致好评。

正文:

随着2016年中国电信提出构造新一代运营商领先的智慧BSS3.0,以满足未来5年以上的市场营销与服务要求。2017年某省电信采用集团规定的平台+应用的方式重构了BSS核心系统,由于重构后的BSS系统涉及到PaaS平台的众多中间件和18个能力中心;同时采用容器化、集群的方式部署在超过140台物理主机、2000个容器中。整个BSS系统在性能和可扩展性等方面得到了极大的提升,但也增大了系统的运维难度,急需配套的运营系统来从整体上全方位的掌握BSS运行情况。由于我们不仅承建了该省的BSS核心系统,同时我们还深度参与了集团PaaS平台的开发,因此2018年5月我公司被该省电信委托建设新一代智慧运营管理平台(NOSP),以下简称该系统。该系统包含资源管理中心、组件管理中心、数据运营中心、监控告警中心、运营日志中心、运营分析中心等子系统。我以系统架构师的身份负责系统的总体架构设计和技术选型,7月份完成架构设计工作和基础开发框架的搭建,整个项目历时9个月,2019年2月顺利上线并通过验收。

信息安全体系结构包括鉴权服务、访问控制、数据完整性、数据保密性和抗抵赖性。其中鉴权服务一般采用用户名+口令、数字证书等方式实现;访问控制通常采用RBAC基于角色的访问控制;数据完整性包括阻止对介质访问的机制和限制非授权修改的机制,前者一般采用隔离、访问控制列表、路由控制,后者一般采用数据前面、数据指纹等方式;数据保密性一般通过加密实现。

该系统作为BSS核心系统的运营支撑系统,包括CRM应用性能监控、各类订单的状态统计、慢SQL的监控、配置数据的一致性实时同步等核心服务,涉及到业务核心报表、主机和网络等底层资源、卡号等非实物资产数据,这些核心数据要求必须在安全可控的环境下访问。所以我们在设计阶段考虑从网络部署、数据库和应用层三个维度采取了相对的解决方案,具体阐述如下:

  1. 网络部署安全

首先,因为网络和硬件是系统的运行基础,也是很多外部攻击的首要目标,所以我们在设计阶段合理规划,将网络拓扑划分为外部网络、DMZ区和内部DCN网络三部分。我们将应用服务器和数据库服务器统一部署在内部DCN网络中,在DMZ区域部署反向代理服务器Nginx集群,Nginx负载均衡到应用服务器。为了防止来自外部的恶意攻击,我们再在外部网络和DMZ区网络之间设置了硬件防火墙。在Nginx集群中,我们配置只需要暴露的VIP,这样可以尽量降低我们内部应用服务器被攻击的可能性。由于我们应用采用前后端分离方式开发,前端静态页面和其他资源都部署在Nginx集群中,所以我们在Nninx中启用了HTTPS安全协议,通过建立信息安全通道,来保证数据传输的安全,防止内容被第三方冒充或者篡改,确保数据的完整性。对于DCN网络中的应用服务器和数据库服务器,我们限制不能直接通过IP地址访问,必须在4A系统登录认证后,通过跳板机才能访问,阻止了外界通过内部客户端代理的访问对服务器发起攻击。

2.应用层安全

其次,我们整个系统采用微服务架构风格,每个子系统采用了3层B/S架构风格。由于涉及的子系统人员和角色众多,我们采用RBAC授权模型,这样既增强了系统安全性,满足业务需求,同时也减轻了角色维护的负担。我们直接采用公司的架构中心已封装了统一认证组件,该组件在登录页面提供了用户名、密码和验证码,或者手机和动态验证码结合的访问方式,以此来达到防止非法访问的系统认证安全。密码在入库时采用MD5+salt加密,这样即使数据库中的密码泄露,也不会被解密。用户登录后访问具体的功能,需要调用API地址,所以API接口设计是该系统通信的安全基础,为了验证访问的有效性和时效性,防止外部人员非授权登录直接调用和窃取信息,我们采用Token机制保障每次调用的安全性,即在统一认证组件登录后,会生成token令牌,然后经过微服务的API网关组件调用API时,会获取到该token,解析出其中的时间戳和用户ID,然后调用统一认证组件的接口来验证其是否已登录和时间戳的有效性,充分保障了接口调用的安全。

  1. 数据层安全

最后,数据是整个系统平台的核心,其中涉及大量重要的信息资产,安全不容忽视。我们主要从数据存储、数据访问和数据容灾几方面进行了设计。由于该系统实现了配置数据的集中管理,包含了例如卡号信息和服务器访问信息等敏感数据,为了防止泄露,我们在存储时进行了加密处理。虽然在处理中损失些性能,但是,提高了数据的安全性和保密性。在数据访问层面,我们的应用程序经过统一访问层组件UDAL才能访问MySQL数据库,在统一访问层设置了分表、分片策略和路由控制机制,实现了逻辑透明性,具有很好的伸缩性;同时在统一访问层设置了允许接入的应用服务器和容器的IP列表;在MongoDB数据库也设置了允许访问的IP白名单列表,同时开启了安全认证。通过限制IP列表的方式可以有效提升数据的完整性。针对我们采用的MySQL数据库和MongoDB数据库,采用主备集群的方式部署,还制定了定期的全量、增量、差量的备份计划,保证数据能及时恢复,充分保证数据抗突发风险的安全。

实践证明,采用以上技术后,系统达到了安全性的要求,该系统已于2019年2月上线运行到目前为止,各服务运行状态良好,能够较好的满足用户的要求,在护网行动期间也没发现安全漏洞,得到了客户和领导的一致认可。目前已完成了所有存量资源数据的接入,可以满足CRM和计费系统的日常运营要求,在月底业务高峰期间,能定位和发现存在性能瓶颈的服务和故障节点,指导相应系统及时采取扩容和灾备方案。但在系统开发过程中也面临两方面不足之处:第一在资源管理的数据建模阶段,没有完全识别出所有用户需求,导致集群模型在CRM系统和PaaS平台上理解有偏差,资源树的展现时无法串联;后期我们重新定义Mongodb文档的字段,修改相应功能的查询语句,就满足了要求。第二由于配置管理是采用蓝鲸开源系统二次改造而来,在多模型关联查询时,性能有待改善;我们采用线程池和并发查询策略直接操作蓝鲸系统的数据库,使得查询性能控制在1s以内。

通过该项目的顺利实施,让我在系统架构设计方面有了新的收获和提高,同时也还需要加强对知识结构的梳理,以及拓宽知识和技能的深度和广度,以便做到融会贯通,更好地做好下一个项目。

第二节、项目支付功能实战-信息安全、支付安全、接口安全详解 (1)信息发送者A要向B 发送一份信息,A 先按双方约定的散列算法对该信息进行散列运算,得到一个该信息特有的消息摘要H,从前面所述可以知道,只要改动信息中任何一位,重新计算出的消息摘要值就会与原先的值不相符。这样就保证了信息的不可更改性。 (2)接着把该消息摘要用A 自己的私钥加密,得到A 对该信息的数字签名S。 (3)然后A 把信息原文与数字签名S 一起发送给B。 (4)当B 收到后,先用A 的公钥对数字签名S 解密得到A 的消息摘要H。 (5)再用同样的散列算法对收到的信息进行散列运算,得到消息摘要H' 阅读详情

相关推荐

AI大模型软件的安全性设计

文章标题 AI大模型软件的安全性设计 关键词:AI大模型、软件安全性、设计原则、策略方法、系统分析、架构设计 摘要:本文将深入探讨AI大模型软件的安全性设计,从背景介绍到核心概念,再到设计策略、系统分析和架

AI天才研究院 749

软件安全设计

文章目录一、软件设计与软件安全设计1、软件设计的主要工作2、软件安全设计的主要工作二、软件安全设计原则1、经典的设计原则2、安全设计原则介绍三、软件安全功能设计1、应用安全功能设计2、就与安全模式的软件安全设计四、威胁建模1、威胁建模的概念2、威胁建模的流程 一、软件设计与软件安全设计 1、软件设计的主要工作 1)总体设计和详细设计 总体设计:是指根据需求确定软件和数据的总体框架,包括系统设计过程和结构设计过程。 详细设计:是将总体设计的结果进一步详细的分化为软甲的算法标识和数据结构。 2)主要工作 从

W0ngk,一个安全菜鸡,一直在模仿,尚未有超越。 1万+

软件设计的模块化与安全性:核心概念与实践

本文深入探讨了软件设计中的模块化原则及其与安全性之间的关系。模块化不仅是构建复杂软件系统的关键,也是确保系统整体安全性的基石。文章首先介绍了分层结构的重要性,强调了层与层之间直接通信的必要性,并探讨了抽象层次如何影响开发过程。接着,文章深入分析了模块化的概念及其在软件开发生命周期中的应用,以及它如何帮助软件工程师更有效地管理和维护代码库。此外,文章还讨论了资格测试的重要性和设计迭代的需求,以及如何在软件开发的每个阶段考虑安全要求。

weixin_42602368的博客 824

软件系统架构黄金法则:安全性设计

1.背景介绍 在当今的数字时代,软件系统的安全性已经成为了一个重要的问题。在设计和实现软件系统时,我们需要确保其安全性,以保护数据和系统资源。在这篇文章中,我们将讨论一种名为“软件系统架构黄金法则:安全性设计”的方法,它可以帮助我们更好地设计和实现安全的软件系统。 1. 背景介绍 软件系统架构是软件系统的基本设计,它决定了系统的组件、关系和交互。在过去的几十年中,软件系统的复杂性和规模不断增...

AI天才研究院 2193

软件信息系统安全设计.docx

软件安全设计文档,用于写标书什么的,很给力的,1分你买不了吃亏,1分你买不了上当,有需要您拿走,暂时没需要也可以留着有需要的时候用

应用系统软件安全服务方案.docx

应用系统软件安全服务方案.docx应用系统软件安全服务方案.docx应用系统软件安全服务方案.docx应用系统软件安全服务方案.docx应用系统软件安全服务方案.docx应用系统软件安全服务方案.docx应用系统软件安全服务方案.docx应用系统软件安全服务方案.docx应用系统软件安全服务方案.docx

软件可靠性与安全性设计与实现知识梳理

原文链接:“”添加链接描述 参加本次软件可靠性与安全性高级技术研讨会学习主要的收获是学习了对软件可靠性与安全性设计与实现的方法,将会在以后在软件设计的工作中提供重要的帮助。现将软件可靠性与安全性设计与实现的知识点进行梳理记录。 防错性设计与实现 防错性设计包括:简化设计、算法与数据管理、慎用易错架构、使用监错技术、多任务管理。 1.1. 简化设计 复杂性是可靠性最凶恶的对手,复杂的软件会导致:代码规模更大、缺陷更多;交互关系更多、缺陷更多;更难测试、不充分的可能性更大;设计、实现、配置、使用

qq_43248127的博客 2435

ROS新手必看:5分钟搞定URDF小车建模(附Rviz可视化调试技巧)

本文为ROS新手提供了快速构建URDF机器人模型的实战指南。通过一个完整的两轮差速小车建模案例,详细解析了URDF的核心语法、Rviz可视化调试技巧以及常见问题排查方法,帮助初学者快速掌握ROS机器人建模与可视化调试的核心技能。

weixin_29079643的博客 249

软件可靠性和安全性设计报告简介

软件可靠性和安全性设计报告简介 【下载地址】软件可靠性和安全性设计报告简介 《软件可靠性和安全性设计报告》为开发者提供了详尽的指导,帮助他们在软件设计阶段确保产品质量。报告通过分析功能和非功能需求,提出了设计准则与要求,涵盖了可靠性设计和安全性设计的关键策略。这些内容不仅有助于预防潜在缺陷和风险,还能提升用户满意度并降低...

gitblog_06770的博客 286

S4HANA Rebate Management(条件合同) -Single Step

S4HANA 条件合同管理(Condition Contract Management), 包括如何创建条件合同,场景应用

m0_50200150的博客 2308

使用海康机器人的SDK进行DWS开发时如何筛选不同类型的相机

使用MVIDCodeReader、MvCodeReaderSDK、MvVolMeasureSDK联合开发时,通常会做一些设备枚举列表,但是不同类型的设备需要枚举在不同的列表中,便于软件使用者配置参数,例如: 如何保证枚举出来的设备是可以选择的对应的设备。我们通常枚举出来的是这样的: 解决办法 在联合开发中,我们发现,只有MvVolMeasureSDK的枚举设备接口EnumStereoCamEx可以正确的只枚举出网络内的体积设备,其余的MVIDCodeReader、MvCodeReaderS

qq_29123967的博客 2732

【免费下载】 军用软件安全性设计实施指南

军用软件安全性设计实施指南 【下载地址】军用软件安全性设计实施指南 军用软件安全性设计实施指南 项目地址: https://gitcode.com/Open-source-documentation-tutorial/5963a ...

gitblog_06686的博客 978

数字IC后端PPA优化实战:Innovus中Timing一致性策略与Module Region布局技巧

本文深入探讨了数字IC后端设计中PPA优化的核心挑战,重点解析了Innovus与PrimeTime之间Timing不一致的根本原因。通过实战案例,详细介绍了在Innovus中设置Timing Margin、Derate以及RC Scale Factor等关键策略,以校准时序视图。同时,文章分享了利用Module Region进行物理布局规划的技巧,将关键模块约束在最优区域,并结合Group Path等进阶方法,有效提升时序收敛效率与PPA结果的可预测性。

f9g0h的博客 2687

【亲测免费】 军用软件安全性设计指南

军用软件安全性设计指南 【下载地址】军用软件安全性设计指南 本仓库提供了一份重要的军用软件安全性设计指南文档,即《GJB_102A-2012 军用软件安全性设计指南.pdf》。该文档为军用软件开发人员、安全专家以及相关研究人员提供了宝贵的指导和参考。 ...

gitblog_09718的博客 971

阿里云人工智能工程师ACA认证免费课程学习笔记

阿里云人工智能工程师ACA认证免费课程学习笔记

engchina的专栏 2014

LabVIEW与VisionMaster融合开发:从封装避坑到高效集成的实战指南

本文为LabVIEW开发者提供了一套与海康VisionMaster融合开发的实战指南。针对直接调用SDK时遇到的程序集加载失败和面向对象编程冲突等核心障碍,文章详细介绍了通过C#进行“浅封装”的解决方案,包括封装显示控件和核心功能类,并给出了在LabVIEW中高效集成、调用及资源管理的最佳实践,旨在帮助开发者稳定、高效地集成机器视觉功能。

weixin_29210727的博客 154

鉴源论坛·轨交软件安全性设计及实现

第一篇对轨交信号系统从铁路系统分类和组成、城市轨交系统分类和组成、城市轨交系统功能、城市轨交系统发展方面做了介绍,第二篇从信号基础出发讲述了信号机、转辙机、轨道电路等设置原则和含义,第三篇从轨交系统的安全性设计的必要性、控制设计、需求分析以及实现等方面进行分析,第四篇重点从联锁系统的原理方面进行阐述。唯一、单一目的,包括名称和位定义,功能和作用,使用范围(有效),生存周期(初始状态、运行中的变化条件、状态和时刻、最终状态),使用情况(该标志的模块名和使用方式)。在完成必要的检测功能的前提下,检测点尽量少。

TICPSH的博客 943

从科研小白到动物行为分析:我的DeepLabCut 3.0安装与初体验全记录

本文记录了从科研小白到成功安装并使用DeepLabCut 3.0进行动物行为分析的全过程。详细介绍了Anaconda环境配置、CUDA版本选择、DeepLabCut安装步骤及验证方法,并分享了初体验中的实用技巧和跨学科研究心得,为生物研究者提供了AI工具应用的实战指南。

weixin_30235225的博客 402

软件架构设计艺术:如何让你的系统更具安全性

1.背景介绍 随着互联网的普及和数字化进程的加速,软件系统的规模和复杂性不断增加。这使得软件系统的安全性变得越来越重要。在这篇文章中,我们将探讨如何通过软件架构设计艺术来提高软件系统的安全性。 软件架构设计艺术是一种将艺术原则应用于软件架构设计的方法。这种方法可以帮助我们创建更具安全性的软件系统。在本文中,我们将讨论以下几个方面: 背景介绍 核心概念与联系 核心算法原理和具体操作步骤以及数...

AI天才研究院 872

CentOS7全隔离环境部署Nvidia Tesla A100 40G驱动与CUDA工具包实战

本文详细介绍了在CentOS7全隔离环境下部署Nvidia Tesla A100 40G显卡驱动与CUDA工具包的实战经验。通过构建本地YUM仓库、解决驱动依赖问题以及三重验证法,确保Tesla A100与CUDA 11.7的完美兼容。同时分享了Anaconda3离线部署技巧,帮助用户在隔离环境中高效搭建Python GPU开发环境。

weixin_27215337的博客 401

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

推荐文章:探索软件可靠性与安全性设计之精华

推荐文章:探索软件可靠性与安全性设计之精华 【下载地址】软件可靠性和安全性设计报告简介 《软件可靠性和安全性设计报告》为开发者提供了详尽的指导,帮助他们在软件设计阶段确保产品质量。报告通过分析功能和非功能需求,提出了设计准则与要求,涵盖了可靠性设计和安全性设计的关键策略。这些内容不仅有助于预防潜在缺陷和风险,还能提升用户...

gitblog_06797的博客 893

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

关于软件设计中安全性的理解

在学习《软件构造》这门课之前,我其实就对软件的安全性有一定的理解。因为大一年度项目我们组就是完成的一个软件创新创业项目,所以我对于软件的安全性有一定的了解,但只能说浅尝辄止。在学习完《软件构造》这门课之后,我对于软件的安全性有了更好更深入的理解,从原理到实践,系统地学习了有关软件安全性的知识,接下来我会通过文字+代码的形式复习一下学习到的软件安全性的知识。 在很早的时候,大概是lab2的时候就已经开始有了对于软件安全性的要求,也学习了关于软件安全性的知识。还记得在lab1的时候基本都要参考学长学姐的代码,里

weixin_43348617的博客 1047

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

GJBZ 102-1997 软件可靠性和安全性设计准则

GJBZ 102-1997 软件可靠性和安全性设计准则 【下载地址】GJBZ102-1997软件可靠性和安全性设计准则 本项目深入解析国家军用标准《软件可靠性和安全性设计准则》,为型号软件的可靠性和安全性设计提供标准化指导。文章从软件需求分析、设计到实现三个阶段,详细探讨了各阶段的关键问题,强调了标准化研究的重要性。通过...

gitblog_06760的博客 522

GJBZ102-1997软件可靠性和安全性设计准则:标准化软件设计流程,提高项目可靠性与安全性

GJBZ102-1997软件可靠性和安全性设计准则:标准化软件设计流程,提高项目可靠性与安全性 【下载地址】GJBZ102-1997软件可靠性和安全性设计准则 本项目深入解析国家军用标准《软件可靠性和安全性设计准则》,为型号软件的可靠性和安全性设计提供标准化指导。文章从软件需求分析、设计到实现三个阶段,详细探讨了各阶段的...

gitblog_06702的博客 780

软件可靠性与安全性设计与实现知识梳理(软件可靠性与安全性高级技术研讨会心得)...

参加本次软件可靠性与安全性高级技术研讨会学习主要的收获是学习了对软件可靠性与安全性设计与实现的方法,将会在以后在软件设计的工作中提供重要的帮助。现将软件可靠性与安全性设计与实现的知识点进行梳理记录。 1. 防错性设计与实现 防错性设计包括:简化设计、算法与数据管理、慎用易错架构、使用监错技术、多任务管理。 1.1. 简化设计 复杂性是可靠性最凶恶的对手,复杂的软件会...

ananchui8247的博客 1036
上一篇: 论软件架构风格的选择
下一篇: Linux性能定位
正说杂谈
博客等级 码龄15年 30粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正说杂谈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值