全社プロダクトのセキュリティ向上: SASTツールを選定した話

プロダクトセキュリティのお手伝いをしている wonda-tea-coffee です。
最近セキュリティ施策としてプロジェクト横断的に使用するSASTツールの導入を検討しました。
SAST(Static Application Security Testing)は、アプリケーションのソースコードを動作させずに解析する手法のことです。
この記事ではその検討の結果と過程を紹介します。

選定基準

社内で使用している主要なプログラミング言語・パッケージ管理システムをサポートしていること

最も重要な点です。ツールによってサポート範囲が異なるため注意が必要です。

セキュリティ上の問題をより多く検知できること

今回は有用なセキュリティのガードレールが欲しかったため、解析項目の多さも重要です。

開発業務に支障が少ないこと

誤検知が煩わしかったり、指摘内容が分かりづらかったりしては開発業務に支障が出てしまいます。

運用コストがエンジニアリングの観点で少ないこと

調査したところツールの運用方法はセルフホスト、クラウドの2つのタイプがありました。今回は運用メンバーのリソースを考え、極力運用コストがエンジニアリングの観点で少なく済む方を優先することにしました。

ダッシュボードがあること

Webブラウザから各プロジェクトのスキャン結果をチェックできると改善施策を打ちやすくなります。

候補

上記の基準を満たした候補は以下のとおりです。

費用の概算

ツール名 年額(10ライセンス)
GitHub Advanced Security 859,330円
Semgrep 1,051,574円
Snyk 905,842円

注意事項

  • 上述の通りGitHub Advanced SecurityはGitHub Enterpriseの追加プランであるため、実際はこの金額にGitHub Enterprise自体の金額が加算されます。
  • 執筆時現在の円相場で1ドルあたり146.12円で計算しています。
  • 10ライセンスでの試算です。
  • あくまで概算であることに注意してください。正確な見積もりは各サービスサイトからお問い合わせください。

結果

比較の結果GitHub Advanced Security(以下GHAS)を採用することにしました。
GHASは候補の中で最もリーズナブルなことに加えて、後述する優位性があったことが決め手です。
ROUTE06では既にGitHub Enterpriseプランを契約していたため、GHASのみを新たに契約することになります。

GHASの優位性

GHASには他のツールに無い特徴としてSecret ScanningのPush Protectionがあります。
Secret Scanningはソースコード中のシークレットをスキャンする機能です。
それ自体は他のツールも備えていますが、Push ProtectionはGitHubへのPush自体を防いでくれます。
GitHubにPushしたシークレットを削除する作業は非常に手間がかかるため、これは大きなメリットです。
また、誤検知などの際にPushを継続する方法も提供されているため安心です。

候補外になったツール

horusec

horusecは複数言語に対応したOSSのSASTツールです。 freee社でも導入されていることから注目していましたが、セルフホストタイプであったため残念ながら今回の基準を満たしませんでした。

developers.freee.co.jp

SonarCloud

SonarCloudはsonar社が提供する有償のSASTツールです。 セキュリティに関する検査項目が少なかったため候補外になりました。 例えばRubyの検査項目を見るとセキュリティ観点のものは2つと少ないです。 コードの保守性に関係した検査項目が多く見られることから、セキュリティのみにフォーカスしたツールではないことが分かります。

最後に

以上を検討して今回はGHASを選びました。今後はGHASをガンガン使い倒して運用に関する知見をシェアできればと思っています。

また、ROUTE06ではプロダクトセキュリティレベルの向上に取り組んでいただけるメンバーを募集しています!興味のある方はこちらからぜひご連絡ください。

jobs.route06.co.jp