如何集成 Snyk 和 Bitbucket Cloud 以实现 DevSecOps

通过将 Snyk 与 Bitbucket Cloud 和 Jira 集成,实现 DevSecOps。

Snyk 与多种 Atlassian 产品集成,以增强 DevSecOps 团队的工作流和管道。本教程介绍如何利用 Atlassian BitbucketSnyk 实现左移安全性的模式。通过运用这些技术,您的团队便可按照 DevSecOps 的速度扫描基于应用和容器的工作负载。您将学习如何使用这些模式将安全性融入到管道中的各个阶段。

时间

15 分钟阅读。

观众

  • 开发人员

  • DevOps 和 DevSecOps 工程师

  • 应用安全和应用开发团队

先决条件

您有一个 Snyk 帐户,它可从此处获取。

您已拥有 Atlassian Bitbucket 帐户。在此处登录,或从此处开始

第 1 步:配置您的环境

安装 Snyk CLI

Snyk CLI 使用您的 Snyk 帐户对您的计算机进行身份验证。CLI 工具可帮助您查找和修复依赖关系中的已知漏洞,既可手动完成,也可纳入到 CI/CD 管道中。Snyk 提供安装 CLI 的相关完整说明,以多种格式支持常用的操作系统和环境。例如,CLI 可通过以下命令与 brew 搭配使用:

brew tap snyk/tap
brew install snyk

安装 CLI 后,可使用以下命令进行身份验证:

snyk auth

此命令将打开一个浏览器选项卡,以完成身份验证流程。当您准备好扫描存储库时,便可单击“身份验证”按钮。完成身份验证后,您可以返回终端继续工作。

其他实验室资源

本教程中包含的练习包括将要在指定模块页面中共享的命令或代码片段的组合,以及公共 Bitbucket 存储库中可用的模板和源代码。设置 Bitbucket Cloud 帐户后,您需要将这些资源复制到您的帐户中。为此,请完成以下步骤:

克隆存储库

单击此处将上游存储库克隆到您的 Bitbucket 帐户中。Atlassian 的文档提供了有关如何克隆存储库的详细说明。

在本地克隆您的复刻

完成复刻后,您需要克隆复刻的存储库。请查看 Atlassian 关于如何克隆存储库的文档以获取详细说明。

第 2 步:将 Snyk 连接到 Bitbucket

在本节中,我们要将 Snyk 与 Bitbucket 连接,以扫描我们的 Bitbucket 应用中是否存在开源漏洞。

Bitbucket 进程示意图

什么是软件组成分析 (SCA)?

软件组成分析 (SCA) 是一种开源组件管理工具。它会生成一份报告,列出应用中的所有开源组件,包括直接和间接依赖关系。使用 SCA 工具,开发团队可以快速跟踪和分析引入到项目中的开源组件。

尽管开源组件既方便又使用广泛,但向来难以跟踪。因此,开发人员依靠电子邮件和电子表格等手动流程来缓解此状况。但是,这些手动流程有可能破坏开源带来的便利性,提供的解决方案也不完善。比之更理想的方法是利用 SCA 工具来即时洞察各个组件。

为什么要使用 SCA 工具?

开源组件几乎是所有垂直领域软件开发的主要组成部分。无论组织规模如何,SCA 都可以帮助确定应用中对您的业务至关重要的开源组件。SCA 工具可让开发人员:

1. 了解应用中使用的依赖关系。

2. 在整个软件开发生命周期 (SDLC) 内实施安全和合规性策略

3. 从源头主动修复潜在漏洞。

4. 提高团队效率和公司安全状况。

第 3 步:创建应用密码

您需要创建应用密码才能授权 Snyk 访问您的存储库并启用 Snyk 的 Bitbucket Cloud 集成

要创建应用密码:

1. 在屏幕左下角的头像中,单击“个人设置”。

个人设置窗口

2. 单击“访问权限管理”下的“应用密码”。

访问管理窗口

3. 单击“创建应用密码”。

应用密码窗口

4. 为应用密码取名,它应与将使用该密码的应用相关。

应用密码窗口

5. 选择您希望此应用密码具有的特定访问权限和权限。

  • 帐户:

  • 团队成员资格:

  • 项目:

  • 存储库:读写

  • 拉取请求:读写

  • Webhook:读写

6. 复制生成的密码,然后将其记录下来,或粘贴到您要授予访问权限的应用中。密码只会显示一次。

第 4 步:添加存储库变量

您需要在存储库级别定义存储库变量,这些变量后续会在管道中引用。 这些变量包括以下内容:

  • SNYK_TOKEN - 用于对您的 Snyk 帐户进行身份验证的 Snyk API 令牌。这是一个安全变量。

  • IMAGE - 容器镜像名称。这不是安全变量。

其他变量用于增强管道操作,本教程对此不做讨论。

存储库设置窗口

第 5 步:获取您的 Snyk API 令牌

1. 获取您的 Snyk API 令牌

在 Snyk 控制台中,浏览到设置(图中的齿轮图标),然后在常规菜单下复制您的组织 ID

Snyk 常规设置

复制令牌后,返回到 Bitbucket Cloud UI 并定义 SNYK_TOKEN存储库变量

第 6 步:启用 Bitbucket 集成

在 Snyk 控制台中,导航到集成,然后选择 Bitbucket Cloud

Snyk 集成窗口

Bitbucket Cloud 集成页面中,在用户名字段输入您的 Bitbucket 用户名,并在应用密码字段输入上一步中的 Bitbucket 应用密码。然后,单击保存

设置:集成窗口

成功连接 Snyk 和 Bitbucket 帐户后,您将看到一条确认消息,并可将 Bitbucket Cloud 存储库添加到 Snyk

继续留在此页面上。在下一节中,您将学习如何导入 Bitbucket Cloud 存储库并使用 Snyk 对其进行扫描。

扫描并监控您的 Bitbucket 应用

扫描和监控 Bitbucket 缩略图

从源头开始扫描应用以查找开源依赖项中的漏洞。在上一节中,我们启用了 Snyk 到 Bitbucket 的集成,并可导入我们的首个项目。

第 7 步:将 Bitbucket Cloud 存储库添加到 Snyk

在上一节的最后一个屏幕上,单击将 Bitbucket Cloud 存储库添加到 Snyk

将 Bitbucket Cloud 存储库添加到 Snyk

配置环境模块中找到您克隆的存储库。单击勾选框将其选中,然后单击添加选定的存储库按钮以导入项目。

右上角的“添加选定的存储库”按钮

第 8 步:查看漏洞报告

您应能看到基于 packages.json 的漏洞计数,以及每个漏洞的详细信息。单击进入刚刚扫描的项目,然后在 Snyk 中查看结果。您不仅会收到漏洞的严重性和漏洞利用成熟度之类的上下文信息,还可以获得以下强大功能:

漏洞报告
  • 修复此漏洞,以通过升级直接依赖关系或修补漏洞来帮助您修复漏洞。

  • 优先级分数可帮助您有效确定修复内容的优先级。分数范围从 1 到 1000 不等,由专有算法提供支持。该算法可处理多种因素,例如 CVSS 分数、有无已知漏洞修复方法、漏洞的新旧程度,以及是否可以访问等。

  • Jira 集成可让您在 Jira 中创建事务。

为您推荐

DevOps 社区

DevOps 学习路径

免费试用