Skip to main content

急成長期の開発者セキュリティについてSurveyMonkeyがSnykに語る

feature customer survey monkey

2022年5月5日

0 分で読めます

多くの企業では、ソフトウェア開発全体のセキュリティ管理をCISOやコンプライアンスチームに任せています。しかし、こうした方法では通常、セキュリティに関する検討が開発者から切り離されてしまいます。CISOが開発者にセキュリティタスクを割り当てることはできますが、開発者が日頃からセキュリティを意識していなければ、タスクが見過ごされる可能性があります。このギャップを埋める方法の1つは、セキュリティエンジニアリングのリード(セキュリティチャンピオンに近い役割)を迎えることです。エンジニアリングプロセス全体の一環として、セキュリティを推進する人材です。

先日開催された座談会で、SnykのフィールドCTOであるSimon Mapleが、SurveyMonkey(現在はMomentiveの一部)のセキュリティ、クラウド、データストアエンジニアリング担当シニアディレクター、Craik Pykeと対談しました。急成長する組織で、可視性を高めるツールの活用や、開発者がセキュリティに注力できるようにする「舗装された道」アプローチについて話し合いました。SurveyMonkeyは、開発プロセス全体にセキュリティを組み込むため、Snyk Open Source、Snyk Container、Snyk Codeを活用しています。対談の内容をご紹介します。

一貫性と可視性を確保する

CraikがSurveyMonkeyに入社した当時、同社はマイクロサービスアーキテクチャを採用していました。設計から構築、デプロイ、サポートまで、各チームがそれぞれのサービスに責任を持っていました。その結果、チームは思い思いに作業を進め、各自のパイプラインにプラグインを追加し、好みのツールを使うようになりました。これがトレーサビリティの課題につながりました。開発者がどこからコンテナを取得しているのか、依存関係がいくつあるのかを明確に追跡できなかったのです。この環境でCraikが最も懸念していたのは、オープンソースの管理でした。ライセンスの使用状況を追跡したり、信頼できる帰属表示を作成したりする方法はないかと尋ねました。しかし、すべてを手作業で管理していたため、答えはたいてい「できない」でした。

[開発者はこう言うでしょう]「自分のプロジェクトには依存関係が8万個あります。何を取り込んでいるのか、どうすれば把握できますか?ライセンスを一つひとつ調べないといけないのでしょうか?」私たちはそこから始めました。セキュリティだからといって開発者に何かを押し付けるのではなく、こうした疑問への答えを見つけられるよう支援する必要があったのです。

Craikはこれまでの経験から、まず取り組むべき課題は、可視性の確立とガバナンスの導入だと分かっていました。以前勤めていた会社では、製品を迅速に出荷していましたが、パッケージのバージョンやオープンソースのリスクを把握できる仕組みは、顧客から求められるまで整備されませんでした。そのためSurveyMonkeyでは、可視性を考える前に一貫性に着目しました。開発者がパイプラインの構築を担当グループに任せ、そのグループが管理できるDevOps文化を確立する必要がありました。その考え方が浸透すると、ビルド用の単一パイプラインを簡単に作ることができました。まずはビルド成果物にたどり着くことが第一歩でした。すぐに、パイプラインの外側、つまり開発者が自分のマシンで何をしているかまで可視化できるツールの検討に移りました。

より優れたツールとデータを提供する

開発者は自分で解決策を見つけるのが好きです。自分のマシンやIDEで問題を解決するために必要なものを、自由に取り込むでしょう。Craikは、プロトタイプ作成の段階で開発者が何を取り込んでいるのかを明確にし、定義したいと考えていました。ビルドパイプラインで起きていることを、IDEやコマンドライン上でも再現できるツールを開発者に使ってもらいたかったのです。

「開発者が、ビルドパイプラインと同じツールを自分のマシンでも使えるようにするには、どうすればよいでしょうか?それを特定して導入することは、開発者がパイプラインと同じものだと理解すれば、実際にはすぐに受け入れられました。一貫性が重要です。」

また、開発者に質の高いデータを提供したいと考えていました。たとえば、あるパッケージがプロジェクトに適しているか、それとも別のものを探すべきかを、開発者が簡単に判断できるようにすることです。そのための最善の方法はデータです。Snyk Advisorを利用できると知り、パッケージの人気度や直近の問題などの指標をすぐに確認できれば、開発者は複雑さを理解できます。Craikによると、信頼できるデータを開発者に届け、そのうえで正しい選択をすることを信頼することが、現在の役職を決めた要因の1つでした。

