安装JFrog x射线的最佳实践

请注意:这篇博文指的是JFrog x光v1.x.有关x射线当前发布的信息,请参阅本知识库文章.
JFrog在2016年7月首次发布了x射线,反响非常显著。客户对能够连接他们的Artifactory存储库感到非常兴奋,并让x射线自动对他们的工件进行深度递归扫描,以清除问题和漏洞。现在,经过几个月,从安装它的许多客户的不同经验和反馈,我们想分享一些最佳实践,将帮助您开始使用x射线。这篇文章假设你对x射线有一些熟悉,所以如果你是扫描你的Artifactory存储库中的工件的新手,你可能想从我们的第一篇博文为了熟悉x射线。
微服务:伟大的东西来自小包装
x射线是一个由9个微服务组成的系统。有安装器微服务,当调用它时,会旋转5个x射线内部微服务和3个第三方微服务(RabbitMQ, MongoDB和Postgres)。
中央微服务是x射线服务器。它监听来自Artifactory和端口8000上的外部服务的所有传入请求,并从云中提取漏洞和组件数据jxray.jfrog.io而且dl.bintray.com.

需要连接到这些url在线数据同步.x射线也可以配置通过代理服务器与这些url通信。但是,如果您的公司的安全策略要求生产系统与外部网络完全隔离,则应该使用离线同步.
下面有三种方法可以让安装过程更顺利:
提高CPU密集型进程的计算能力
x射线对工件进行深度递归扫描,将它们及其所有依赖项索引在一起。这确保了所有二进制文件都被提取出来进行分析,即使它们深深嵌入到一个复杂的组件结构中。在这个过程中,创建一个包含所有索引二进制文件之间相关性的组件图。此操作是计算密集型的,并且根据工件的大小和复杂性,计算需求会有所不同。例如,一个Docker映像可能有几个"jar”和“js文件在一个战争文件,所有这些文件都驻留在tar.gz”文件。JFrog x射线能够识别每个二进制文件,而不考虑二进制文件所嵌入的技术和层数。

因此,为了满足Xray深度递归扫描的计算需求,我们推荐运行Xray的机器的硬件配置如下:
| 最低 | 推荐 | |
| CPU | 8芯 | 16芯 |
| 内存 | 16 GB | 32 GB |
| 磁盘 | 100 GB | - - - - - - |
请注意:的较高的最小磁盘空间需求是因为x射线递归地从父组件中提取每个工件,以确保它识别到最深处的所有二进制文件。
增加文件-最大限制以适应深度递归扫描所需的文件描述符
在x射线的深度递归扫描期间,x射线和第三方微服务创建了许多打开的文件,它们很快就达到了打开文件描述符的限制。为了避免这个过程中的延迟,你应该增加Xray, RabbitMQ, PostgreSQL和MongoDB微服务的打开文件描述符的限制/etc/security/limits.conf文件如下:
...Xray hard nofile 100000 Xray soft nofile 100000 rabbitmq hard nofile 100000 rabbitmq soft nofile 100000 postgres hard nofile 100000 postgres soft nofile 100000 mongodb hard nofile 100000 mongodb soft nofile 100000…
如果您的系统能够处理它,那么我们建议将打开文件描述符限制设置为100,000,如上例所示。要确定系统打开文件描述符的最大数量,您可以使用:
猫/proc/sys/fs/file-max
确保x射线基础URL设置正确
为了让x射线索引和扫描工件,它必须成功地与Artifactory进行双向通信,这需要正确设置x射线基URL。例如,https://my-group.xray.io:8000/
安装x光是一个微风。无论您使用的是Docker安装还是Linux安装,这都是两个或三个简单命令的问题。我们在这篇文章中描述的三个最佳实践将确保您的安装不仅简单,而且流畅和高性能。
下面是两个突出显示JFrog x射线最佳实践的有用截屏:如何设置打开文件描述符限制,以及如何使用x射线健康诊断。
