- 記事作成日:2022/12/14
情報
名前 | URL |
---|---|
Github | https://github.com/dependabot/dependabot-core |
公式サイト | https://docs.github.com/ja/code-security/dependabot |
デモサイト | |
開発母体 | GitHub |
version | |
言語 | Ruby |
価格 | 無料(部分的に有料) |
ライセンス | Prosperity Public License 2.0.0 |
何ができるもの?
Dependabot を使用してサプライ チェーンを安全に保つ - GitHub Docs
- アラート(Dependabot alerts)
- セキュリティアップデートの自動更新(Dependabot security updates)
- バージョンの自動更新
Dependabot alerts
Dependabot アラートについて - GitHub Docs
Dependabot alerts により、コードが安全でないパッケージに依存していることが通知されます。
この設定は public / private いずれもデフォルトでは有効化されていないので、各自で設定する必要があるようです。
GitHub は、 "パブリック" リポジトリ内の脆弱な依存関係とマルウェアを検出し、依存関係グラフを表示しますが、既定では Dependabot alertsは生成されません。 リポジトリの所有者または管理者アクセス権を持つユーザーは、パブリック リポジトリに対して Dependabot alertsを有効にすることができます。
プライベートリポジトリの所有者、または管理アクセス権を持つユーザは、リポジトリの依存関係グラフと Dependabot alerts を有効にすることで、Dependabot alerts を有効化できます。
自分が作っている OSS でも dependabot alert が飛んできていました。
サポートされているバージョン管理システム
About the dependency graph - GitHub Docs
メジャーどころは大体対応していますね。 (ここを見れば初めての言語でもどのパッケージ管理ツールを使えばいいかわかる!)
yaml もみてくれるのかーと思いましたが、注釈に .github/workflows/
配下のもののみと記載がありました。
自分で依存関係グラフを作って送ることも可能
Dependency Submission API を使用する - GitHub Docs
Public Beta ですが、Dependency Submission API
を使って依存関係を送信できます。ただし、以下に記載のように
送信された依存関係は、既知の脆弱性に対する Dependabot alerts と Dependabot security updates を受け取ります。 GitHub Advisory Database のサポートされているエコシステムのいずれかからの依存関係に対する Dependabot alerts のみを受け取ります。
GitHub 側がサポートしている依存関係から見つかったセキュリティアラートしかチェックできないので、エンタープライズ製品など非対応のものについては使えないようです。
PRの時点でチェックする
GitHub Actions で dependency review
を使うと PR の時点で、依存関係を更新して diff のページで教えてくれるようです。
name: 'Dependency Review' on: [pull_request] permissions: contents: read jobs: dependency-review: runs-on: ubuntu-latest steps: - name: 'Checkout Repository' uses: actions/checkout@v3 - name: Dependency Review uses: actions/dependency-review-action@v3
また、「特定のライセンスのみ」 、 「特定のセキュリティレベルのみ」 といった対応も可能です。
name: 'Dependency Review' on: [pull_request] permissions: contents: read jobs: dependency-review: runs-on: ubuntu-latest steps: - name: 'Checkout Repository' uses: actions/checkout@v3 - name: Dependency Review uses: actions/dependency-review-action@v3 with: # Possible values: "critical", "high", "moderate", "low" fail-on-severity: critical # You can only include one of these two options: `allow-licenses` and `deny-licences` # ([String]). Only allow these licenses (optional) # Possible values: Any `spdx_id` value(s) from https://docs.github.com/en/rest/licenses allow-licenses: GPL-3.0, BSD-3-Clause, MIT # ([String]). Block the pull request on these licenses (optional) # Possible values: Any `spdx_id` value(s) from https://docs.github.com/en/rest/licenses deny-licenses: LGPL-2.0, BSD-2-Clause # ([String]). Skip these GitHub Advisory Database IDs during detection (optional) # Possible values: Any valid GitHub Advisory Database ID from https://github.com/advisories allow-ghsas: GHSA-abcd-1234-5679, GHSA-efgh-1234-5679 # ([String]). Block pull requests that introduce vulnerabilities in the scopes that match this list (optional) # Possible values: "development", "runtime", "unknown" fail-on-scopes: development, runtime
ちなみに private リポジトリでは課金しないと使えないようです。
Dependabot security updates
Dependabot のセキュリティ アップデート - GitHub Docs
依存関係グラフと Dependabot alerts を有効にすると使える機能で、リポジトリで使っっている脆弱性のあるパッケージを識別し、それを解消する PR を自動で上げてくれる機能です。
リポジトリに dependabot.yml
を追加することで、動きを指定することができます。
# Example configuration file that: # - Ignores lodash dependency # - Disables version-updates version: 2 updates: - package-ecosystem: "npm" directory: "/" schedule: interval: "daily" ignore: - dependency-name: "lodash" # For Lodash, ignore all updates # Disable version updates for npm dependencies open-pull-requests-limit: 0
Configuring Dependabot security updates (Dependabot セキュリティ アップデートの構成) - GitHub Docs
Dependabot version updates
リポジトリが依存するパッケージおよびアプリケーションの最新リリースに自動的に対応できるようにすることができます。
GitHub Dependabot のバージョンアップデートについて - GitHub Docs
こっちも同様に dependabot.yml
を定義すると自動でバージョンアップ PR を作ってくれます。
対象のパッケージ管理システムはこちら。
どうやら kubernetes で使う docker image も対応しているようです。便利。
DependabotはKubernetesマニフェスト内のDockerイメージタグを更新することができます。
Dockerイメージタグを参照するKubernetesマニフェストを含むディレクトリごとに、dependabot.ymlファイルのDocker package-ecosystem要素にエントリを追加してください。
Kubernetesマニフェストは、Kubernetes Deployment YAMLファイルまたはHelmチャートにすることができます。
renovate
ってのもあるので今度調べてみよう。
利用シーン
- なんらかの外部パッケージを利用しており、危殆化対応、最新化対応をする場合
- 独自の最新か方法を使っている場合でかつ dependabot 対応のもの
登場背景
見つからなかった
所感
依存関係を自動で解決し、セキュリティ更新の提案までPRでしてくれるのは非常に便利。 アップデートしてもちゃんと動くよねをテストできるようにしておけば強い。