编译丨诺亚
出品 | 51CTO技术栈(微信号:blog51cto)
生成式AI并不会完全取代DevSecOps,但它无疑正在给其带来巨大挑战。面对代码生成的这种高速度,安全团队该如何跟上步伐呢?
大多数开发工程师已经采用生成式AI技术。目前,他们很可能已经体验到了显著的生产力提升和工作满意度增长,至少在认知负担上有所减轻。生成式AI已经成为开发者获取快速解决方案的新一代Stack Overflow。但随着高速度而来的,是巨大的风险。
去年,普渡大学的研究人员发现ChatGPT编写的代码错误率高达52%。上个月,GitClear发布了一份报告,揭示了由于过度依赖GitHub Copilot而导致的整体代码质量下降。
这两项关于生成式AI研究背后的核心问题在于:
1. 聊天机器人的回应基于被接受的概率,而非其准确度或与整体代码库上下文的契合程度。
2. 聊天机器人不考虑长期代码可维护性视角,导致更多无用代码和技术债务的产生。
3. 生成式AI在协助创建代码方面的高速度让DevSecOps团队几乎无法跟上节奏。
“生成式AI是否能安全地用于生产环境?”Snyk的产品总监Hannah Foxwell在近期举行的State of Open Con会议上提出了这个问题。
她指出,无论组织规模大小或行业领域,“这些工具强大到令人难以置信,它们极大地提升了效率,以至于AI生成的代码终将运行在生产环境中,不论你正式批准与否,因为你的开发者总会找到使用它们的方法。”
Foxwell与其同事、高级安全倡导者Sonya Moisset以及GitLab的解决方案架构师Dominique Top和Stefania Chaplin共同参与了小组讨论,探讨生成式AI如何影响DevSecOps的目标,即在整个软件开发生命周期(SDLC)中集成安全性。
简而言之,生成式AI正在改变一切。即使组织能够阻止开发人员将敏感信息输入到大型语言模型(LLMs)中,生成式AI采用的高速度仍然让所有组织的安全面临风险。这使得DevSecOps专业人员的角色——作为团队间沟通与协作的促进者——变得更加关键。让我们尝试讨论一下在GenAI时代,DevSecOps从业者所面临的挑战以及他们如何谨慎地采取最佳行动。
1、速度是否是问题所在?
Foxwell称软件工程中的生成式AI正在呈现出“速度的阶梯式变化”。Top表示整个行业都将面临翻天覆地的变化。
然而,在我们仍在探索和明确生成式AI的使用案例及其带来的好处时,无可否认的是它使DevSecOps专业人士的工作变得更加艰难。
面对这样的挑战,DevSecOps从业人员必须:
1. 建立适应性策略:确保安全流程能迅速适应并融入基于AI驱动的开发环境,同时保持对生成代码的质量控制和安全性审核。
2. 强化培训与意识:教育开发者关于正确使用生成式AI工具的重要性,包括避免泄露敏感信息、理解输出结果可能存在的潜在错误,并提倡审慎审查AI生成的代码。
3. 集成自动化验证:在CI/CD流程中增加针对AI生成代码的自动化测试、静态分析和动态扫描,以减少误报和漏报的可能性。
4. 制定相关规范与政策:更新组织的安全标准和指导方针,明确规定AI辅助编程的实践要求,以及何时何地可以安全地应用这些技术。
5. 跨团队协作与沟通:加强DevOps、安全团队及AI团队之间的沟通协作,共同解决因快速生成代码带来的新安全隐患,并设计出更稳健的安全防护机制。
6. 持续监控与改进:随着生成式AI技术的发展,不断评估其对软件质量和安全的影响,并据此调整DevSecOps的最佳实践。
综上所述,尽管生成式AI带来了前所未有的开发速度提升,但DevSecOps专家需要积极应对由此产生的安全威胁,并在保证速度的同时,构建一套既高效又安全的开发运维体系。
超过一半的网络安全专业人员已经处于精疲力竭的状态,同时还有340万个网络安全职位空缺导致人手不足。Foxwell表示:“这些团队本就难以跟上发展的步伐——环境的复杂性、技术的蔓延。我认为这加剧了我所接触的安全团队面临的开发速度挑战。”
这就引出了一个问题:我们这个行业是否只是单纯为了追求速度而一味前进?
Top说:“每个人都非常关注如何让开发者高效工作。”“但在很多组织中,安全团队会提出疑问:等一下,我们在做什么?为什么要这么做?我们可以先看看为什么要做这件事,比如将AI引入其中吗?”
她回顾道,自从ChatGPT发布以来的一年里,大多数公司在安全问题仍不明朗的情况下急于采取“早期采用者思维模式”。她说:“目前,我们仍然依赖于安全团队确保进入生产环境的内容是安全的,但要跟上这种变革的速度确实很困难。”
然而,生成式AI已经成为一种必然趋势,开发者们不会轻易放弃这些提高生产力的成果。那么,DevSecOps专家应当如何应对呢?
2、对于关键应用程序来说,人工智能生成的代码是否值得信任?
随着AI生成的代码数量超过以往任何时候,DevSecOps自动化变得更加关键。然而,安全自动化依赖于对系统深入的理解,但在GenAI的情况下,我们往往不清楚其内部的工作原理。
Foxwell指出:“要逆向工程分析出模型为何以某种特定方式输出结果非常困难,甚至几乎是不可能的。它们极其复杂并且持续进化,这并非是我们习惯的‘如果这样,就那样’的确定性过程,而是混沌且可能不可预测的,你无法解释为何得到这样的结果。”
她提醒道:我们现在正处于这项技术的早期阶段,仍在探索如何以及在何种程度上能够控制它。
Moisset补充说,虽然不是绝对保证,但一个良好的决策参考点是考虑这些大型语言模型的创造者是否公开了人工智能伦理原则。
Top表示强烈赞同:“我坚决认为不应盲目信任自动生成的内容,因为你不知道它的来源,也不知道它的基础是什么,这就是为什么组织需要建立围绕二次检查一切的流程和习惯。”
他建议不只是对代码运行安全扫描,还应该尝试理解GenAI工具本身的工作机制。“比如,当我探究代码是如何生成时,是不是基于大量开源仓库的训练集?其中很多都没有实施安全措施。” Moisset指出,“因此,你应该对安全工具进行扫描,确保生成的代码具备与我们管道内相同水平的安全性。”这意味着不仅要审查最终生成的代码安全性,还要确保用于生成代码的数据源和工具同样经过严格的安全验证。
3、DevSecOps 必须做得更好
在DevSecOps实践中,仅仅依赖自动化和安全边界是不够的。Moisset强调,在公司层面制定安全政策也至关重要,以确保DevSecOps团队了解同事们正在使用的各种生成式AI工具,并教育他们如何正确使用这些工具,例如制定并传达生成式AI使用政策。
全面禁止GenAI并不现实。当意大利暂时禁止ChatGPT时,Foxwell指出该国GitHub组织的整体生产力明显下降,然而一旦禁令解除,“绕过所有政府政策和防火墙来使用这些工具的现象也随之增加”。工程师们总会找到解决问题的方法。
特别是在利用生成式AI开发客户服务聊天机器人时,Moisset认为必须对输入和输出双方都设置安全边界,因为恶意行为者可能通过注入特定提示“社交化”聊天机器人,使其给出预期的结果——就像有人曾成功通过聊天机器人以1美元的价格购买了一辆雪佛兰汽车那样。
她指出:“回归到教育用户和开发者这一核心问题上,使用AI是好事,我们应该利用AI,但必须围绕它建立安全规范。”这同时也要求理解客户与GenAI互动的方式。
贯穿整个讨论小组的一个主题是:安全人员不仅仅是执行任务,更重要的是进行传授。这包括持续提醒员工不得将敏感信息(如私人信息、专有代码或API密钥)输入到生成式AI中。
当然,错误在所难免,但DevSecOps团队的工作就是揭示这些错误,以此促进集体学习。当出现问题时,应维护一种无责文化,即没有人应该被归咎于事故本身。
正如Foxwell所说,应当重新构建提问方式:“是什么样的系统导致了这个问题的发生,以及下一次我们可以如何做得更好?”这样的思维方式有助于从错误中汲取教训并改进流程。
4、DevSecOps 如何帮助自己?
“DevSecOps 是关于人员、流程和技术的,关于的顺序有先后,”Top 说。在面对AI日益重要的角色时,又可以通过哪些方式帮助自身呢?
1. 人员培训与技能提升:强调团队成员对AI和ML基础知识的理解,无需达到博士水平的专业深度,但应具备基本的认知,以便于团队间的协作与沟通。Moisset指出,良好的沟通是DevSecOps的核心作用。
2. 明确工具采用目的:无论组织选择何种工具,都应当清晰传达为何要采用此工具或为何不采用,并特别关注如何确保开发者使用AI的安全性。然而,在推动安全实践的过程中,必须注意避免增加过多摩擦而导致开发效率降低。
3. 智能自动化:Foxwell建议通过自动化来简化安全流程的采纳,让开发者能够更容易地遵循良好安全实践,同时要注意避免因过度自动化导致大量无关紧要的问题报告,从而影响开发速度。应当有针对性地实施门禁和安全边界,基于组织上下文筛选并处理真正重要的风险。
4. 精准数据解读与优化:DevSecOps的任务之一是对自动化收集到的海量数据进行解读,准确识别具体风险及其解决办法,而不是机械地生成大量问题通知单。同时,应对现有的安全瓶颈进行梳理和改进,以保持与AI加速软件开发相适应的高效响应能力。
5. 全面审视软件开发生命周期:Top补充说,DevSecOps团队需要深入考察软件开发全生命周期的所有环节,包括进行价值流评估和Wardley映射等方法,以更好地理解组织内各社会技术组成部分之间的关系。尤其是要了解每个开发者向持续集成管道中添加的内容,以及是否仍存在“扔过篱笆”的部署方式,即当出现问题时是否会简单粗暴地回滚版本。
6. 跨组织同理心培养:在AI时代,对组织内部其他部门及流程的深刻理解和同情心是DevSecOps专业人员的关键素质。他们需要跨越职能界限,协同不同团队共同提升整体的安全性和效率。
DevSecOps在支持GenAI的采用中可以发挥关键作用,确保其安全、有效地融入开发流程并促进职业成长。
5、DevSecOps 如何支持 GenAI 的采用?
DevSecOps团队应当教育初级开发者正确使用GenAI工具,强调不能完全依赖于AI来替代实践经验和同行交流。应鼓励资深工程师继续履行导师角色,并借助GenAI提供更具针对性的指导和对话,以帮助年轻人才积累实际经验,实现职业生涯的进步。
为了防止过度依赖AI而导致的质量疏漏,DevSecOps需建立自动化检查机制,将代码审查整合到CI/CD管道中,确保从Stack Overflow或其他来源引入的代码片段符合组织的安全政策和标准。
6、GenAI如何协助DevSecOps?
GenAI可以通过对话式的交互方式帮助开发者深入理解代码,例如提供问题摘要、文档生成和跨职能及客户对话的总结。此外,它还可以用于解释潜在的安全漏洞,指出代码中的错误部分以及发布版本可能带来的潜在风险,从而增强软件安全性。
DevSecOps需要确保所使用的GenAI模型经过公正、无偏见的训练,并未被恶意目的所影响。这包括监控和评估模型输出,同时参与制定框架和策略,以保护组织免受因模型潜在风险所带来的安全威胁。
DevSecOps团队不仅关注软件开发生命周期,还需在整个组织层面上推动对GenAI技术的理解和应用,培训非技术背景或技术成熟度较低的员工如何安全合理地利用这些新工具。
如Darktrace和Crosstrek等已包含AI的应用正被DevSecOps团队使用,团队有责任培训“安全伙伴”们如何有效运用这些工具,以提升整体安全水平。
随着GenAI的发展,预计模型会变得越来越智能,能够自我纠错和改进。尽管如此,人类介入的重要性始终存在。正如Top所述,在不断演进的过程中,尽管生成式AI会极大改变DevSecOps的工作模式,但并不会取代人类的角色,而是在人机协作的基础上提高工作效率和质量。
参考链接:https://thenewstack.io/will-generative-ai-kill-devsecops/