如何使用包含/排除模式?
主题:
如何使用包含/排除模式?
作品简介:
Artifactory可以通过使用排除/包含模式限制工件的解析或部署。这是一个有用的功能,可以帮助避免可能的安全风险。
什么是包含/排除模式?
顾名思义,包含/排除模式是一组类似蚂蚁的模式,其形式为x / y / * * / z /这是可以的在存储库级别上配置限制工件的部署、解析和搜索。
包括模式是处理工件请求时要包括的模式列表。只有匹配已配置的“包含模式”之一的工件才会被服务。(默认包含所有“**/*”)
排除模式是在根据配置的“排除模式”评估工件请求时要排除的模式列表。(默认不排除)
如何使用排除模式避免安全风险?
当使用聚合本地和远程存储库的虚拟存储库时,所部署的任何私有构件都存储在本地存储库中,并且仅供授权的内部使用。
但是,考虑一下如果通过虚拟存储库请求内部工件,并且该请求无意中指向组织之外,会发生什么情况。(通过虚拟聚合的配置远程存储库进行搜索)
出现这种情况有几个原因。例如:
在请求的工件名称中有一个简单的拼写错误
开发人员请求具有本地存储库中不存在的版本号的快照。
开发人员请求一个内部包,但没有指定版本
在这些情况下,由于Artifactory不会在本地存储库中找到工件,它将继续在已定义的远程存储库中搜索它,可能会暴露查询的详细信息,包括完整的工件名称,其中可能包含敏感的业务信息。
此外,如果攻击者获得了内部包名称,他可能会将具有相同名称的恶意包部署到公共存储库。
这可以通过对远程存储库使用Exclude模式来避免。
最佳实践是将所有远程存储库置于一个虚拟存储库之下,并为该虚拟存储库的内部包指定一个Exclude模式。在这种方式下,不会向远程存储库发出内部包的请求。
例子:
包含/排除模式在存储库的基本配置中设置。
下面是NPM和Maven这两个流行包的示例。考虑到这一点,其他包的过程也类似,主要依赖于包布局。
NPM:
”。npm/@my/** "阻止范围@my从远程解析。
”。npm/my-*/** "从远程解析中阻止带有my前缀的包。
”。npm/secret/** "从远程解析阻止包的秘密。
Maven:
阻止在com/acme/exp-project/下的工件的远程解析
