JFrog Artifactory Terraform Provider获得x射线功能

几个月前,有人问我是否想开发一个开源软件起程拓殖提供者.埃莉诺·萨伊塔,校长系统结构有限公司有一个客户正在通过他们的Github存储库设置JFrog Xray,但不想手动配置每个存储库。作为一名SRE,他喜欢从事那些能够自动消除这些痛点的项目(并且在日常工作中经常使用Terraform),这听起来像是一个有趣的项目。
x光执行软件组成分析各种软件构件,如库或构建的Docker容器。当由Artifactory (JFrog的通用存储库管理工具)管理的存储库发生更改时,它就会被触发。让我们举一个组织的例子microservices使用Docker,并且每天有数十甚至数百个代码库创建多个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. "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 = "Make sure all our repos get the license-compliance policy applied." resources {type = "all-repos" name = "all repositories"} 2022世界杯阿根廷预选赛赛程assigned_policies {name = artifactory_xray_policy.license-compliance.name type = "license"}}
在本例中,法律团队已经确定,如果某些特定的软件许可被用于该组织的任何软件中,它们可能会使该假想的组织处于法律风险中。这段代码将设置一个x射线监视来扫描所有存储库,并连接一个将导致构建失败的策略,如果有人试图在他们的代码或依赖项的任何地方使用这些不允许的许可之一,就会向合规团队发送电子邮件。
虽然我最初是作为单独的提供者编写代码的,但JFrog的团队很慷慨地自愿采用它,这样他们就可以继续维护所有的Terraform提供者代码,所以我与团队一起将这个功能添加到现有的代码中JFrog Artifactory terrraform提供商.这个提供程序现在允许用户使用一个提供程序管理他们的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. "io/jfrog/artifactory" version = "2.2.7"}}} #例如使用-在实际使用中,不要将密码存储在明文提供程序"artifactory" {url = "YOUR_ARTIFACTORY_URL" username = "username" password = "password"}资源"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。Key bin_mgr_id = "example- comp -artifactory-instance" filters {type = "package-type" value = "npm"}} assigned_policies {name = artifactory_xray_policy.test.name type = "security"} depends_on = [artifactory_local_repository. repository. "Npm-local,]}
这种组合功能应该允许团队从现有的基于Artifactory和xray的工作流中获得更多价值,并以以前不实际的规模部署它们,我很高兴能够帮助宣布它的发布。
