写点什么

如何在不牺牲生产力的情况下构建安全软件

  • 2025-07-18
    北京
  • 本文字数:1644 字

    阅读完需:约 5 分钟

大小:813.52K时长:04:37
如何在不牺牲生产力的情况下构建安全软件

安全与开发效率有时会相互冲突。与其一味预防安全漏洞,不如专注于减轻漏洞的影响,这往往更加高效。Dorota Parad 主张在合规性方面保持灵活性,并与安全团队合作,共同制定实用的保护措施。通过限制漏洞的影响范围和引入自动化手段可以在不牺牲生产力的情况下增强安全性。


QCon 旧金山大会上,Dorota Parad 分享了如何在不牺牲生产力的情况下构建安全软件

安全有时会与快速高效的开发流程相冲突。与其专注于预防漏洞,不如专注于减轻漏洞的影响,这往往更有效。在“确保安全而不损害软件开发生产力”一文中,Dorota Parad 探讨了如何在不损害工程生产力的情况下建立安全基础。


Parad 建议抵制那些阻碍生产力的安全要求,而第一步是了解这些要求的来源:

首席信息安全官(CISO)和安全团队的工作很少真正与安全有关,他们的职责是确保合规。与普遍观点相反,合规并不是简单地勾选复选框,复选框只是达成目标的一种方式。


Parad 表示,最终目标是构建一个能够说服第三方利益相关者(如审计师、监管机构和保险公司)的故事,让他们相信公司已经很好地控制了安全风险。


Parad 指出,没有任何安全认证或法规是绝对规定性的,公司需要自行定义安全的范围、手段和实施方式。这可能是一项艰巨的任务,因此企业可能会为了简化审计流程而采取一些措施,例如强制使用侵入性的移动设备管理(MDM)软件,而不考虑其对工程师生产力的潜在影响。


Parad 建议,如果想摆脱一些令人烦恼的安全要求,就需要与安全团队展开对话,帮助他们构建令人信服的叙事。这包括记录你对本领域风险的看法、缩小安全漏洞影响范围的措施、已实施的保护层级,以及如何最小化事件影响。


Parad 探讨了如何最小化安全漏洞的影响,并以一个常见威胁为例:恶意行为者获取了工程师的云账户凭据:

最坏的情况是什么?如果我们应用了隔舱化(bulkheads)原则,这些凭据的作用范围仅限于一个云账户,而该账户可能(也可能没有)托管我们的生产环境。


Parad 提到,如果我们采用现代软件开发实践,访问权限将仅限于只读和一些无害的配置变更,因为资源的创建和删除将被自动化,并且仅作为 CI/CD 管道的一部分。


如果该账户包含对包含用户数据的数据库的访问权限,并且我们应用了适当的加密措施,那么这些数据对攻击者来说实际上是毫无用处的,Parad 补充道。


Parad 表示,试图预防此类事件将是一项成本高昂的工作,需要针对所有不同的攻击向量进行多次补救。相比之下,限制影响范围是一种全面的解决方案,它不需要付出太多努力或成本,并且通常还会带来额外的健壮性,她总结道。


InfoQ 采访了 Dorota Parad,探讨了如何让安全与工程生产力齐头并进。


InfoQ:你如何看待抵制那些阻碍生产力的安全要求?

Dorota Parad:只有当你有其他方法来最小化安全风险时,才能抵制这些要求。这正是 BLISS 框架(隔舱化、层级化、影响、简化和成功陷阱)的用武之地,它提供了一种不会阻碍工程师工作的替代方案。通过采用 BLISS,你可以让安全策略几乎对工程师不可见,同时将其深深融入企业文化中。


InfoQ:CI/CD 管道能否被视为一种安全实践?

Parad:这有时会让安全人士感到惊讶,但我的回答是肯定的:我认为 CI/CD 管道是一种安全工具。如果实施得当,它能显著降低恶意代码进入生产环境的风险。

典型的构建/部署管道具有层层递进的严格保护层级,代码越接近生产环境,保护层级就越严格。从 Git 访问控制提交代码,到开发者凭据创建拉取请求,再到自动测试发现潜在问题,最后是另一组凭据配合人工审查合并代码。这种方式能有效最小化安全风险。


InfoQ:如何通过 CI/CD 管道来增强安全性?

Parad:每一段代码都需要通过管道才能到达生产环境,没有任何例外。不允许手动干预推动构建通过,不允许跳过步骤,也不允许登录服务器复制文件或运行脚本。

要在实践中实现这一点,唯一的方法是保持 CI/CD 管道的健康和稳健,确保它们只在真正出问题时才会失败。不稳定的管道是安全和生产力的敌人。


【声明:本文由 InfoQ 翻译,未经许可禁止转载。】


原文链接:

https://www.infoq.com/news/2025/07/secure-software-productivity/

2025-07-18 13:008515

评论

发布
暂无评论

让 Java Agent 在 Dragonwell 上更好用

阿里巴巴云原生

Java 阿里云 云原生

React源码分析3-render阶段(穿插scheduler和reconciler)

flyzz177

React

React源码解读之React Fiber

flyzz177

React

百度前端经典vue面试题整理

bb_xiaxia1998

Vue

Higress & Kruise Rollout: 渐进式交付为应用发布保驾护航

阿里巴巴云原生

阿里云 云原生 Higress

React源码解读之更新的创建

flyzz177

React

22道js输出顺序问题,你能做出几道

loveX001

JavaScript

面试官:说说Event Loop事件循环、微任务、宏任务

loveX001

JavaScript

分布式是大数据处理的万能药?

jiangxl

年终盘点一 | 云原生的 2022 年:降本提效、全面 Serverless 化

阿里巴巴云原生

阿里云 Serverless 云原生

React源码解读之任务调度

flyzz177

React

react的jsx和React.createElement是什么关系?面试常问

beifeng1996

React

从零手写react-router

helloworld1024fd

JavaScript

vivo 故障定位平台的探索与实践

vivo互联网技术

根因分析 聚类 K-Means 二阶指数

2023前端二面常考面试题合集

loveX001

JavaScript

WWW 是否应该属于 URL?

devpoint

Cookie url SEO www

恭喜 OpenSergo 获得中国开源云联盟 2022 “优秀开源项目”

阿里巴巴云原生

阿里云 开源 云原生 OpenSergo

前端高频react面试题整理

beifeng1996

React

每日一题之Vue数据劫持原理是什么?

bb_xiaxia1998

Vue

RocketMQ 多语言 SDK 开源贡献召集令

阿里巴巴云原生

阿里云 RocketMQ 云原生

用javascript分类刷leetcode9.位运算(图文视频讲解)

js2030code

JavaScript LeetCode

大厂前端面试考什么?

loveX001

JavaScript

前端二面经典vue面试题指南

bb_xiaxia1998

Vue

MSE ZooKeeper 数据导入导出功能上线

阿里巴巴云原生

zookeeper 阿里云 云原生

React源码分析4-深度理解diff算法

flyzz177

React

React源码分析2-深入理解fiber

flyzz177

React

React面试:谈谈虚拟DOM,Diff算法与Key机制

beifeng1996

React

云原生人才培养计划2.0 之 消息产品「全家桶训练营」重磅来袭

阿里巴巴云原生

阿里云 云原生

前端leetcde算法面试套路之堆

js2030code

JavaScript LeetCode

前端leetcde算法面试套路之回溯

js2030code

JavaScript LeetCode

社招前端react面试题整理

beifeng1996

React

如何在不牺牲生产力的情况下构建安全软件_云安全_Ben Linders_InfoQ精选文章