DevSecOps“内置安全保护”,让软件研发“天生健康”

news2024/9/22 5:38:04

前言

随着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.coloradmin.cn/o/138517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4款宝藏国产软件,装了就舍不得卸载,白嫖必备

提到国产软件,许多人想到“流氓、捆绑、广告多”,事实上国产良心软件非常多,如下面几款,每一个都功能强大,最重要还免费使用。 1、原本(图片处理神器) 日常生活与工作中,经常需要拍摄…

C++单例模式 : 懒汉模式 与 饿汉模式

单例模式: 只能有一个实例,有懒汉和饿汉区分,实现核心思想: 1.构造函数私有化 2.使用静态函数作为接口来获取类对象 1、懒汉模式: 由调用者实例,多线程情况下会存在线程安全问题,需要加互斥锁进…

寒冬已过,2023抓住IT复苏新机会

随着疫情防控进入新的阶段,2023年经济将逐渐回暖,许多行业也将迎来IT需求复苏的新机会。本期,我们就以互联网,金融和房地产这3个支柱行业近期的实际案例,来说明在在线文档领域的新机会。案例1:某互联网集团A公司&#…

数据结构---二叉树路径问题

二叉树路径问题二叉树所有路径分析JAVA实现力扣提交找到一个和为sum的到达叶子节点的路径分析JAVA实现力扣提交求路径(中间一段)C实现打印根节点到任意节点的路径JAVA实现二叉树所有路径 257二叉树所有路径 分析 前序遍历二叉树递归实现回溯 深度优先搜…

容器化——Centos下部署最后一版支持Docker的k8s集群

部署版本 首先要确定部署的版本 查询Kubernetes对Docker支持的情况 kubernetes/dependencies.yaml at master kubernetes/kubernetes (github.com) 查询Kubernetes Dashboard对Kubernetes支持的情况 Releases kubernetes/dashboard (github.com) 名称版本kubernetes1.23Doc…

如何对CentOS7配置静态IP

CentOS配置静态IP一、检测配置成功的方法1.虚拟机能访问互联网2.虚拟机和物理机可以相互ping通二、配置步骤1.查看物理机IP2.配置虚拟机网络模式3.设置NAT模式网段4.编辑修改配置文件5.测试三、报错解决方案1.网络重启失败2.ping不通一、检测配置成功的方法 1.虚拟机能访问互联…

MyBatis的五种批量查询

一.直接循环插入 RestController RequestMapping("/mybatis3/user") RequiredArgsConstructor public class UserController {private final IUserService iUserService;GetMapping("/one")public Long one(){return iUserService.add();} }Long add();Se…

intel更新13代桌面处理器产品线,更多核心更贵价格

intel 13代酷睿产品线更新带来了更多低于125w TDP的处理器。intel确认了10个65wTDP的SKU和6个35wTDP的SKU。13代酷睿包含新的Raptor Lake和旧的Alder Lake(Refresh)处理器。因为桌面处理器型号序列比较乱,这是SKU命名方式的列表:1XX00KS – 特别(灰烬)版…

【回答问题】ChatGPT上线了!给我推荐比较流行的音频处理算法模型

给我推荐比较流行的音频处理算法模型 音频处理算法模型有很多种,我给你列举一些比较流行的: 声音分类:用于将声音信号分成不同的类别,比如人声、自然声、机器声等。 声音分离:用于从混合的声音信号中分离出单独的声…

PDF可以转Word吗?3种方法建议收藏

PDF文件是很常见的文件传输格式,大部分的时候我们会将常见的办公文件格式转换成PDF。PDF文件占存较小,传输的速度比较快,而且文件的固定性强,不会轻易发生改动让排版和文本错乱,是很好用的文件格式。但常常对于我们所需…

乐维监控keycloak单点登录实操(上篇)

Keycloak为Web应用和Restful服务提供了一站式的单点登录解决方案,为登录、注册、用户管理提供了可视化管理界面,用户可以借助于该界面来配置符合自身需要的安全策略和进行用户管理。下面让我们来看看乐维监控如何实现keycloak单点登录,乐维ke…

反编译Method(反编译类中的方法)

package com.javase.reflect;import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ResourceBundle;/*** 反编译Method 这里我们暂时还不能获取方法体中的内容* 通过读取属性配置文件来对不同的类进行反编译*/ public class ReflectMethodTe…

【机器学习】李宏毅-预测PM2.5

李宏毅-预测PM2.51 实验目的 巩固课堂所学知识,学习使用Linear Regression中梯度下降预测模型,并将所学运用至实践,根据从空气质量监测网下载的观测数据,使用Linear Regression 预测出空气污染指数(即PM2.5) 的数值。 2 实验要求…

【算法】超详细哈夫曼编码JAVA解释

综合实验报告格式 综合实验题目 一、人员和分工 LenckCuak 二、问题描述和基本要求 1、 用哈夫曼编码设计一个压缩软件; 2、 能对输入的任何类型的文件进行哈夫曼编码,产生编码后的文件——压缩文件; 3、 能对输入的压缩文件进行译码&…

【机器学习】李宏毅-食物图像分类器

李宏毅-食物图像分类器1 实验目的 掌握使用Pytorch的使用方法: Pytorch的安装以及环境搭建Pytorch处理数据Pytorch计算梯度以及搭建神经网络Pytorch训练模型 并使用Pytorch来训练CNN模型,实作一个食物的图像分类器。 2 实验要求 可以使用tensorflow或…

print()函数的使用

一、print()函数共三种类型的使用方法二、代码展示

Excel求解运输问题——以福斯特公司问题为例

目录 1.1 问题 福斯特问题例 1.2 数学模型 1.3 excel求解 第一步:建立一个工作表 第二步:求解器求解 1.1 问题 运输问题通常出现在计划货物配送机从供给地区到达需求地区之间的服务中,一般供给地区货物数量有限,需求地区货物…

时间序列分析原理

一、定义 时间序列,是指将某种现象某一个统计指标在不同时间上的各个数值,按时间先后顺序排列而形成的序列 生活中各领域各行业有很多时间序列的数据,销售额,顾客数,访问量,股价,油价&#xff…

k8s 部署canal admin及server单机服务

目录 1. 前言 2. 部署canal-admin 2.1 数据库初始化 2.2 canal-admin k8s yaml部署文件 3. 部署canal-server单机 1. 前言 canal官方文档:https://github.com/alibaba/canal/wiki 主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。…

一文读懂深度学习中文本处理的4种方式

一、序言文本处理方式是深度学习领域中自然语言处理的基础,即把文本转变成计算机识别的语言过程。转变之后才能用算法做后续的文本分析和理解。所以有必要了解文本处理的几种方式,做到对不同的场景采用不同的处理方式。常见的文本处理方式有独热编码(one…