オンプレのGitHubでもセキュリティ脆弱性アラート

Takafumi Ikeda
Momentum Flow Blog
Published in
Dec 30, 2020

GitHubを使っている人なら、下記のようなメールを受け取ったことがあると思います。

GitHubが提供している機能の1つで、リポジトリ内のマニフェスト(package.jsonなど)を読み取って、内部で発生している脆弱性についてCVEと照らし合わせた上でアラートしてくれる仕組みです。

GitHubのドキュメント上では呼び名が定まっていませんが、Security Vulnerabilities Alert、またはDependabot Alertと呼ばれています。

これは脆弱性に対して素早く対応が出来る非常に便利な機能なのですが、GitHub.comのみでの提供で、オンプレ版のGitHub Enterprise Server (GHES) でもこれがほしいという声をよく耳にします。

GitHub Connectで脆弱性アラート

実はこれは誤解で、先日お伝えしたGitHub Connectの機能を使うことで、GHESでもセキュリティ脆弱性の自動検査とアラートを受け取れるようになります。

動作のイメージとしては下図になります。

GitHub.comからGHESに対して脆弱性データの同期が行われる

GitHub.comからGHESに対して脆弱性データベースが同期されます。GHES内では同期された脆弱性データベースを基にして、脆弱性検査が行われます。

GHES内で脆弱性を含むリポジトリが見つかると、アラートがメール等でそのリポジトリの管理者等に通知されるイメージです。

この脆弱性検査は上図のとおりGHES内で閉じて行われ、コードがGitHub.com側に流れることはありません。(一部データはGitHub.com側に保存されます。詳細はこちら

GHESで脆弱性アラートを有効にするには

この機能を有効にするには少し手順が必要です。

まずGitHub Connectを有効にしているのが前提です。Connect設定後、GHESのConnect設定画面は下図のようになっています。

ご覧の通り、Security Vulnerabilities Alert関連の設定がデフォルトでは出てこないのです。

設定が出来るようにするためには、GHESのインスタンスにSSHログインして、特定のコマンドを打つ必要があります。

まずはGHESにSSHログインしましょう。下記のようなコマンドになるはずです。GHESは22番ポートをユーザーのGitオペレーションに使っているため、GHESインスタンス自体へのログインに使うポートは22ではなく122であることに注意してください。

$ ssh -i <SSH秘密鍵> -p 122 admin@<GHESのドメイン>
ログインに成功するとこんなメッセージが出るはず

GHESインスタンスにログインしたら、下記コマンドを実行します。

$ ghe-dep-graph-enable

コマンドを実行後、先ほどのGitHub Connect設定画面(GHESのユーザープロファイル->”Enterprise Settings”->サイドバーから”Settings”->GitHub Connect)に戻ってくると、下図のような”Repositories can be scanned for vulnerabilities”という設定項目が新しく出現します。

コマンドを打つと出現する項目

この項目を”Enabled”に設定すると、以後、GHES内を自動で検査して脆弱性アラートを出してくれるようになります。上側の”Enabled with notifications”を選択しましょう。

尚、”without notifications”を選択すると、検査結果を各リポジトリ画面上に表示はしてくれますが、メール等で通知はしなくなります。運用に合わせて選んでください。

設定手順については公式ドキュメントも参照してください。

GHESのリポジトリも脆弱性検査が可能に

この設定をすることで、御社内で運用しているGHESに対しても脆弱性検査が自動で行われ、都度メール等で通知してくれるようになります。

下図は受け取れるメールのイメージです。

GHESから脆弱性アラートが飛んでくるようになった!

またこのメールにある青いボタンを押すと、GHESの該当リポジトリに飛んで、より詳細に依存ライブラリのどの部分でどういう脆弱性が出ているのかを分析できます。

GitHub.comにもあるDependency graphがGHESでも見れるように

まとめ

いかがだったでしょうか。セキュリティ脆弱性検査というのは重要なプロセスでありながらなかなか面倒で後回しになりがちです。これを自動化できるだけでも非常に意味のある機能だと思います。

GitHub Connectを使うことで、この脆弱性アラート機能をオンプレミス型のGHESでも有効に出来るという、意外と知られていない機能を取り上げてみました。

Enterpriseプランを使っている人はぜひ試してみてください。また、Enterpriseプランにすべきか迷っている場合にはこれが1つの材料になるのではないでしょうか。

ご相談承ります

弊社モメンタムフローはGitHubコンサルティング/DevOpsコンサルティングを提供しています。

GitHub Enterpriseに関するあらゆるご相談を承っています。

お気軽にお問い合わせください!

info@momentum-flow.com

https://twitter.com/MomentumFlow

--

--

Takafumi Ikeda
Momentum Flow Blog

ソフトウェアエンジニア。GitHub Enterpriseに詳しい。英語とソフトウェアとビジネス的なにかの間で生きています。