DevSecOps内置安全保护

前言

随着DevOps的发展,DevOps大幅提升了企业应用迭代的速度。但同时,安全如果不能跟上步伐,不仅会抵消DevOps变革带来的提升,拖慢企业数字化转型进程,还会导致漏洞与风险不约而至。所以安全能力在全球范围内受到的重视越来越高, 软件开发内生的安全性成为评价企业DevOps成熟度水平的重要指标 。

一直以来,业界长期重视软件上线后的安全防护,而对研发阶段的安全投入不多。2012年,Gartner提出了DevSecOps的理念。DevSecOps 的理念是将安全防护流程有机地融入传统的 DevOps 流程中,为研发安全提供强有力保证,安全工具支撑研发阶段段安全要求落地。

安全设计的重要性

在《DevSecOps领导者指南》一书中,作者Glenn Wilson提出了DevSecOps的三层方法论,安全教育(Security Education)、通过设计保证安全(Secure By Design)、安全自动化(Security Automation)。设计安全是实现DevSecOps非常重要的一环,大量历史经验也表明,越早在架构设计阶段考虑到安全设计的系统,比那些在越晚的开发设计阶段才考虑安全设计的系统,要安全得多。根据美国国家标准与技术研究所(NIST)统计,在发布后执行代码修复,其修复成本相当于在设计阶段执行修复的 30 倍。具体数据如图所示。
在这里插入图片描述
DevSecOps 的目标是在软件生命周期的全部阶段,可以更早、更快地发现并处理安全问题。从开始的安全左移到现在的无处不移,都是为了实现这个目标。因此设计安全作为全生命研发周期的排头兵必不可少。

业界的相关安全设计实践

如何做好设计安全,我们先来参考下业界相关机构和企业的做法。

  • 安全开发生命周期SDL(Security Development Lifecycle)是微软最早提出,专注在软件开发流程的各个阶段的安全和隐私问题,在系统设计阶段提到了三个方面:安全设计、威胁建模和安全和隐私风险评估。
  • OWASP推出了SAMM(Software Assurance Maturity Model),帮助开发者在软件工程的过程中实施安全,在软件构造阶段提出了威胁评估和安全架构。
  • 信息通信研究院的研发运营安全体系中,明确给出设计阶段需要进行确定质量安全门禁、受攻击面分析、威胁建模、安全需求设计知识库、安全设计原则。
  • 腾讯在设计阶段提出了公司安全规范的建立、安全评估和威胁建模,腾讯构建了自己的隐私保护方法论——用户、控制、数据三位一体的方式。
  • 小米提出了设计阶段要制定小米安全手册、构建安全培训体系、进行威胁建模分析。
  • 华泰证券在DevSecOps敏捷安全大会2021中发表了《安全内建-通过设计保证安全》,提到了安全架构设计、轻量级威胁建模和安全测试金字塔三个方面。
    其他更多内容不在一一列举,关于设计阶段的安全保障大家都有自己独有的特色,下面我们主要是围绕安全架构设计保证安全落地有法可依,进行威胁建模让安全落地有迹可循、做好隐私和敏感数据保护让安全落地在每一个细节和实处这几个方面进行阐述。

安全架构设计

在DevSecOps中,安全设计从应用程序扩展到容器和基础设施,应用程序代码和基础设施代码是抵御恶意行为者的多重威胁的重要防线。将良好的设计原则集成到产品的架构和开发中是编写安全代码的基本要求。当架构与安全控制直接相关时,确保工程师遵守良好的设计原则是非常重要的。安全控制存在于端到端交付的整个价值流中,从开发阶段内置于应用程序中的控制到运行时保存应用程序的控制。这些措施包括保护源代码或者保护应用程序运行时,还扩展到客户与应用程序的交互,如身份验证和授权过程。

在安全架构设计中,可以以安全三元组和安全设计原则为基准。机密性(Confidentiality)、完整性(Integrity)、可用性(Availability),简称为CIA三元组,是安全的基本原则。机密性指只有授权用户可以获取信息,不可被任何未授权的用户获取。完整性指信息在输入和传输的过程中,不被非法授权修改和破坏,保证数据的一致性。可用性指保证合法用户对信息和资源的使用不会被不正当地拒绝。

