使用Artifactory 5。x ?
JFrog Artifactoryx用户指南
有问题吗?想要报告问题?联系JFrog技术支持
概述
其中一些设置对于本地、远程和虚拟存储库是常见的。这些都是在基本设置对应的选项卡新增/编辑屏幕下一般部分。根据为存储库指定的包类型,可以在特定于类型的部分中找到其他设置。
常用基本设置
包类型 |
的包类型必须在创建存储库时指定,并且一旦设置,就不能更改。 |
库的关键 |
存储库密钥是存储库和的强制标识符米在Artifactory实例中必须是唯一的。不能以数字开头,也不能包含空格或特殊字符。对于本地存储库,我们建议使用“-local”后缀(例如。“libs-release-local”)。 |
仓库布局 |
设置存储库用于存储和标识模块的布局。Artifactory将建议与定义的包类型相对应的布局,并对上传的包进行索引,并相应地计算元数据。 |
公共描述 |
描述存储库的内容和用途的自由文本字段。 |
内部描述 |
一个自由文本字段,用于添加关于存储库的其他注释。这些仅对Artifactory管理员可见。 |
包含和排除模式 |
的包括模式和排除模式字段提供了一种在试图解析不同工件的位置时过滤掉特定存储库的方法。 在每个字段中,您可以指定一个类似ant的模式列表,以过滤入和过滤出工件查询。过滤的工作原理是从包含的模式(默认是全部)中减去被排除的模式(默认是无)。 例子: 考虑一个存储库的包含模式和排除模式如下: 包括模式:org/apache/**,com/acme/**排除模式:com/acme/exp-project/** 在这种情况下,Artifactory将在存储库中搜索 |
使用Exclude模式避免安全风险
您部署到Artifactory的任何专有构件都存储在本地存储库中,以便它们可用于安全且经过授权的内部使用。
任何通过名称搜索您的内部构件的人都将通过Artifactory从本地存储库中提取它。
但是,考虑一下如果无意中定向了对内部构件的请求会发生什么外组织的。
这可能发生的两个例子是:
- 请求的工件名称中有一个简单的错别字
- 开发人员请求的快照版本号不存在。
在这种情况下,由于Artifactory没有在本地存储库中找到所请求的工件,因此它继续搜索系统中定义的远程存储库。事实上,人工工厂会进行搜索所有在返回"Not found"之前,检查系统中定义的远程存储库。
这带来了安全风险,因为在远程存储库上发出的任何请求都可能被记录下来公开查询的所有细节,包括可能包含敏感业务信息的完整工件名称。
为远程存储库使用排除模式以避免安全风险的最佳实践
为避免暴露上述敏感业务信息,我们强烈建议采用以下最佳实践:
- 组织中使用的远程存储库列表应该在一个虚拟存储库下进行管理,所有请求都指向该虚拟存储库
- 文件中指定所有内部构件排除模式虚拟存储库的字段(或of)每一个远程存储库)使用通配符来封装尽可能广泛的内部构件规范。
使用包含模式避免性能问题
在一个典型的场景中,Artifactory将引用大型的通用存储库,例如JCenter或者Maven Central来解析工件。
此外,Artifactory可以引用任意数量的附加存储库,这些存储库可能承载更专门化和特定的工件集。
如果Artifactory接收到一组确定的工件的请求(例如,工件的特定版本),那么它将根据其解析顺序搜索不同的存储库,直到找到工件。
然而,如果Artifactory接收到一组不确定的工件的请求(例如,所有版本的maven-metadata.xml
)那么它必须搜索所有它引用的存储库,直到它能够提供完整的响应。
在大多数情况下,组织下载的大部分工件将来自一个大型的通用存储库,但是在不确定的请求中性能会降低,因为Artifactory会继续搜索所有专门的存储库才能返回响应。
对远程存储库使用包含模式以避免不必要和浪费的搜索的最佳实践
为避免在响应不确定性请求时执行不必要和浪费的搜索,我们强烈建议将所有专用存储库配置为适当的包括模式只指定组织可能需要的工件集。
在这种情况下,对通常在通用存储库中发现的工件的不确定请求将跳过专用存储库,从而提高性能。
本地和远程存储库
除了上述设置之外,本地和远程存储库还在特定于类型的部分中为相关包类型共享以下设置。
最大唯一快照 |
指定应该存储的同一工件的唯一快照的最大数量。一旦达到这个数字并上传新的快照,旧的存储快照将被自动删除。 空白(默认)表示不限制唯一快照的个数。 |
处理版本 |
如果设置了,Artifactory允许您将发布工件部署到这个存储库中。 |
处理快照 |
如果设置了,Artifactory允许您将快照构件部署到这个存储库中。 |