前言软件设计是软件工程的核心,无论采用何种开发模式,软件设计都离不开开发。当需求分析完成后,就进入了设计阶段,设计的好坏直接影响到软件的质量。一个好的设计解决方案可以让团队有清晰的愿景和路线图,并且作为技术领导可以让整个团队更容易协作。设计方案的制定需要网络工程师、架构师、数据库管理员、安全等多方角色的参与,确保满足功能需求、非功能需求和约束条件。好的设计是开发高质量软件的基础。设计、体系结构和安全从软件开发生命周期的角度来看,软件设计可以看作是从软件需求说明书开始,设计软件系统的总体结构,划分功能模块,根据需要确定各模块的功能。到需求分析阶段确定的功能。实现算法等内容,形成软件的具体程序,从整体到部分,从概念设计到详细设计。软件设计工作包括:应用架构设计、网络架构设计、界面设计、角色权限设计、流程设计、数据库设计、界面设计等。所有的架构都是设计,但并非所有的设计都是架构。设计解决方案需要考虑成本、许可协议、技术策略、兼容性和用户习惯。产品经理执着于用户需要什么功能,而不太关注非功能需求和约束,往往含糊其辞地给出“快速、稳定、安全”的主观要求。安全作为方案评审的重要角色,需要对复杂、抽象的解决方案进行评估,需要具备较高的综合能力,以确保安全风险得到防控,满足实际业务需求。应用架构设计应用架构关注的是宏观结构,即软件在结构上被分解为多个按一定关系连接的组件。常见的应用架构有两层架构和三层架构。两层架构分为应用层和数据层。应用层负责信息展示和逻辑处理,数据层负责数据存储和管理。示意图如下:三层架构分为表现层、业务逻辑层和数据层。表现层负责信息的输入、输出和展示,业务逻辑层负责业务处理,数据层负责数据的存储和管理。示意图如下:一般来说,三层架构比两层架构更安全,直接访问不同层需要认证,比如业务逻辑层验证表现层的用户账号密码,数据层验证业务逻辑层的数据库账号密码。三层架构的业务逻辑层负责验证用户数据和权限,合理的接口设计可以拒绝大部分非法请求。接口设计需要考虑抗重放攻击、抗数据篡改、抗信息泄露、抗未授权访问、抗程序化攻击(爬虫、条件竞争)等风险,可以通过通用技术实现oftimestamptimestamp+signaturesign+token+ssl为接口设计安全性。网络架构设计网络通常按区域分为内部网络、外部网络和DMZ区域。内部网络主要是办公区、管理区、数据存储区和专用区。在私有区中,外部网络主要是面向客户和合作伙伴的,DMZ是内外网络之间的缓冲区。下面是一个常见的Web应用网络架构设计:在进行安全设计时,需要考虑不同网络区域的不同安全级别。比如DMZ区域是不安全区域,不能存放敏感的业务数据。外网文件需要传输到内网。内网文件上传到外网需要病毒扫描、敏感信息检测,其他一些特殊应用需要划分VLAN,达到逻辑隔离的目的。角色权限设计应用的角色权限设计需要满足两个原则:最小权限和职责分离。每个角色职责明确,只分配必要的权限,权限需要细化到读、写、删除、执行等具体操作,避免过度授权。重要的操作需要分解为两个或更多人,以减少操作不当的风险。例如,数据录入角色只能写入数据,数据审核角色只能读取审核过的数据,不能修改。另外,需要禁用系统默认账户角色,特权账户角色需要开启双因素认证,避免密码丢失或默认密码带来的安全风险。通过限制不同用户的权限,可以有效减少攻击面。流程设计业务流程设计需要避免常见的业务安全风险。例如,如果账号注册过程中没有严格验证用户信息,则可能存在羊毛党批量注册和维护账号的风险。可能出现虚假交易、洗钱和套现风险,营销活动可能存在诈骗和套现风险。业务流程设计需要考虑到各种可能出现的场景,结合当前黑灰行业的特点,对薄弱环节进行补强,增加攻击者的成本。其他设计,如数据库设计,需要将数据库分离,需要适当设置数据库用户权限,防止应用系统使用root用户访问数据库。接口设计需要避免一些不安全的功能接口,比如执行自定义的sql语句,shell命令的调试功能等。、项目需求文档、架构设计图、流程图等,以及常见的安全设计问题,可以归纳起来形成一个checklist,然后逐项检查。Checklist包括身份认证、权限控制、日志处理、数据校验、数据加密、数据签名等检查项。以下是一些例子:安全设计检查表可以帮助审稿人快速检查设计方案,但缺乏针对性导致无法实现个性化定制,因此只能作为一种过渡,一种更贴近的审稿方式该业务需要进一步探索。威胁建模目前,大多数免费的威胁建模工具都是客户端软件。比如微软和owasp都推出了威胁建模工具。缺点是只能安装在一台电脑上,不利于团队合作。另外,英文的威胁描述和安全控制方案难度很大。不友好,不能直接推送给产品经理和架构师做设计参考。最后基于Web前端技术,实现在线威胁建模,针对不同业务线定制安全威胁库和威胁缓解建议库,实现针对性的安全设计审查。这并没有严格遵循微软的威胁建模方法,而是根据团队的习惯,对应用架构、业务流程、角色权限进行威胁分析。下例:黄色标识资产,红色标识威胁,绿色标识安全控制应用架构威胁分析:业务流程威胁分析:角色权限威胁分析:威胁分析结论最终总结如下:总结安全设计审查是重要的SSDLC的一部分。虽然有威胁建模工具可以辅助分析,但这些工具大多来自国外。设计和描述对国内用户非常不友好,而且作为一个单独的软件,无法与其他版本管理工具集成。适当改变威胁建模流程,可以有效实施安全设计审查活动,使威胁建模分析可视化、规范化,后续安全测试也可以参考历史审查结论进行针对性测试。