「舗装された道」を作る

次にCraikは、共通のビルドインフラストラクチャの整備に着手しました。共通の成果物リポジトリ(Craikの場合はArtifactoryですが、利用できる選択肢はさまざまです)を使いました。主な目的は、開発者が常にレジストリから成果物を取得するようにすることでした。これは、開発者チームの拡大が、インフラストラクチャの拡大(そして無秩序化)につながる可能性のある急成長組織では、非常に重要なステップです。しかしCraikは、セキュリティチームを妨げになる存在にはしたくありませんでした。開発者にはこう伝えました。「使い慣れた設定ファイルの参照先をこの成果物システムにしてください。必要なものがなければ、システムが取得してくれます。役に立つはずです」。最初は開発者に変更してもらうための働きかけが必要でした。しかし、全員が単一の成果物クラスターを通じて成果物を取得するようになると、何が、いつ、どこに使われているのか、つまりどのバージョンが利用されているのかを把握できるようになりました。

Craikのチームは、開発者がパイプラインの外で作業することも認めていました。ただし、PRを提出しようとすると、ビルドは失敗します。GitHub上でテストを実行するビルドパイプラインは、インターネットから直接取得することを許可されておらず、成果物リポジトリからのみ取得する仕組みでした。そのため、開発者が最初から期待される方法を取り入れ、成果物ストアを使っていれば問題はありません。

開発者にセキュリティを妨げだと思わせなかったのはなぜでしょうか。私たちは親しみやすい方法で進め、最初から最後までインセンティブを活用しました。「単一の成果物リポジトリを使えば、悪意のあるパッケージや不適切なライセンスを心配する必要はありません。取り込む際にスキャンできるからです。問題のあることをしていないか確認できます」と伝えました。すると開発者は、セキュリティを対立する相手ではなく、質問に答えてくれる人たちとして見るようになりました。私たちは妨げるのではなく、支援するためにいるのです。

セキュリティチャンピオンは現場から生まれる

Craikのチームが「舗装された道」を維持する一方で、SurveyMonkeyの開発者の中から徐々にセキュリティチャンピオンが生まれていきました。経験豊富な開発者が、新しいメンバーに成果物リポジトリやPRから兆候を見つける方法、質問がある場合の相談先を教えました。Craikはこれを「開発チームに一次サポートを緩やかに組み込むこと」と呼んでいます。セキュリティチャンピオンのプログラムを正式に設けることはありませんでした。チームに人が加わるにつれ、セキュリティを重視することが自然と身についていったからです。

開発者が自分のコードのセキュリティ監査を担えば、セキュリティチームは開発者が必要なときに支援する存在になれます。Craikによると、優れた「舗装された道」とツールセットがあれば(脆弱性の検出と修正を容易にするSnykのツールも含めて)、必要に応じてセキュリティチームが成果物を再ビルドできるため、開発者の手を煩わせる必要はありません。

「ツールやパイプラインから得られるデータのおかげで、開発者は本当に賢明な判断を下せるようになります。」

責任と目標を共有する

シフトレフトがうまく根付いた文化では、開発者はセキュリティ要件に早い段階で対応したいと考えます。検証によって、収益につながる業務をより迅速に完了できるからです。セキュリティチームが開発者に「セキュリティのためにこの手順を踏まなければなりません」と指示するのではありません。むしろ開発者がセキュリティチームに、「このパッケージに問題があるようです。このまま進めても大丈夫ですか?」と相談します。また、チームは説明責任の共有にも努めています。脆弱性が見逃されたとしても誰かを責めるのではなく、できるだけ早く問題を修正し、その後、そこから何を学んだかを話し合います。

開発者を支援するということは、開発者同士が支え合えるようにすることでもあります。Craikのチームが脆弱性チェックのためにSnykを導入した際、GitHub上でマージを妨げる設定にはしませんでした。その代わり、経験豊富な開発者がコードレビューやPRレビューを通じて、若手開発者を指導できるようにしました。シニア開発者はこう伝えるかもしれません。「この赤いXは問題があるという意味です。技術的にはコードをまだマージできますが、今こういう状態になっています」。初日から厳格に強制するのではなく、協力し合う文化を築きました。SurveyMonkeyの各チームに適したレベルでSnykのツールを段階的に導入することが、最善のアプローチでした。

開発者セキュリティに関する有益な知見をさらに得るには、トーク全編をご覧ください。

セキュアな開発を加速

Snykは開発者とセキュリティチームをつなぎ、スピードとセキュリティを大規模に両立します。

カテゴリー: