Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

GitHub Secret ScanningのアラートをWebhookで受け取る

こんにちは、MLBお兄さんこと松村です。
MLB はプレーオフ争いが白熱しておりますが、残念ながら我がニューヨーク・ヤンキースは(察し)な状況です。


GitHub Secret scanning

GitHub が提供するコードについてのセキュリティ機能である「Secret scanning」というのはご存知でしょうか?
Secret scanning とは、リポジトリをスキャンすることでリポジトリのコードに誤ってコミットされたシークレットを検知する機能です。
また、シークレットがプッシュされることを防ぐ機能もあります。 (Push protection)

docs.github.com

Secret scanning はパブリックリポジトリであれば無料で利用することができます。
GitHub Advanced Security のライセンスを有していれば、プライベートリポジトリでも利用することができます。

何をスキャンするか

Secret scanning が検出する対象は「シークレット」です。
一般的にシークレットとは「秘匿情報」であり、アプリケーションコードにおいては DB の接続文字列や API キーなどが該当します。

Secret scanning でサポートされているシークレットのパターンはドキュメントにて公開されています。

docs.github.com

例えば私がよく使う技術のうち、該当しているものもいくつかあります。

  • Azure : サービスプリンシパルのクライアントシークレット
  • Azure : Functions の認証コード
  • Azure : データベースの接続文字列

Secret scanning を有効にする

リポジトリが Secret scanning 機能を利用することができる場合、リポジトリの設定画面から有効にすることができます。
[Settings] タブ > [Code security and analysis] > [Secret scanning] > [Enable]

シークレットスキャンアラートを見る

Secret scanning を有効にするとリポジトリのスキャンが始まります。
検出されたシークレットが存在する場合、[Security] タブ > [Secret scanning] にシークレットスキャンアラートが表示されます。
以下の画像では Azure Functions の認証コードが検出された状態となっています。

このまま認証コードが含まれた状態でいるのは良くないため、該当箇所を変更するなどの対策を行う必要があります。
シークレットスキャンアラートはリポジトリ管理者と組織のオーナーには、メールにてアラートが届きます。

個人的にはメールでの通知は見落としやすく、別の方法での通知受け取りを模索したかったです。
そこで Webhook によるシークレットスキャンアラートを受け取る方法があったため、ご紹介します。

Secret scanning の Webhook

GitHub は様々なイベントを Webhook にて送信することができます。ドキュメントはこのあたり。

docs.github.com

docs.github.com

Secret scanning のイベントは2種類あります。
これらの値はX-GitHub-Event ヘッダーにも含まれます。

  1. secret_scanning_alert
    • シークレットスキャンアラートの情報が含まれる
  2. secret_scanning_alert_location
    • secret_scanning_alert が発生した際の、該当するシークレットの場所についての情報が含まれる

Webhook を登録する

Secret scanning の Webhook は組織またはリポジトリに登録することができます。

イベントは Send me everything (全イベント) か、個別に選択します。

設定を行い、実際にシークレットスキャンアラートが発生すると Webhook が送信されます。
送信された履歴や内容は GitHub にて確認することができます。

Webhook を受信しただけでは十分ではないため、GitHub Actions と連携したり、チャットツールに投稿したりなどしましょう。

docs.github.com

learn.microsoft.com

api.slack.com


シークレットは「混入しないこと」ももちろん大事ですが、「混入にすばやく気付く」ことも大事ですので、Secret scanning は積極的に使っていきたいですね。

www.alterbooth.com

www.alterbooth.com