jjzjj

如何将安全护栏引入应用安全程序中

李睿 2023-03-29 原文

​译者 | 李睿

审校 | 孙淑娟

企业不应该期望开发人员成为安全专家,因为安全不是他们的本职工作,也不是他们的擅长的领域。与其相反,企业应该让应用安全团队为开发人员提供支持,让他们可以访问安全的框架、库和默认设置,使最安全的选项成为最简单的选择。安全护栏旨在帮助企业做到这一点。

可视化安全护栏将如何使企业的开发人员和安全团队受益,这将帮助员工入门。本文提供了一些可以实施的基本步骤,以将安全护栏引入其应用安全程序。

当提供通过将安全工具无缝集成到应用开发工作流中来编排安全工具的安全护栏时,开发人员有权创建安全代码。他们通过保持低干扰的政策和控制来保持生产力,并且只报告影响很大的相关安全问题。

采用安全护栏可以确保开发团队在不需要安全团队积极参与的情况下快速运行。同样,应用安全程序团队可以通过在开发人员的工作流程中自动化安全控制来进行扩展,确保执行而不是人工执行审查以及跟踪错误修复来扩展。

当控件被纳入开发过程时,开发团队不太可能忽视和绕过安全性。他们不必采取额外的步骤联系安全团队。安全护栏确保最快的部署路径也是最安全的路径。

1、如何将安全护栏带入应用安全程序

Netflix和Airbnb等公司承认有必要让开发人员团队能够构建安全的软件,同时为他们提供做出适当安全决策的灵活性。这些企业和许多其他企业已经在持续集成(CI)/持续交付(CD)中实施了安全护栏。以下一些步骤可以帮助企业开始为开发人员提供一致、可操作的自助式安全治理和控制。

(1)定义护栏:企业可以在开发人员工作流程中实施许多不同类型的安全护栏。对于技术企业内的安全团队来说,从良好的安全策略开始都是至关重要的。应用安全团队已经与开发人员进行交流的安全控制就是一个很好的起点。这些可以是定义软件工件的所有权、遵循特定的依赖许可策略、使用内部工件注册表、使用或不使用特定库、代码审查控制等。

(2)设置范围:并不是所有的代码库都是平等创建的,根据项目的业务风险和关键性,不同的安全护栏可能适用于不同的代码库。一旦知道要实施哪些安全护栏来构建适当的安全性,就可以确定在哪里应用这些安全护栏。

(3)定义触发器:根据为其应用防护机制的基础资产(即代码库、依赖项、拉取请求、容器、EC2实例等),可以在何处以及如何使用它可能会有所不同。例如,可以在创建代码存储库、合并拉取请求、部署容器或每天晚上作为日程安排时使用一些护栏。可以在任何这些事件中触发护栏,以便开发人员可以在适当的时间采取适当的行动。

(4)采取适当的行动:根据设计,护栏可以是预防性的或反应性的,对违规行为可能采取的行动取决于是否打算采取预防性或反应性措施。可以使用反应式护栏按预定义的时间表运行,识别各种护栏的违规行为,并通知相应的所有者。例如,每周找出未配置依赖项扫描和SAST工具的关键代码库,并将违规情况通知所有者。

预防性护栏实时识别违规行为,并通知开发人员。例如,如果未在该存储库上启用依赖扫描,则自动对拉取请求进行注释或使构建失败,或者如果容器不是来自批准的容器注册表,则阻止在Kubernetes中部署容器。

(5)报告:定期报告企业对护栏的遵守情况。护栏的报告消除了许多关于这个安全问题是否必要的非生产性辩论,并使安全风险二元化。决策变得与底层软件资产是否满足预期控制一样简单,而不需要进一步的安全策略或FUD(恐惧、不确定性和怀疑)。

2、为什么安全护栏是应用安全程序的未来

工程和安全团队已经解决了在DevOps期间实施安全的复杂问题。企业往往缺乏安全可见性,开发人员工作流中的安全检查不足,无法以DevOps的速度扩展应用安全程序。安全护栏简化了关联特定于场景的安全策略和控件,这些策略和控件可以在开发人员工作流中定义和应用。这种策略是应用安全程序的未来,因为企业必须授权开发人员在不受安全把关影响的情况下生成安全代码。

安全护栏是确保开发团队在现代软件开发生命周期(SDLC)中采用安全策略和控制的唯一方法。这种采用消除了开发人员与安全团队之间的摩擦,并确保开发人员能够快速且安全地开发应用程序。

通过应用自动化的安全护栏,企业可以降低安全风险,并使部署路径尽可能安全。安全护栏让开发人员能够完全自主地实现与时间相关的关键性能指标,同时让安全团队的瓶颈最小化,与此同时让安全团队腾出时间将他们的知识和技能应用于最紧迫的事项。

安全护栏代表了最终的安全转变,使开发人员能够安全地从代码到云平台。借助持续集成(CI)/持续交付(CD)中预先构建的、场景相关的实时安全策略和控制,企业可以影响开发人员的行为并在软件开发生命周期(SDLC)中构建安全性。

原文链接:https://dzone.com/articles/how-to-bring-the-power-of-security-guardrails-to-y

有关如何将安全护栏引入应用安全程序中的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  4. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  5. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  6. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  7. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  8. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  9. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  10. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

随机推荐