課題:少人数のAppSecチームで大規模に対応
Redditは、共通の関心事について人々が話し合うフォーラム形式のコミュニティの構築に注力する、現在最大規模のソーシャルメディアプラットフォームの一つです。しかし、会社の成長に伴い、コードリポジトリの数も、プラットフォームを支えるテクノロジーの幅も広がりました。Redditは、変化し続けるコードベースのリスクを軽減するためにSnykを導入し、AppSecの取り組みを本格化しました。
さらに、Redditのセキュリティチームは少人数でしたが、約600人のエンジニアを擁する多数の開発チームに対応する必要がありました。ソフトウェア構成分析にはすでにSnykプラットフォームを導入していたRedditは、煩雑なAppSecタスクを自動化するため、技術スタック全体に簡単に統合できる堅牢なAPIを必要としていました。
「つい最近まで、Redditのアプリケーションセキュリティチームは私一人だけでした」と、Redditのセキュリティ担当者であるSpencer Koch氏は明かします。「リポジトリが数個だけなら、SnykのUIを使っても問題ありません。しかし、Redditには1000を超えるリポジトリがあります。UIを一つずつ操作して問題を抑制したり、リポジトリを追加したり、その他の管理タスクを処理したりする余裕はありませんでした。」
解決策:Snyk APIを活用した修正の自動化
コードリポジトリが数個だけの組織にとって、SnykのUIは便利です。しかし、Redditが必要とする規模では、UI上で手動変更を行う方法は効率的ではありませんでした。Snyk APIにより、Redditは反復作業を自動化できただけでなく、セキュリティスキャンをGitHub Enterprise(GHE)と緊密に連携させることができました。この連携により、オープンソースの脆弱性を自動検出し、プルリクエストを通じて修正できるようになりました。
「リポジトリをクリーンな状態にした後、新しいプルリクエストにセキュリティ上の脆弱性があれば失敗するように方針を切り替えました」とKoch氏は述べます。「これにより、Redditはセキュリティチーム主導の事後対応型から、開発者中心で開発者主導の修正アプローチへと移行しました。こうした作業をすべて管理できたのは、Snyk APIのおかげです。」
Snyk APIとPythonラッパー
RedditはSnyk APIを直接利用するだけでなく、SnykのPythonラッパーも活用しています。Redditの技術スタックの大部分はPythonで構成されているため、pysnykクライアントを使うことで、既存の開発者向けツールにSnykをより緊密に統合できます。この緊密な連携によって導入時の摩擦が減り、開発者のワークフローへのSnykプラットフォームの導入が加速しました。その結果、Redditのセキュリティチームは、アプリケーションの脆弱性リスクをすぐに把握できるようになりました。
RedditはGHE連携も構築し、その後AppSecコミュニティにオープンソースとして公開しました。Redditはsnyk-syncを作成し、毎週定期的に実行されるcronジョブによって、GHEリポジトリの変更を同期しています。更新内容には、新しいリポジトリの追加や不要になったリポジトリの削除、適切なGHE連携設定の適用、Snyk CLIを使ったCIの手動ステップが必要な場合の通知が含まれます。また、pysnykを活用して、Redditのコードベースに関係のないサードパーティベンダーやオープンソースプロジェクトの問題を一括で抑制するなどの操作も行っています。
「ツールの一部を一元化でき、開発者のワークフロー全体に大規模に適用できる点が、Snykの気に入っているところです」とKoch氏は述べます。
「Snykは開発者を重視しており、開発者の妨げにならずに簡単に展開を拡大できました。GHEを使ったPRテストで開発者にフィードバックを提供する仕組みは、現在のワークフローにうまくなじみ、導入時の摩擦を軽減しました。」
成果:1000を超えるリポジトリ全体にセキュリティ対策を拡大
Snyk APIとPythonクライアントを活用することで、Redditでは開発者やセキュリティエンジニアが有用なセキュリティの可視性を得て、脆弱性を管理するまでの時間が大幅に短縮されました。実際、Redditのセキュリティチームは数週間でSnykプラットフォームを展開し、Redditのコードベースの大部分を比較的容易にカバーしました。これにより、オープンソース依存関係のスキャンを大規模に実現し、短期間で投資効果を得ることができました。
「人の力は非常に重要です」とKoch氏は語ります。「Snyk APIがなければ、Redditの規模では多くのセキュリティタスクにかなりの時間がかかっていたでしょう。こうした作業の一部を自動化したことで、運用負荷が軽減され、Snykプラットフォーム導入の総所有コストも抑えられました。」