Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

16 Commits

Repository files navigation

dependahunt

Dependabot/Renovateが作成したPRを自動的に分析し、脆弱性の影響をAIで評価するワークフローです。 前提としてDependabot alertsが有効になっている必要があります。Renovateおよび本ツールは脆弱性情報のソースとしてDependabot alertsを参照しているため、Renovateを利用する場合も有効にする必要があります。

導入方法

GitHub Appの作成

次の権限を付与したGitHub Appを作成してください。

  • Contents: read only
  • Pull requests: read and write
  • Dependabot alerts: read only

ワークフローの配置

次のYAML を .github/workflows の中に配置してください。 なお、実運用においては、直接本リポジトリのワークフローを参照するのではなく、本リポジトリをforkしたうえでそちらを参照することを推奨します。

name: dependahunt Calleron:
workflow_run: # Dependabot/RenovateのPR作成時(チェックが行われた後)にトリガするworkflows: ["Dependabot Updates", "(Your Renovate Workflow Name)"]types: [completed]issue_comment: # PRコメント時にトリガするtypes: [created]workflow_dispatch: # GitHubのUI上から手動実行できるようにするpermissions:
contents: readpull-requests: writeid-token: writesecurity-events: readjobs:
run:
uses: m3dev/dependahunt/.github/workflows/analyze.yml@v1with:
runs_on: '"ubuntu-latest"'event_name: ${{ github.event_name }}ai_provider: 'claude-vertex'ai_model: 'claude-sonnet-4-6@default'vertex_project_id: '(your project id)'vertex_region: '(your region)'pr_creator: '(your Dependabot or Renovate bot name)'secrets:
APP_ID: ${{ secrets.APP_ID }}APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}WORKLOAD_IDENTITY_PROVIDER: ${{ secrets.WORKLOAD_IDENTITY_PROVIDER }}SERVICE_ACCOUNT: ${{ secrets.SERVICE_ACCOUNT }}GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

パラメータ・シークレット

with パラメータ
パラメータ名必須説明
event_nameイベントタイプ判別用。通常は${{ github.event_name }}を指定すること。
runs_onワークフローを実行するランナーの指定(JSON文字列形式)。単一ランナーの場合は'"ubuntu-latest"'のようにダブルクォートで囲む。配列の場合は'["self-hosted", "ubuntu"]'のように配列形式で指定。
ai_provider使用するAIプロバイダ。指定可能な値: claude-vertex, claude-direct, claude-bedrock, gemini-vertex, gemini-direct
ai_model使用するAIモデル。プロバイダに応じて適切なモデルを指定。例: claude-sonnet-4-6@default(Vertex AI), us.anthropic.claude-sonnet-4-6(Bedrock), gemini-2.5-pro
vertex_project_idVertex AIを使用するGCPプロジェクトID。Vertex AI使用時(ai_providerclaude-vertexまたはgemini-vertexの場合)は必須。
vertex_regionVertex AIのGCPリージョン
aws_role_arnAWS BedrockアクセスのためのIAMロールARN(例: arn:aws:iam::123456789012:role/my-role)。ai_providerclaude-bedrockの場合に必須。GitHub Actions OIDCによる認証を使用する。
aws_regionAWS Bedrockのリージョン。ai_providerclaude-bedrockの場合に使用。デフォルトはus-east-1
pr_creator-チェック対象にするPRの作成者名。ここで指定したユーザが作成したPRがチェック対象になる。デフォルトは dependabot[bot]
trigger_word-PRコメントで分析を起動するトリガーワード。デフォルトは/dependahunt
secrets シークレット
シークレット名必須説明
APP_ID作成したGitHub AppのApp ID
APP_PRIVATE_KEYGitHub Appの秘密鍵(PEM形式)
WORKLOAD_IDENTITY_PROVIDERGCP Workload Identity Providerのリソースパス(例: projects/123456789/locations/global/workloadIdentityPools/github/providers/github-oidc)。Vertex AI使用時は必須。
SERVICE_ACCOUNTVertex AIアクセス用のGCPサービスアカウント(例: github-actions@project-id.iam.gserviceaccount.com)。Vertex AI使用時は必須。
ANTHROPIC_API_KEYAnthropic APIキー(例: sk-ant-api03-...)。ai_providerclaude-directの場合に必須。
GEMINI_API_KEYGoogle AI Studio APIキー(例: AIzaSy...)。ai_providergemini-directの場合に必須。