业界通用的安全设计原则,主要体现在限制性、简单性和设计性三个方面:
限制性原则

  • 失败-默认安全原则(Fail-Safe Defaults),要有当功能失效后的应急安全机制,还有默认的产品配置就应该是安全状态,不存在安全漏洞。
  • 完全仲裁原则(Complete Mediation),安全检查要覆盖任何一个访问操作。安全机制有能力标识每一个访问操作请求的所有源头。
  • 特权分离原则(Separation of Privilege),将特权进行细分,分配给多个主体,避免一个主体拥有的特权非常多。比如设置系统管理员,配置管理员,安全管理员等不同角色,对应不同特权。
  • 最小权限原则(Least Privilege),每个对象只拥有完成工作所需特权的最小集合,限制由意外或错误所引起的破坏。

简单性原则

  • 经济适用原则(Economy of Mechanism),安全设计尽可能短小精悍,在使用的时候更容易处理。
  • 最少公共机制原则(Least Common Mechanism),公共资源的共享对象应该设置为最少的数量,避免多个对象共享同一个资源的场景。

设计性原则

  • 开放设计原则(Open Design),不要自行设计安全机制,不要自研算法,开发设计更重要。可以通过密钥、口令等来增强系统的安全性,这样有利于安全机制接受广泛的审查。
  • 心理可承受原则(Psychological Acceptability),在心理可承受的前提下,为安全机制设置良好交互性,安全机制可能会为用户增加额外的负担,但是这种负担必须是合理的,用户可承受的。比如多次登录失败后才需要输入验证码。

业界经过多年的发展和总结,又发展引申出其他一些安全原则,例如纵深防御、不要轻信、保护最薄弱环节、提升隐私原则等。

威胁建模

威胁建模是分析应用程序安全性的一种结构化方法,用来识别,量化和解决与应用程序相关的安全风险,通过识别目标和漏洞来优化系统安全,然后定义防范或减轻系统威胁的对策的过程。在设计新产品或者现有产品中功能的时候,工程师需要熟悉攻击者搜索的安全漏洞类型,以便他们能够减轻被利用的风险;需要了解设计中固有的风险,以便在交付生命周期的早期消除或者减轻这些风险。综上所述,威胁建模就是工程师评估产品或功能的设计以识别威胁并确定如何构建针对他们的保护的过程。

威胁建模的过程可以参考微软提供的方法:预设场景->图表化场景/过程->识别威胁->提供给每个威胁的环节措施->验证所有威胁和缓解措施。
在这里插入图片描述
一些IT互联网公司,在大量的实践经验基础上,构建了自己的安全威胁库和安全需求库,实现了轻量级威胁建模过程,通过安全评估调查问卷,从系统结构和使用场景去识别将要构建的应用类型,然后匹配对应的威胁库和需求库,确定安全需求基线,最终得出安全设计方案。

业界有许多的威胁建模的方法已经开发出来,如微软的STRIDE、攻击模拟和威胁分析流程PASTA、LINDDUN、通用漏洞评分系统CVSS、攻击树、Persona non Grata、安全卡、VAST建模等方法,可以将它们组合起来以创建更强大、更全面的潜在威胁视图。并不是所有的方法都是全面的,有些是抽象的,有些以人为中心,还有些方法是专门针对风险或者隐私问题,组织应该根据项目的特定需求选择哪种方法。

安全隐私和数据保护

安全隐私需求分析与设计是服务应用研发运营整个生命周期的源头,在设计阶段应仔细考虑安全和隐私问题,在项目初期确定好安全需求,尽可能避免安全引起的需求变更。

DevSecOps研发运营安全解决方案关注痛点安全问题,如安全要求、合规要求以及目前热点的个人数据和隐私保护等问题,使用安全解决方案可以更好的避免此类安全问题的发生,提升软件应用服务的安全性。

