Maven依赖项限制为私有存储库



我们有一个公司/私有maven注册表("artifactory"),我们的项目使用它来解决项目的依赖关系。

这个私有maven注册表还代理maven Central来处理公共依赖项,这意味着内部注册表一开始没有解析的依赖项。

我们希望避免供应链攻击,即有人重载我们在私有/公司maven注册表中使用的自定义依赖项,并在maven Central中使用相同的标识符。例如,在Maven Central中发布一个恶意的依赖工件,其groupIdartifactId与内部的相同,但version更高-然后一个将优先考虑并在我们的系统中造成严重破坏。

在npm中,有一个允许"标记"的机制。对某个私有注册表的依赖(通过scope)。

Maven中是否有类似的机制,允许某些依赖只从内部工件解析,而防止从Maven Central解析?

我在想artifactory:

<dependency>
<groupId>org.acme</groupId>
<artifactId>supersecret</artifactId>
<version>3.141</version>
<artifactory>internal_corporate_artifactory_name</artifactory> <!-- as described in settings.xml or Super-Pom -->
</dependency>

你可以用不同的方法解决这个问题。

首先,在您的settings.xml中定义<mirror>,以便所有请求都转到您的Artifactory。

在Artifactory中,您为您想要访问的所有外部存储库定义了一个虚拟存储库(它将是您用作镜像的通用虚拟存储库的一部分)。

现在对于虚拟存储库,您可以定义"排除模式"。这允许您告诉Artifactory不要针对外部存储库解析groupIdcom.yourcompany

添加到J Fabian Meier的答案-

在镜像Maven Central的远程存储库上使用排除模式,例如,排除与您公司的组ID匹配的工件。

更多信息可在以下链接中找到:

  • JFrog知识库:如何使用包括/排除模式?
  • JFrog Blog:在远程存储库中使用排除模式的另一个案例:命名空间遮蔽(又名"依赖混淆")攻击
  • JFrog Blog:一年的供应链攻击:如何保护您的SDLC
  • JFrog Blog:使用Include和Exclude模式优化存储库安全性和性能

相关内容

  • 没有找到相关文章

最新更新