JFrog人工地形提供程序获得x射线功能

几个月前,有人问我是否想开发一个开源软件起程拓殖提供者。埃莉诺·赛塔,校长系统架构有限公司我有一个客户,他正在跨他们的Github存储库设置JFrog Xray,但不想手动配置每个存储库。作为一个喜欢从事自动化解决这些问题的项目的SRE(并且在日常工作中经常使用Terraform),这听起来是一个有趣的项目。

x光执行软件组成分析各种各样的软件构件,如库或构建的Docker容器。当Artifactory (JFrog的通用存储库管理工具)管理的存储库发生更改时,就会触发此命令。让我们用一个组织的例子microservices它有几十个甚至几百个代码库,每天创建多个Docker工件。x射线可以配置为分析那些Docker映像工件每当创建新对象时。如果你有很多微服务,每个微服务都有自己的依赖关系,那么像Xray的设置这样的自动化将会节省大量的时间。自动化还可以让团队保证相同的策略在任何地方都得到一致的应用。

我能够使用JFrog Xray REST API创建一个Terraform提供程序,允许用户使用Terraform创建监视(Xray的术语,用于监视构建或存储库中发生的更改)以及策略,这些策略定义了Xray应该应用的规则。这两种Terraform资源在一起发挥最2022世界杯阿根廷预选赛赛程佳作用,即创建策略并将其应用于给定的手表。

下面是一个在Terraform代码中看起来像的例子:

#需要在Terraform 0.13及以上(https://www.terraform.io/upgrade-guides/0-13.html) Terraform {required_providers {artifactory = {source = "registry.terraform. net "。io / jfrog artifactory 2.2.7“version =” " } } } # 例如使用——在实际使用不存储密码明文提供者“artifactory”{url = " YOUR_ARTIFACTORY_URL "用户名= "用户名密码=“密码”}资源“artifactory_xray_policy”许可遵从“{name = =“许可遵从”描述“确保没人使用许可的法律团队我们不该说,“类型=“许可证”规则{name = " license-rule "优先级={1标准banned_licenses = ["AGPLv3", "sleepycat"]} actions {fail_build = true邮件= ["compliance@example.com"] block_download {未扫描= trueactive = true}}}} #为所有存储库创建一个新的x射线监视,并分配策略资源"artifactory_xray_watch" "watch-all-repos-license-policy" {name = "watch-all-repositories" description = "确保我们所有的repos获得应用的许可合规策略" resources {type = "all-repos" name = "all repositories"} assigned_policies {name = artifactory_xray_2022世界杯阿根廷预选赛赛程policy.license-compliance.name type = "license"}}

在这个例子中,法律团队已经确定,如果在组织的任何软件中使用某些特定的软件许可证,可能会使假设的组织面临法律风险。这段代码将设置一个x射线监视器来扫描所有存储库,并连接一个将导致构建失败的策略,如果有人试图在其代码或依赖项中的任何地方使用这些不允许的许可之一,则向合规团队发送电子邮件。

虽然我最初是将代码作为独立的提供程序编写的,但JFrog的团队慷慨地自愿采用了它,这样他们就可以继续维护所有的Terraform提供程序代码,所以我与团队合作,将该功能添加到现有的Terraform提供程序中JFrog人工地形提供商。这个提供者现在允许用户用一个提供者管理他们的Artifactory和Xray资源。2022世界杯阿根廷预选赛赛程

这种组合允许团队通过Artifactory配置外部包存储库的代理(确保库被一致地提取并集中归档),同时还可以检查和阻止已知的易受攻击的包,所有这些都在同一段Terraform代码中。目前,这种集成只适用于本地Artifactory存储库,但团队正在努力在将来将此功能添加到远程存储库中。例如:

#需要在Terraform 0.13及以上(https://www.terraform.io/upgrade-guides/0-13.html) Terraform {required_providers {artifactory = {source = "registry.terraform. net "。io/jfrog/artifactory" version = "2.2.7"}}} #例如使用-在实际使用中不要将密码存储在明文提供程序"artifactory" {url = "YOUR_ARTIFACTORY_URL" username = "username" password = "password"} resource "artifactory_local_repository" "npm-local" {key = "npm-local" package_type = "npm" repo_layout_ref = "npm-default" xray_index = true # xray_index选项,虽然目前没有记录,让x光能够看指定的本地存储库资源“artifactory_xray_policy”“测试”}{name = " test-policy-name-severity描述=“测试”政策描述类型=“安全”规则{name =“规则名称”优先级= 1标准{min_severity =“高”}操作{block_download{未测量的= true活跃= true}}}}资源“artifactory_xray_watch”“测试”{name = =“watch-npm-local-repo”描述“severity-based政策适用于npm当地回购”资源2022世界杯阿根廷预选赛赛程{type = "repository" name = artifactory_local_repository.npm-local。关键参数bin_mgr_id = "example-com-artifactory-instance" filters {type = "package-type" value = "npm"}} assigned_policies {name = artifactory_xray_policy.test.name type = "security"} depends_on = [artifactory_local_repository. net]。Npm-local,]}

这种组合的功能应该允许团队从他们现有的基于Artifactory和xray的工作流中获得更多的价值,并将它们部署在以前不实用的规模上,我很高兴能够帮助宣布它的发布。