BEACHSIDE BLOG

Azure と GitHub と C# が好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

GitHub の Secret scanning の設定とアラートの確認方法 ( GitHub Advanced Security )

以前 GitHub Advance Security (略して GHAS) について概要をまとめました。

今回は GHAS の機能のひとつである Secret scanning にフォーカスしたメモです。

Secret Scanning の概要

概要としてさらっとおさえておきたいポイント点はこれくらいでしょうか。

  • コードを GitHub の repo に push した際にシークレットが含まれていないかをスキャンし、シークレットを検知したらアラートを出してくれる
    • Secret Scanning を無効から有効にしたタイミングでもスキャンが実行される。
    • 全てのブランチの全 Git 履歴が対象。
    • GitHub 及び GitHub パートナーが提供しているシークレットのパターンをスキャンしてくれる。
  • public の repo では誰でも無償で利用が可能
  • GitHub Advanced Security の機能のひとつで、Organization の private / internal の repo で利用するには契約が必要。
    • 個人アカウントの private repo では利用できない。
    • 契約して有料で使うと、無償で利用できる機能に追加して カスタムパターンを定義できるようになる。

Secret Scanning を有効にするには

public repo の場合

デフォルトで有効になっており、無効にすることができません。
個人アカウントの repo ではメニューにも存在しません。
Organization の repository だと SettingsSecurity & analysis にメニューがありますが、Secret scanning を無効化するボタンが無効化された状態になっています。

f:id:beachside:20211029171910p:plain

private / internal

前述してますが GitHub Advanced Security の機能の一部なので GitHub と契約しないと使えない機能です。
契約して利用可能な状態だと、repository の SettingsSecurity & analysis で有効化できます。GitHub Advanced Security の Enable を押すことで、さらに Secret scanning を Enable にすることができます。

f:id:beachside:20211029172807p:plain

また、Organization の Settings では、 private repo で自動的に有効にするって制御もあります。

余談ですが、カスタムパターンの定義は、ドキュメントでは Organization or enterprise account ごとに 100、private repo ごとに 20 定義できると書いてますが、GitHub のメニューでは Organization or enterprise accountで 500、repo で 100 できるって書かれているようにみえます。

Secret scanning のアラートの確認方法

GitHub Enterprise Cloud でアラートの確認方法や、権限設定・通知設定を見ていきます。

アラートをとばしてみる

試しに Azure の storage の接続文字列を書いたコードを置いてみると、私の場合1分くらい?気づいた時にはこんなメールが飛んできました。

f:id:beachside:20211029175600p:plain

アラートのメールは、デフォルトで Organization の owner 、repository の Admin にメールが飛びます。また、ユーザーを追加することも可能ですが、それについては、次の「Secret scanning alerts 画面での確認」で触れます。

アラートが飛ぶのと合わせて Secret scanning alerts 画面で詳細が確認できます。

Secret scanning alert を見る

Secret scanning alert 画面を見るには権限が無いみれないですが...権限に関することが長くなったので後の方で書いてます。

repository の Security タブ → Secret scanning alert からアラートの詳細を確認できます。ファイルを更新した瞬間くらいで表示されました。

f:id:beachside:20211029175941p:plain

テーブルに表示されたアラートをクリックすると、どのファイルのどこに secret が検知されたかや推奨のアクションが表示されます。これは issue みたいな扱いで Open か close かって状態を持っているので、必要な対応をして右上の Close as から理由を選択して close する流れになります。

f:id:beachside:20211029180219p:plain

Secret scanning alerts の閲覧権限と通知の設定

閲覧権限の設定

repository の Security タブ にある DependabotSecret scanning alerts はデフォルトでは、Organization の Owner または repo の Owner しか閲覧できません。

閲覧できるようにするには、主に2つの方法があります。

  • ユーザーまたは Team を Access to alerts から追加する
  • Security manager role に割り当てる

それぞれの設定方法をみていきましょう。

ユーザーまたは Team を Access to alerts から追加する

主に開発者向けの設定方法で、ユーザーや Team に特定の repo の Access to alerts 権限を付与するときに使うイメージです。

設定方法は、Organization の SettingsSecurity & analysis の下の方にある Access to alerts からユーザーまたは team を追加することで閲覧権限を付与できます。

f:id:beachside:20211029182849p:plain

Security manager role に割り当てる

Organization のすべての repo を見るセキュリティ担当者向けの設定ってイメージです。

Team に Security manager という専用の role を与える機能で Secret scanning alerts も見れるようになります。現時点では Organization のすべての repo に read 権限が付与され Secret scanning alerts も見えるようになります。ほかにも権限が付きますが、public beta 中 = いつどう変わるかの可能性もあるので付与される権限については以下のドキュメントを確認しましょう。

設定方法は、Organization の SettingsSecurity & Analysis を開くと下の方に Security managers セクションがあります。ここから Team を追加し、あとは Team にメンバーを追加してあげれば OK です。

f:id:beachside:20211031204002p:plain

余談として、この機能を見た瞬間は Billing manger みたく license seat を消費しないメンバーかなーと思ったら普通に license seat を消費するアカウントでした。まぁ (現時点の仕様だと) repo 全部みえる権限を付与されるから license seat を消費するかって感じではありましたが。

通知の設定

前述のように設定しておけば GitHub から通知を出すユーザーが設定されますが、通知を受け取れるようになっているかはユーザーごとの設定次第になります。

通意外とハマりポイントな気もする通知を受け取る設定も書いておきます。

2つのポイントがあります。

  • ユーザーの Notification 設定
  • Repo での Watching (Notification) の設定

ユーザーの Notification 設定

GitHub の右上にある自分のアバターアイコンをクリック → Settings をクリックします。

f:id:beachside:20211031205816p:plain

左側の Notifications をクリックすると各種のアラートの通知設定ができますので、ここで通知の設定をしておきます。Secret scanning の通知は、Watching の一部なので、Watching の通知を Email や Web and Mobile にチェックを入れておくことで通知を受け取れるように設定します。

f:id:beachside:20211031210023p:plain

Repo での Watching (Notification) の設定

Watching 自体は repo 毎の設定で Watching するしないの設定もあります。通知がこないときは repo の右上にある Notification から All activity にしておくとか、もしくは今年に機能追加された Custom で Security alerts を選択した状態にしておきます。

f:id:beachside:20211031212056p:plain

参考