安全隐私需求主要来自于客户安全需求,业界最佳实践如OWASP TOP10、OWASP ASVS,公司安全策略《xxx信息技术管理规范》《xxx数据管理规范》,行业监管要求,以及法律法规《网络安全法》、《个人信息保护规范》、《数据安全法》等。建立明确的安全需求管理流程,能够对安全需求的分析、评审、决策等环节进行有效管理,让需求分解分配可追溯。

华为云安全设计实践

华为有20年研发安全积累,华为的研发安全能力是伴随业务中不断出现的问题逐步形成的。华为将已经开放的运维安全能力,和即将开放的研发安全能力与华为云DevCloud深度融合,为企业带来DevSecOps平台,让企业便捷的落地DevSecOps理念,在软件开发过程中就内置了安全保护,让软件“天生安全,健康成长”,成为企业的竞争力。

安全架构设计

华为在安全设计原则方面,基于业界的规范,构建了自己的基础安全技术与工程能力,形成了安全标准与规范,其中包括安全/隐私需求基线,基础安全设计规范落地,安全编码规范,采购安全要求,开源及第三方软件安全管理策略。

华为云在参考信息技术安全评价通用专责CC的安全功能项、NIST控制集,总结成产品安全架构设计8维度24子项。8维度安全架构设计包括以下几个方面:
在这里插入图片描述
以此指导架构设计人员系统、全面地进行安全架构设计,避免架构级安全设计遗漏。

威胁建模

华为有自己的威胁建模工具 SecDesign,在产品设计期就进行威胁建模,识别并消减风险

从痛点问题入手去思考:在系统需求分析和设计阶段,怎样才能使产品更安全?在什么样的子系统、模块、数据流之间考虑安全风险?识别了风险后,怎么消减几个方面进行思考?华为云开放的安全设计域,对STRIDE方法论进行升级,用于系统威胁分析,提供分析维度、参考案例,辅助进行安全设计;根据识别到的安全风险,智能推荐消减措施及测试用例,输出分析报告;长期积累的安全风险识别方案、消减方案、设计方案、测试用例、场景样例与知识,为安全设计提供丰富的华为与业界经验,极大降低企业安全设计门槛。

安全隐私和数据保护

华为云构建了全生命周期的数据安全和隐私保护设计,实现数据隔离、数据加密和数据冗余。

  • 数据隔离:隔离机制可避免客户间有意或无意的非授权访问、篡改等行为,降低数据泄露风险。华为云的云硬盘EVS、对象存储服务OBS、弹性文件服务SFS等服务均将客户数据隔离作为重要特性。用户在设计云上业务架构时可利用这些云服务实现数据安全隔离的目标。
  • 数据加密:加密可保护静态和传输中的数据。华为云的云硬盘EVS等多个服务均支持与数据加密服务DEW集成,实现密钥管理和数据加密。华为云还采用加密传输通道,保障数据在传输过程的机密性和完整性。用户在设计数据加密功能时,可以充分借鉴华为云已有的实践和能力。
  • 数据冗余:冗余设计可以有效防止数据丢失。华为云采用多副本备份和纠删码设计,通过冗余和校验机制来判断数据的损坏并快速进行修复,以确保服务的可靠性。用户在设计云上业务时,可充分利用华为云服务提供的可靠性服务。
  • 隐私保护设计:在产品设计过程中考虑隐私,可大幅提高产品的隐私保护能力。华为云在构建云服务时,将隐私保护作为需求落入产品开发设计流程。华为云在个人数据全生命周期贯彻PbD(Privacy by design)的理念,构建具备隐私保护特性的安全云服务。华为云基于PbD原则在设计中考虑隐私,即通过设计来保护个人数据和隐私,将保护个人数据和隐私的理念以技术手段运用到产品和服务的各个环节中。华为云贯彻和落实的七条隐私保护基本原则是合法、正当、透明,目的限制,数据最小化,准确性,存储期限最小化,完整性与保密性,可归责。华为云解读GDPR等法律法规,帮助企业满足合规要求。华为云开放的隐私合规域,根据对GDPR等的解读与业务分析,提供工具,生成隐私合规报告、隐私声明,帮助企业合规设计;根据隐私合规设计方案,自动生成和执行测试用例,最后给出隐私合规验证报告。

