网络安全的重要性
在当今的网络安全期望中,软件工程师应该优先考虑他们的计算机系统和内部IT网络的安全性。我认为严重依赖技术是一个错误,因为很多风险本质上都是非技术性的。互联网可能使企业容易受到数据泄露和勒索软件的攻击,从而导致持久的声誉损害。这些非技术风险确实可以使用技术解决方案来处理。
这些事件还可能导致重大的经济损失和潜在的法律问题。在我看来,实施强大的网络安全措施不仅是一项技术要求,而且是任何希望加强其防御和弹性的企业的关键举措。
在这篇文章中,我想说明的是,软件工程师不应该再把安全看作是安全工程师的责任,而应该接受它是他们的责任。您不需要成为工程经理或主管来提出和实施最佳实践。软件工程师应该使用说服、数据和展示投资回报的力量,轻轻地推动他们的组织朝这个方向发展。
重大网络安全事故
(1)Equifax数据泄露
这可能是人们记忆最深刻的漏洞,也可能是有史以来最大的安全漏洞之一。在这次事件中,1.445亿人的社会保险号和信用卡信息被盗。该漏洞的发生是因为web应用程序框架的一个弱点没有及时修复。这表明及时更新软件是多么重要。
(2)WannaCry勒索软件攻击
这次攻击造成了持久的破坏,成千上万的计算机网络瘫痪。英国国家医疗服务体系(NationalHealthService)不得不用纸和笔来管理其设施。这次勒索软件攻击对全球150个国家的20多万台计算机造成了影响。它是由未修补的Windows漏洞引起的。
(3)SolarWinds网络攻击
对太阳风猎户座平台的网络攻击是一种相对罕见的供应链攻击。黑客在软件更新中插入病毒。这一漏洞影响了许多美国政府机构和私营部门公司,凸显了与第三方软件相关的漏洞。
8个网络安全最佳实践
1.是否有数据分类策略并强制执行
没有人比编写软件来处理和管理数据的人更了解数据了。软件工程师有责任按照预期使用数据。软件工程师应该推动健壮的数据分类策略和执行机制。在一天结束的时候,如果有误用,软件工程师将被追究责任,即使是部分责任。
数据分类是根据(a)数据的敏感程度和(b)如果被错误的人看到会造成多大的伤害,将数据分成不同的组。这样的分类,虽然简单,但有效,因为有一个计划的数据分类:我们可以确保重要的信息保持安全,只有应该看到它的人。定期检查我们是否遵守规则并在需要时对组进行更改也很重要。
2.有数据、设备和政策的清单吗
软件工程师应该有足够的工具、信息和指导方针来实现安全性。他们应该成为这样一种文化的支持者,这最终会让他们的生活轻松得多。
在任何有效的网络安全管理系统中,维护所有数据、设备和政策的最新库存都是至关重要的。这样的列表可以帮助您了解哪些数据存储在何处以及如何保护它们。它还确保硬件文档、软件安装和漏洞识别配置。
3.定期进行风险评估并提出改进建议
软件工程师工具箱中最大的工具之一是威胁模型。它包括所有涉及到的软件组件的设计图,它们之间的交互,以及客户请求的进出口点。彼此之间提出尖锐的问题有助于我们评估风险,避免陷入毫无根据的假设的陷阱。
定期的风险评估使您能够识别开发环境中的威胁或漏洞。这些评估必须包括内部和外部因素,包括员工和第三方供应商,以及新的网络攻击趋势。基于这些发现,您必须提出改进建议,以加强组织的安全态势。
4.对所有登录尝试实施双因素身份验证(2FA)
双因素身份验证提供了额外的安全性,因为用户必须提供两种类型的标识才能访问帐户或系统。因此,即使登录凭据暴露,这也会减少未经授权的个人进入的机会。在所有平台和应用程序上实现2FA是保护敏感数据的基础。
虽然这听起来像是IT需求,但应该使用2FA来访问所有关键的软件工程平台和门户。您是否想要登录到一个跳转主机,以便访问云环境?请确保您的工作流程启用了2FA。如果不是,你能说服管理相关基础设施的人吗?
5.是否有全公司范围的密码管理系统
密码管理系统提供了一种安全的存储和管理密码的方式,从而为各种帐户开发出可靠且唯一的密码。它降低了密码泄露的风险,简化了个人登录凭据管理。
可能存在许多没有单点登录的外部系统,我们需要创建另一组凭据,其中一些可以与团队共享。密码管理器是在工程师和其他员工之间共享这些密码或秘密的最佳方法-不再通过电子邮件或聊天消息发送秘密。
6.安全意识培训和钓鱼测试
对员工进行有关网络安全威胁和最佳实践的培训,对于创建具有安全意识的文化至关重要。安全意识培训应定期涵盖识别网络钓鱼电子邮件、安全使用互联网和正确的数据处理程序等领域。偶尔可以进行网络钓鱼测试,以确定员工是否能够注意到或报告可疑事件。
作为软件工程师,如果您使用内部工具(通常提供更广泛的权限),这一点就更为重要。与您的安全团队或IT部门讨论安全意识培训。
7.加密所有内部和外部通信
加密确保在组织内外发送的敏感信息保持机密性和安全性。应该在所有通信渠道上部署健壮的加密协议,包括电子邮件系统、消息传递应用程序和文件传输。因此,即使信息在传输过程中被截获,也可以防止对信息的未经授权的访问。
AES-256对于静态数据是一个很好的加密算法。对于传输中的数据,最好使用用于通信的任何TLS库的默认值。它们通常默认为AES-256,但选择默认可以确保我们不会尝试任何不太为人所知、研究较少的加密算法。即使是点对点的机器通信也应该理想地使用加密。在专用网络的端点之间使用明文通信是可能的,但它需要大量的经验来锁定它。
8.是否有事件响应计划
制定的事件响应计划有助于指导实体在网络威胁(如数据泄露或勒索软件渗透)期间采取行动。它包括预防措施、响应协议、恢复策略和通信程序。该计划的定期排练和持续改进确保组织为潜在的安全突发事件做好准备。
大多数情况下,软件工程师将参与到事件中,他们将承担大部分缓解责任。作为一名软件工程师,有这样一个计划可以确保你知道自己的角色和责任。
总结
总之,虽然这些实践乍一看很简单,但软件工程师必须记住它们的重要性。有时候,好的解决方案是最简单的。有了复杂的政策,就会产生混乱,这正是恶意行为者所希望看到的。当这些实践融入到组织的文化中时,效果会更好。