AWS Bedrock を使用する場合

ai_provider: 'claude-bedrock' を指定する場合、GitHub Actions OIDCによるAWS認証を使用します。事前にAWS側でOIDC Providerの設定と、Bedrockへのアクセス権を持つIAMロールを作成してください。

permissions:
contents: readpull-requests: writeid-token: write # OIDC認証に必要jobs:
run:
uses: m3dev/dependahunt/.github/workflows/analyze.yml@v1with:
runs_on: '"ubuntu-latest"'event_name: ${{ github.event_name }}ai_provider: 'claude-bedrock'ai_model: 'us.anthropic.claude-sonnet-4-6'aws_role_arn: ${{ vars.AWS_ROLE_ARN }}aws_region: 'us-east-1'secrets:
APP_ID: ${{ secrets.APP_ID }}APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}

renovate.jsonの編集(Renovateを利用する場合のみ)

Renovateを使用する場合、PR本文内にパッケージ情報を埋め込む必要があります。extendsgithub>m3dev/dependahunt#v1 を追加してください。 この設定により vulnerabilityAlerts が有効化され、 prBodyNotes にパッケージ情報が埋め込まれるようになります。

{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended",
"github>m3dev/dependahunt#v1"
],
}

上記のShareable Config Presetsを利用せず細かくルールをカスタマイズする場合は、 <!-- dependahunt:target-package {{{ toJSON (toObject 'packageName' packageName 'depName' depName 'currentVersion' currentVersion 'newVersion' newVersion) }}} --> を脆弱性アップデートの prBodyNotes に追加してください。

使用方法

PR作成時の自動チェック

Dependabot/RenovateがパッチPRを作成したタイミングで自動的に実行され、未分析のPRの内容が分析されます。無効化するにはYAMLの workflow_run キーを削除してください。 なお、Dependabot自体はデフォルトブランチを分析対象としています。対象ブランチを変更する場合は dependabot.yamlで設定してください。

PRコメント内での手動チェック

Dependabot/Renovateが作成したPRのコメントに特定のコマンドを入力することで、そのPRの内容が分析されます。

コマンド

  • /dependahunt analyze [パッケージ名] [--comment "追加の指示"] [--include-previous]
    • パッケージ名 1つのPRに含まれる複数のパッケージのうち特定のパッケージのみを再分析したい場合にパッケージ名を指定します。例:/dependahunt analyze lodash 省略した場合はPRに含まれる全てのパッケージを分析します。 なお、1つのPRに複数のパッケージのアップデートが混在している設定は非推奨です。
    • --comment 分析の際に重視しておいてほしい点や質問などの追加の指示を与えることができます。
    • --include-previous 直近の分析結果も今回の分析に含めます。 --commentと組み合わせることで、直近の結果を踏まえた指示(例:他の対策はないか、など)を与えることができます。
  • /dependahunt re-analyze [パッケージ名] [--comment "追加の指示"]/dependahunt analyze --include-previous のシンタックスシュガーです。

GitHubのUI上からの手動チェック(一括実行したい場合など)

GitHubのActions画面から追加したワークフローを選択し、「Run workflow」を押下すると、未分析のPRに対して実行されます。

制限事項

  • 1つのPRに複数のパッケージのアップデートが混在している設定は非推奨です。Dependabot/Renovateの設定で、各パッケージごとに個別のPRを作成するようにしてください。
  • 本ツールはリポジトリのDependabot alertsに記録されている脆弱性情報を参照して分析を行います。Renovateが対応していてもDependabotが対応していないパッケージマネージャの場合、脆弱性情報が見つからず脆弱性の影響有無を正しく判断できません。

⚠️注意

公開リポジトリなど、信頼できないメンバーが閲覧できるリポジトリでこのワークフローを使用しないでください。 仕様上プロンプトインジェクションが可能であり、APIトークンの漏洩等が発生する可能性があります。

About

No description, website, or topics provided.

Resources

Stars

30 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors