GitHubのDependabotを活用して、npmやcomposerなどのパッケージの脆弱性を監視し、通知を受け取る設定は次のように行えます。
なお、脆弱性データベースはこちらを参照しています。
リポジトリのSettings > ( Security ) Code security and analysis を選択し
「Dependabot alerts」
「Enable Dependabot alerts」と「Enable Dependabot security updates」の両方にチェックを入れます。
オプションの説明はこちらです。
Settings > Security > Code security and analysis > Dependabot alerts で通知設定を行います。
「Add advisors...」から通知を受け取る対象のメンバーやTeamを追加
「Add more paths」から監視対象のディレクトリ(package.jsonがある場所)を指定
デフォルトでは脆弱性が見つかった際に新しいアラートが作成されたときにメールが送信されます。
curl -s \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer YOUR_TOKEN" \
https://api.github.com/repos/OWNER/REPO/dependabot/alerts \
> alerts.json
YOUR_TOKEN , OWNER , REPO は適宜設定してください。
あとは jq で好きなように整形できます。
.github/workflows/dependabot-alerts.yml
name: Dependabot Alerts to Slack
on:
schedule:
- cron: '0 0 * * *' # 毎日実行(必要に応じて調整)
push:
branches:
- main # メインブランチにプッシュされたときに実行
jobs:
dependabot_alerts:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3 # Node.js 20対応
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: Fetch Dependabot alerts
id: fetch_alerts
run: |
curl -s \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.DEPENDABOT_PAT }}" \
https://api.github.com/repos/${{ github.repository }}/dependabot/alerts \
| jq '.' > alerts.json
count=$(jq length alerts.json)
echo "count=$count" >> $GITHUB_ENV
echo "Number of alerts: $count"
- name: Debug JSON
run: cat alerts.json
- name: Send to Slack
run: |
<加工してslackに送信するスクリプト>
以下のシークレットが必要なので、プロジェクトの「Settings」 → 「Secrets and variables」 から登録します。
DEPENDABOT_PAT: パーソナルアクセストークンをGithubの対象プロジェクトのシークレットに登録します。
SLACK_DEPENDABOT_WEBHOOK_URL: SlackのフックURLを発行してGithubの対象プロジェクトのシークレットに登録します。