后记

DevOps 的基本诉求之一是要“快”,而安全保障却具有“快不起来”的特点。因为安全本身需要更为专业的知识背景,分析更复杂的攻击方式和潜在安全问题。并且,即使使用工具,其技术栈也深于普通的检查工具,这意味着耗时更长。比如,对源代码的静态检查,如果只是检查代码风格,他们可以做到快速扫描;如果需要进行安全编码的自动化检查,那么就需要进行流分析,甚至需要一个专门的编译过程来收集必要信息。未来的路任重道远,实现DevSecOps还有很长的路要走。

网络安全学习资料

下面我准备了很多网络安全学习资料,包括视频教程+学习路线+必读电子书+相关工具安装包+面试题等欢迎大家来白嫖
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/137377.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像识别-YOLO V8安装部署-window-CPU-Pycharm

前言 安装过程中发现,YOLO V8一直在更新,现在是2023-9-20的版本,已经和1月份刚发布的不一样了。 eg: 目录已经变了,旧版预测:在ultralytics/yolo/v8/下detect 新版:ultralytics/models/yolo/detect/predict.py 1.安…

aspose-words导出word方法

一、引用依赖 <dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>19.5</version><classifier>jdk17</classifier></dependency>二、导出类 public class WordTable {//定…

腾讯云阿里云云服务器 Linux 操作系统 BT 宝塔面板快速建站教程

宝塔面板概述 宝塔面板是一款服务器管理软件&#xff0c;支持Windows和Linux系统&#xff0c;可以通过Web端轻松管理服务器&#xff0c;提升运维效率。总体来说&#xff0c;宝塔面板具有操作简单、功能丰富、安全可靠等特点&#xff0c;是一款非常实用的服务器管理软件。 宝塔…

GPT,GPT-2,GPT-3,InstructGPT的进化之路

ChatGPT 火遍圈内外&#xff0c;突然之间&#xff0c;好多人开始想要了解 NLP 这个领域&#xff0c;想知道 ChatGPT 到底是个什么&#xff1f;作为在这个行业奋斗5年的从业者&#xff0c;真的很开心让人们知道有一群人在干着这么样的一件事情。这也是我结合各位大佬的文章&…

滚雪球学Java(25):动态代理

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

IPv6协议基本概念

目前大多数设备节点支持IPv6和IPv4双栈,但随着IPv6逐渐应用,某些设备已经只支持纯IPv6,即IPv6 Only。 一、IPv6地址格式 1、IPv6地址表示方式 IPv6可以写成一组8个十六进制数,用冒号(:)分割。也可以写成128位2进制的0和1。 32即8x4,8表示8组16进制数,4表示每组16禁止包…

Git基础操作

前言 本文会向您介绍如何安装git&#xff0c;以及快速地上手add&#xff0c;commit&#xff0c;push&#xff0c;版本回退操作 基础配置 关于windous上的安装git官网已经介绍的很清楚了&#xff0c;您可以直接点入链接windows安装 如果你的平台是centos&#xff0c;以centos…

【Verilog教程】2.4Verilog表达式

表达式 表达式由操作符和操作数构成&#xff0c;其目的是根据操作符的意义得到一个计算结果。表达式可以在出现数值的任何地方使用。 例如&#xff1a; a^b ; //a与b进行异或操作 address[9:0] 10b1 ; //地址累加 flag1 && flag2 ; //逻辑与操作操作数 …

有没有普通人可以做的项目?分享几个项目适合普通人做的!

当谈到副业时&#xff0c;我们通常会想到能够轻松实施的兼职方式&#xff0c;并且希望通过这些副业增加我们的收入。那么&#xff0c;以下是我推荐的几种副业&#xff0c;这些副业不仅有良好的收入潜力&#xff0c;而且在执行过程中也很有趣。让我们一起看看吧&#xff01; 第…

Hive行转列[一行拆分成多行/一列拆分成多列]

场景&#xff1a; hive有张表armmttxn_tmp&#xff0c;其中有一个字段lot_number&#xff0c;该字段以逗号分隔开多个值&#xff0c;每个值又以冒号来分割料号和数量&#xff0c;如&#xff1a;A3220089:-40,A3220090:-40,A3220091:-40,A3220083:-40,A3220087:-40,A3220086:-4…

爬虫框架Scrapy学习笔记-2

前言 Scrapy是一个功能强大的Python爬虫框架&#xff0c;它被广泛用于抓取和处理互联网上的数据。本文将介绍Scrapy框架的架构概览、工作流程、安装步骤以及一个示例爬虫的详细说明&#xff0c;旨在帮助初学者了解如何使用Scrapy来构建和运行自己的网络爬虫。 爬虫框架Scrapy学…

Redis的介绍以及简单使用

Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的内存数据存储系统&#xff0c;它以键值对的形式将数据存在内存中&#xff0c;并提供灵活、高性能的数据访问方式。Redis具有高速读写能力和丰富的数据结构支持&#xff0c;可以广泛应用于缓存、消息队列、实…

华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 STREAM 深度测评华为云云耀云服务器L实例的内存性能

本文收录在专栏&#xff1a;#云计算入门与实践 - 华为云 专栏中&#xff0c;本系列博文还在更新中 相关华为云云耀云服务器L实例评测文章列表如下&#xff1a; 华为云云耀云服务器L实例评测 | 从零开始&#xff1a;云耀云服务器L实例的全面使用解析指南华为云云耀云服务器L实…

Outlook打开超链接用默认浏览器Microsoft outlook open hyperlink using default browser

这两天outlook打开超链接一直用edge&#xff0c;但我的默认浏览器是chrome。 解决方法 在outlook的选项中的高级设置里面&#xff0c;将超链接打开选为默认浏览器。

ESP8266 Windows下开发环境搭建

文章目录 1、SDK下载2、Windows下的开发工具链安装3、ESP8266专用工具链安装4、运行msys32目录下的mingw32.exe&#xff0c;初始化环境5、配置环境变量6、编译hello world例程7、SDK配置8、烧录9、在串口助手中查看 1、SDK下载 官方提供了两种SDK&#xff0c;OS版本和非OS版本…

java springboot 如何实现小程序支付

今天给大家分享java小程序支付 首先我们学习任何东西要先看官网 下面是支付业务流程 我们具体用代码去实现上面的业务流程 功能截图 代码截图 pay(){//调用后台生成订单var orderNumber "20210101123456";var amount 0.01;WxPay.wxpay(app, amount, orderNumber…

(一)探索随机变量及其分布:概率世界的魔法

文章目录 &#x1f34b;引言&#x1f34b;什么是随机变量&#xff1f;&#x1f34b;离散随机变量&#x1f34b;连续随机变量 &#x1f34b;随机变量的概率分布&#x1f34b;离散概率分布&#x1f34b;0-1分布&#xff08;Bernoulli分布&#xff09;&#x1f34b;二项分布&#…

Unity制作曲线进度条

unity制作曲线进度条 大家好&#xff0c;我是阿赵。   在使用Unity引擎做进度条的时候&#xff0c;有时会遇到一个问题&#xff0c;如果进度条不是简单的横向、纵向或者圆形&#xff0c;而是任意的不规则形状&#xff0c;那该怎么办呢&#xff1f;比如这样的&#xff1a; 一…

CentOS7安装Nginx+ModSecurity

一、介绍 当学习网络安全时&#xff0c;了解和使用安全设备是必不可少的一部分&#xff0c;其中一种常见的安全设备是Web应用防火墙&#xff08;WAF&#xff09;。市场上有许多商业化的WAF&#xff0c;但对于学习目的&#xff0c;我推荐使用一款免费开源的WAF&#xff0c;名为…

SpringMVC自定义注解和使用

一.引言 1.简介&#xff1a; 在Spring MVC中&#xff0c;我们可以使用自定义注解来扩展和定制化我们的应用程序。自定义注解是一种通过Java的注解机制定义的特殊注解&#xff0c;可以应用于控制器类、方法或者方法参数上&#xff0c;以实现不同的功能和行为。&#xff08;注解…