将 Snyk 集成到 Atlassian Open DevOps
.png?cdnVersion=1044)
Warren Marusiak
高级技术传播者
为了演示如何使用 Jira Software 和各种互联工具开发、部署和管理应用,我们的团队创建了 ImageLabeller,这是一款基于 AWS 构建的简单演示应用,它使用机器学习将标签应用于图像。
本页面介绍如何将 Snyk 与 Bitbucket 集成。在您开始之前,我们建议阅读“ImageLabeller 简介”页面以了解背景信息。
随着软件应用规模和复杂性的提高,安全漏洞和漏洞利用的攻击区域也在随之扩大。
现代开发实践包括大量代码重用。首先,以特定于语言的标准库的形式,例如 C++ STL、Golang 标准库和微软 .NET。其次,以 GitHub 等地方找到的开源库的形式。这些代码大部分是使用其他库构建的,在现代软件中引入了依赖关系网络。
如此庞大的代码量导致存在安全漏洞的可能性很高。根据 CVE 列表手动检查所有依赖关系不可能掌握漏洞。在 CI/CD 进程中添加自动漏洞扫描可以帮助识别和缓解安全风险。
Atlassian 的代码协作解决方案 Bitbucket 已投资与开发人员安全解决方案的领先提供商 Snyk 进行深度嵌入式原生集成。这意味着无需安装或配置应用。您可以直接在 Bitbucket 中查看安全问题的详细信息。您将其启用后,Snyk 会自动检查您的代码及其依赖关系,并提醒您存在的漏洞,以便您可以在部署之前修复漏洞。
Snyk 跟踪的漏洞比任何其他商业数据库多四倍,当发现新的漏洞时,它们的数据库更新比其他数据库快多达 46 天。
连接 Bitbucket 和 Snyk
在 Bitbucket 中使用 Snyk 有几种方法。第一种是通过存储库屏幕上的“安全”选项卡启用与 Bitbucket 的原生 Snyk 集成。第二种是向 bitbucket-pipelines.yml 文件中添加一个 Snyk 步骤。两种方法兼用没有不利之处。Bitbucket 中的 Synk 集成让任何在 Bitbucket 中查看存储库的人都能快速访问漏洞数据。然后,您可以点击进入 Snyk 网站,以获取关于发现的每个漏洞的更多信息。bitbucket-pipelines.yml 文件中的 Snyk 步骤实现自动扫描管道中的每一次提交。
将 Snyk 集成添加到 Bitbucket
如需将 Snyk 添加到 Bitbucket 存储库,请单击“安全”选项卡,找到 Snyk 集成,然后单击“立即试用”。

授予访问权限,并单击“将 Bitbucket 与 Snyk 连接”。

设置集成后,关闭选项卡。

单击左侧导航栏中出现的新“Snyk”选项。然后单击 go.mod 文件深入查看更多详细信息。在本例中,Golang 存储库使用 go 模块来管理依赖关系。对于其他类型的存储库,会有不同的依赖关系文件。

如需了解关于如何修复每个漏洞的更多信息,请单击“访问 Snyk”转到 Snyk 网站。

Snyk 应用上的此视图类似于 Bitbucket 中呈现的详细信息屏幕。此屏幕显示漏洞列表,以及关于每个漏洞的其他信息。

以下是 Snyk 中的漏洞报告示例。“详细路径”部分中显示了漏洞来自的层次结构。在下面的示例中,您可以看到 SubmiTimage 从 AWS Golang SDK 继承了这个漏洞。Snyk 在左侧汇总了所有问题的状态。在这种情况下,所有问题都无法修复。请注意“可修复”下有五个无修复可用问题。这意味着目前没有针对这些问题的缓解措施。开发人员可以监控集成,并在修复可用时立即应用修复。

向 bitbucket-pipelines.yml 中添加一个 Snyk 步骤
除了通过 Bitbucket 用户界面访问 Snyk 外,还可以向 bitbucket-pipelines.yml 文件中添加步骤,通过 Bitbucket pipelines 访问 Snyk 功能。这样漏洞扫描将在每次提交时自动进行,并提醒您注意任何安全漏洞。
以下是两个 bitbucket-pipelines.yml 代码段,用于将 Snyk 测试作为管道的一部分运行。
将 Snyk 添加到 Golang 的 Bitbucket pipelines 中
本例说明如何使用 Go 模态为 Golang 项目运行 snyk 测试,以进行依赖管理。
definitions:
steps:
-step: &runsnyktest
name: run snyk test
image: snyk/snyk:golang
script:
- snyk auth $SNYK_TOKEN
- cd submitImage
- go mod graph
- snyk test
pipelines:
default:
- step: *runsnyktest
将 Snyk 添加到 Python 的 Bitbucket pipelines 中
本例说明如何使用 Pip 为 Python 项目运行 snyk 测试,以进行依赖管理。
definitions:
steps:
-step: &runsnyktest
name: run snyk test
image: snyk/snyk:python
script:
- snyk auth $SNYK_TOKEN
- cd src
- snyk test --skip-unresolved
- cd ../tst
- snyk test --skip-unresolved
pipelines:
default:
- step: *runsnyktest
以下是在 Bitbucket pipeline 中运行 runsnyktest 步骤时的显示。

分享这篇文章
下一个主题
推荐阅读
将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。

DevOps 社区

DevOps 学习路径
