在云迁移的过去十年中,针对Java应用程序的威胁模型以及我们需要保护它们的方式发生了变化。OpenJDK已经在这方面做出了一个积极的改变,它弃用了旧的SecurityManager,这是一个保护过去AOL CD和纸质地图时代的遗迹。安全方面的下一个积极变化是加强软件组件的供应链,了解正在运行的软件和易受攻击的软件,并与数据面临风险的非技术专家沟通这些信息。如果你也对java感兴趣,不妨报个java培训班,有专业讲师面授指导教学,还有更加系统全面的课程,让学习更科学,更有效。
这种威胁模型的一部分是由去年的Log4j等易受攻击的库驱动的。尽管Log4j是一个很棒的日志库,并且在补丁方面非常活跃,但许多团队都在努力确定需要在哪里应用这些补丁。对于了解自己的代码并能够部署的Java开发人员或团队来说,补丁很简单——你更新了一个库,就这样了。但现实情况是,软件的发展速度很快,往往会将这些技术专家的控制权交给那些不具备在这个级别管理问题的专业知识的利益相关者。在一场争夺战中,不了解Java细节的团队四处寻找,包括.NET软件和Python论坛。魁北克政府关闭了服务,直到他们知道Log4j在哪里。这种干扰是无效的,不能保护我们的数据。
Java应用程序威胁模型的一个主要部分现在涉及跟踪组件并了解我们的应用程序包含已知易受攻击组件(如Log4j)的位置的能力。
常见的Java应用程序的供应链是什么?
看待供应链的一个简单方法是,大多数参与者是生产者和/或消费者。想学习有关java的更多技能,不妨报个java培训班,这是快速掌握java技能的有效方法,可以让你少走很多弯路。企业架构师可能已经熟悉这个类比,因为供应链像队列一样移动,因此可以使用类似的术语。这种供应链的例子包括:
l 像Maven Central这样的存储库是JAR文件的生产者。他们将这些组件提供给开发人员或构建系统,他们是这些JAR文件的使用者。
l 开发人员使用JAR文件并生成将应用程序组合在一起的新代码。一些开发人员生产的库被送回Maven Central,后者是用户。
l 构建环境使用开发人员的自定义代码和repo库来生成应用程序、容器或其他捆绑包。
l 当应用程序部署到环境或发送给客户时,通常会结束供应链。
l 对于购买的COTS软件,供应商是生产商,运营商通常是消费者。在内部,供应商有自己的软件供应链。
最终目标是将应用程序转移到生产环境并运行它们——这个生产环境只是一个消费者,因为它不会产生新的工件(在DevOps周期中,生产的输出是反馈)。在java培训中,有系统全面的理论知识和企业级实战项目,可以让你真正掌握java知识和技能,更好地进行项目开发。
评估“软件供应链”背后的主要驱动力是快速检索三个问题的答案:
1.我有什么软件,包括组成更大系统的组件?
2.当一个软件或库被识别为易受攻击时,它会影响我吗?如果会,在哪里?
JVM如何管理我的Java应用程序的供应链?
目前有许多方法用于清点应用程序。定制软件通常使用工具在CI/CD管道中创建SBOM;Maven通过其依赖项:树插件提供了这一点。另一种方法涉及容器扫描,以分析软件运行的包装环境。另一种方法是将代理集成到软件中。然而,每种方法都需要一个团队在供应链的某一步骤中采取行动,而不捕捉通常部署在这些步骤之外的生产漂移或下载项目。JVM拥有的一个独特优势是,它必须无处不在才能运行软件,而且JVM已经拥有了必要的信息,因为它负责加载代码。
Azul提供了两个JVM,作为其他Java实现的替代品。除了更快地运行应用程序并降低运营成本外,10月份的PSU版本还实施了漏洞检测的第一个版本,以帮助处理供应链威胁。想学习java的同学不妨报个Java培训班,可以节省学习时间,提高学习效率,在短时间内学有所成,还能找到一份不错的工作。
在供应链威胁模型中,JVM还提供了验证信任的另一个优势。由于供应商和承包商制作自己的SBOM来识别组件,因此信息可能会不正确。承包商可能会在组件中隐藏一个易受攻击的库,假设它们可以避免命名空间冲突。通过使用JVM生成和/或验证SBOM,组件检测可以是字节码感知的。JVM可以理解“代码形状”或签名,并根据组件所做的而不是它们所宣称的内容来匹配组件,而不是简单地查看文件来确定每个文件所声称的内容。Azul在Java社区工作了十多年的性能分析工作,他创建了一个用于性能代码识别的云数据库,并能够将相同的方法应用于安全问题。
通过加速Java增强安全控制
当JVM执行跟踪组件的工作时,一个关键好处是能够检测JVM上运行的所有工作负载,而不仅仅是安全控制所涉及的工作负载。目前正在使用其他方法来库存组件的团队应该继续这样做——目标是纵深防御,每个控件一起工作以捕捉其他控件可能错过的东西。通过以生产速度工作,Azul漏洞检测等较新技术正在“向右移动”,以提供对可能丢失的项目的生产速度验证,或节省集成和扫描各处Java软件的工作。Java培训中有很多实操项目巩固你所学的知识,让你拥有一定的项目经验,在以后找工作时,比别人更有竞争力。