開発者向けセキュリティトレーニングを効果的に行う3つのヒント
2022年12月1日
0 分で読めます「今はアプリケーションセキュリティの黄金時代です」と、Manicode Securityの創設者でセキュアコーディングのトレーナーでもあるJim Manicoは、第26回のThe Secure Developerポッドキャストで語っています。
Manicoによると、10年前、セキュリティトレーニングは「風変わりな取り組みで、片手間に行うもの」でした。現在では、評価ツールが成熟し、評価に関する優れた文献によって知識を得やすくなり、多くの優秀な人々がセキュアなアプリケーションの開発に取り組んでいます。
黄金時代にあるからといって、セキュリティの問題が解決したわけではありません。何を学ぶべきかがわかり、その教育を提供するためのリソースと意欲があるということです。
この記事では、開発者向けセキュリティ教育プログラムを改善し、アプリケーションセキュリティの黄金時代がもたらすメリットを最大限に活用するための3つのヒントをご紹介します。
1. 明確なセキュリティ要件で学びやすい環境を整える
アプリケーションセキュリティとは何かについて、明確な共通認識がなければ、開発者向けのセキュリティ教育は成り立ちません。
そのためManicoは、明確なセキュリティ要件を定めることが、開発者の教育のために企業ができる最も重要な取り組みの一つだと述べています。「セキュリティ要件を明確に定義したいのです。そうすれば、アプリケーションセキュリティとは何かについて、全員が共通認識を持てます」とManicoは語ります。
多くの人がまずOWASP Top 10を思い浮かべるでしょうが、Manicoはそれを避けることを勧めています。代わりにManicoが推奨するのは、200を超える要件を含むOWASPアプリケーションセキュリティ検証標準です。この標準を使う最大の利点は、チームが最終的にどの程度活用できるかにかかわらず、成果につながることだとManicoは言います。
「大枠では、要件を展開し、それぞれの要件について、フレームワークのどこに該当するのか、自分たちで手作業で対応する必要があるのか、あるいはサードパーティ製のツールで支援できるのかを整理しています」とManicoは語ります。
しかし、チームがそこまで深く掘り下げなくても、得られる価値はあります。「要件を展開したものの、誰も目を通さなかったというケースも見てきました。それでも、技術リーダーがリード開発者たちと4、5時間かけてセキュリティ上の重要事項について話し合い、影響を与えられたため、そのプロセスは役に立ちました」とManicoは語ります。
つまり、セキュリティ要件を検討することで、一定のアプリケーションセキュリティを実現するために開発者とセキュリティチームが何をすべきか、合意を形成できます。チームが可能な限り深く取り組めなくても、共通認識を築くだけで大きな効果があります。
「どのように展開しても、何らかの形で役に立ちます」とManicoは言います。
2. セキュリティチャンピオンを育成し、開発チームの自立を促す
高校や大学の卒業式では、卒業が目標であるにもかかわらず、涙を流す人がいます。感情的な場面であっても、教育者は最終的に、学生が自立し、自分で物事を進め、成功する姿を見たいと願っています。
開発者向けセキュリティ教育も同じです。企業が外部のセキュリティコンサルタントや教育者を招くのは適切ですが、教育者が去った後にチームがどう活動していくかを先回りして考える人を選ぶ必要があります。
PearsonのDevSecOpsリードであるNick Vinsonは、まさにそのように取り組んでいます。VinsonはThe Secure Developerポッドキャストの第84回で、自身の仕事の主な目標は「チームが自立して取り組むために必要なツールと知識を提供すること」だと語っています。
そのためにVinsonのチームは、連携先のチームにセキュリティエンジニアのエキスパートを組み込みます。組み込まれたエンジニアは、変更の作成、テスト、本番環境へのデプロイが可能な、チームに貢献する正式なメンバーとして活動します。
チームに加わったエキスパートは、脅威モデリングを行い、セキュリティリスクや脆弱性を特定します。また、SDLCに自動セキュリティテスト機能を導入するとともに、Vinsonの言葉を借りれば「チームが単にチェック項目を埋めるだけでなく、何をすべきかを理解する」ように支援します。
新たに得た知識をしっかり定着させるため、組み込まれたエキスパートは業務やアドバイスを提供するだけでなく、社内のセキュリティチャンピオンも育成します。「それが私たちの主な責任です」とVinsonは言います。
セキュリティエンジニアをチームに組み込むことで、Vinsonは2つの目標を同時に達成できます。アプリケーションセキュリティをより迅速に強化し、セキュアコーディングの実践を継続させるセキュリティチャンピオンを育成することです。
3. 開発者からの信頼を得るために、信頼性を築く
開発者にセキュリティを教えることの効果に、懐疑的な人は少なくありません。開発者はセキュリティを単なるチェック項目として扱い、本来の業務の妨げだと考えるのではないでしょうか。
Amazonのセキュリティエンジニア、Jet Andersonは、The Secure Developerポッドキャストの第98回で率直にこう反論しています。「そんなのはでたらめです。まったくそうは思いません」
こうした見方とは反対に、Andersonは開発者の中にセキュリティへの熱意を感じています。「開発者は品質の重要性をよく理解し、良い品質を求め、正しいことをしたいと思っています」とAndersonは言います。そして、正しいことをするうえでセキュリティは欠かせません。
Andersonによると、開発者とセキュリティエンジニアの間に隔たりがある理由は、開発者の無関心ではなく、相互理解が不足していることです。
「開発者が気にかけていないわけではありません」とAndersonは言います。「情報セキュリティに携わる人たちは、ソフトウェア開発について深い知識を持っているとは限りません。そのため、リスクや不具合を正確に説明するための信頼性や、適切な言葉を持ち合わせていないことがあります」
Andersonはその例として「脆弱性」という言葉を挙げています。情報セキュリティの分野では一般的で、さまざまな文脈で使われますが、開発者には別の用語のほうが伝わりやすい場合があります。Andersonによると、セキュリティ担当者が発見するものは「欠陥」と表現するほうが適切なことが多く、悪用手法が見つかった場合にのみ「脆弱性」と呼ぶべきです。
「こうした細かな違いも、文化を変える一部です」とAndersonは言います。一見小さなことでも、さまざまな状況で言葉を変えていくことで、セキュリティエンジニアと開発者の相互理解を深める機会が増えます。共通認識が築かれれば、開発者向け教育はより大きな成果を上げられます。
開発者の思考にまでシフトレフトする
シフトレフトとは、従来はSDLCの終盤で行われていたセキュリティを、SDLCの初期段階へと前倒しする取り組みです。しかしAndersonによると、SDLCの最初の段階よりもさらに前へシフトレフトできます。「開発者の頭の中より早い段階は、思いつきません」とAndersonは言います。
シフトレフトを目指し、アプリケーション設計の根幹にセキュリティを取り入れたい組織は、そうすることの重要性と、現在の出発点の両方を把握する必要があります。多くの開発者は、セキュリティについて何も学ばないまま大学を卒業したり、認定資格を取得したりすることがあります。シフトレフトを実現するには、開発者向けセキュリティ教育が不可欠です。
セキュリティの専門家によるヒントをもっと知りたい方は、今すぐThe Secure Developerポッドキャストを購読しましょう。


