Dependabot 介绍

·  阅读 2617

Background

你可能常常会在你的某一个Github repo上发现这样的alert 这是Github给你发送的Dependabot alerts

What is Dependabot?

Github Dependabot 是一个github的工具,他可以帮助你检测你的repo, 并且做一些工作保证你repo的安全性。Dependabot可以为你repo做的事情主要分成三大类:

  • Keep all your dependencies updated: 实时检测你的repo,并keep你所有的dependency都能被updated
  • Detection of vulnerable dependencies send Dependabot alert:检测vulnerable dependencies并发出Dependabot alert
  • Stop using vulnerable dependencies and keep security updates: 帮助你停止使用有vulnerable的dependencies

Keep all your dependencies updated

Dependabot除了可以帮助我们处理漏洞以外,还有一个非常重要的作用,就是帮助我们检测我们所使用的dependency中是否有可以更新的版本,如果有,它也可以帮助我们实现自动更新。

在repo中enable了Dependabot之后,可以时刻的保证我们repo中使用的dependency都是up to date的

Detection of vulnerable dependencies

Github会检测vulnerable dependencies,如果发现就会发出Dependabot alerts, 这种检测机制在以下几种情况下被触发:

  • 当GitHub Advisory Database中又收录了一个新的vulnerability

GitHub Advisory Database中包含了所有目前发现的vulnerability。Github也为了方便开发者查询vulnerability而开发了一UI github.com/advisories, 这里你可以浏览或搜索影响GitHub上开源项目的漏洞。

  • 来自WhiteSource的新的vulnerability被处理

WhiteSource DB也是一个用于存储open source security vulnerabilities的DB

  • repo中添加了新的dependency或者升级了某一个dependency的版本,或者说dependency graph发生了改变。

默认情况下,Github会检测所有的public repo,当发现漏洞的时候alert仓库的维护者,alert中会包含被影响的文件link,以及漏洞修复的版本和信息。

对于一些private repo就需要维护者手动的enable dependency graphGitHub Dependabot alerts 653a985899480f765a3f40507b8116a5.png

对于那些enable Dependabot security updates 的仓库,Dependabot会自动的将漏洞修复,并且给你的仓库提PR。

Stop using vulnerable dependencies: Dependabot security updates

当你的repo enable Dependabot security updates 之后,Github会找到没有漏洞的版本,将漏洞修复,并且给你的repo提一个PR

你的repo就可以实现自动的security updates

How to use Dependabot ?

Dependabot的检测功能对于public repo是默认开启的,如何开启我已经在上面提过了,这部分主要会说明如何配置Dependabot的自动update。

如果想要Dependabot帮你做security updates,你需要两个步骤:

  • 在repo中首先enable Dependabot security updates

  • 在repo根目录下创建.github folder,并且在folder下添加dependabot.yml(dependabot的config)

    这个config主要配置:

    • 那些漏洞需要被自动修复

    • 多久进行一次自动修复工作

# Basic dependabot.yml file with
# minimum configuration for two package managers

version: 2
updates:
  # Enable version updates for npm
  - package-ecosystem: "npm"
    # Look for `package.json` and `lock` files in the `root` directory
    directory: "/"
    # Check the npm registry for updates every day (weekdays)
    schedule:
      interval: "daily"

  # Enable version updates for Docker
  - package-ecosystem: "docker"
    # Look for a `Dockerfile` in the `root` directory
    directory: "/"
    # Check for updates once a week
    schedule:
      interval: "weekly"

复制代码
分类:
阅读
标签:
收藏成功!
已添加到「」, 点击更改