【问题标题】:Maven dependencies restrict to private repositoriesMaven 依赖项仅限于私有存储库
【发布时间】:2021-12-07 06:26:41
【问题描述】:

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

这个私有 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>

【问题讨论】:

    标签: maven security dependencies artifactory dependency-management


    【解决方案1】:

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

    首先,您在 settings.xml 中定义一个 &lt;mirror&gt;,以便所有请求都转到您的 Artifactory。

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

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

    【讨论】:

      【解决方案2】:

      添加到 J Fabian Meier 的 answer -

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

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

      【讨论】:

        猜你喜欢
        • 2019-02-20
        • 1970-01-01
        • 1970-01-01
        • 2012-04-03
        • 2012-01-10
        • 2011-03-26
        • 1970-01-01
        • 2016-03-18
        • 1970-01-01
        相关资源
        最近更新 更多