課題: 小規模なアプリケーションセキュリティチームを大規模に活用
最大級のソーシャルメディアプラットフォームを運営する Reddit は、ユーザーが共通の興味について話し合えるフォーラム形式のコミュニティの構築に特化しています。しかし、同社の成長につれて、コードリポジトリの数は増加し、プラットフォームの構築基盤となっているテクノロジーの幅も広がりました。Reddit は、Snyk を導入して進化するコードベースのリスクを軽減することで、アプリケーションセキュリティの取り組みを定式化しました。
さらに、Reddit は小規模なセキュリティチームがありましたが、600 人近いエンジニアを抱える多数の開発チーム全体に取り組みを拡大することが求められていました。Reddit は、ソフトウェアコンポジションの解析用の Snyk プラットフォームはすでに導入していましたが、技術スタック全体と簡単に統合して煩雑なアプリケーションセキュリティのタスクを自動化できる堅牢な API を必要としていました。
Reddit のセキュリティ専門家であるスペンサー・コッチ氏 (Spencer Koch) は、「Reddit のアプリケーションセキュリティチームのメンバーは、つい最近まで私一人でした。数個のリポジトリしかないのであれば、Snyk UI で操作しても問題はありませんが、Reddit には 1000 個以上のリポジトリがあります。UI をクリックして問題を抑制したり、リポジトリを追加したり、その他の管理タスクを処理したりする余裕はありませんでした」と話しています。
ソリューション: Snyk の API を使用した自動修復
Snyk UI は、コードリポジトリが数個しかない組織にとっては便利ですが、UI で手作業で変更を加えるのは、Reddit を必要とする規模では非効率的でした。Snyk API を導入したことで、Reddit は反復作業を自動化できるだけでなく、セキュリティスキャンを GitHub Enterprise (GHE) と緊密に統合できました。この統合により、Reddit はオープンソースの脆弱性を自動的に検出し、プルリクエストを通じて修正できるようになったのです。
コッチ氏は、「リポジトリをクリーニングした後、新しいプルリクエストにセキュリティの脆弱性があれば失敗するようスクリプトを反転させました。これにより、Reddit はセキュリティチーム主導の事後対応的なアプローチから、開発者中心で開発者主導の修正アプローチに移行できました。この作業をすべて管理する唯一の方法は、Snyk API を使用することでした」と話しています。
Snyk API と Python ラッパー
Reddit では、Snyk API を直接使用するだけでなく、Snyk の Python ラッパーも活用しています。Reddit の技術スタックの大部分は Python のため、pysnyk クライアントは Snyk を既存の開発者ツールにより緊密に統合します。この緊密な統合により摩擦を緩和し、開発者ワークフローへの Snyk プラットフォームの導入が加速化された結果、Reddit のセキュリティチームはアプリケーションの脆弱性リスクに関するインサイトを即時に得られるようになりました。
また、Reddit は GHE 統合も構築し、これをアプリケーションセキュリティのコミュニティにオープンソースとして公開しました。さらに snyk-sync を作成し、毎週定期的に cron ジョブを実行し、GHE リポジトリと変更を同期するようにしました。こうした更新には、新しいリポジトリの追加や枯渇したリポジトリの削除、適切な GHE 統合の設定、Snyk CLI を使用した手作業の CI ステップが必要な場合のアラートなどが含まれます。Reddit はまた、pysnyk を活用して、Reddit のコードベースとは関係のないサードパーティベンダーやオープンソースプロジェクトのコードベース内でフラグが付いた問題を抑制するといった、一括アクションを実行しています。
「Snyk を好きになった理由は、ツールの一部を一元化できることと、開発者がワークフローの中で規模の大きな作業に携われることです」とコッチ氏は話しています。
Snyk は開発者中心に作られているので、開発者を混乱させずに拡張できました。開発者にフィードバックを返す GHE を使用した PR テストは、弊社の現在のワークフローと非常に相性が良く、摩擦を軽減しました。
導入効果: 1000 個を超えるリポジトリにセキュリティを拡張
Snyk の API と Python クライアントを活用することで、Reddit は開発者とセキュリティエンジニアが有用なセキュリティのオブザーバビリティを得て脆弱性を管理するスピードを劇的に向上させました。実際、Reddit のセキュリティチームは、数週間で Snyk プラットフォームを展開して Reddit のコードベースの大部分を比較的簡単にカバーしました。これが、オープンソースの依存関係スキャンを大規模に実行することにつながり、速やかに投資効果を実現できました。
コッチ氏は、「人間的な要素は非常に重要です。Snyk API がなければ、Reddit の規模では多くのセキュリティタスクの処理に多大な時間がかかっていたと思います。こうした作業の一部を自動化することで、運用負担が軽減され、Snyk プラットフォーム導入の総所有コストを下げることができました」と話しています。