セキュリティ・トレーニングには、時代遅れのスライド、当たり前のアドバイス、誰も覚えていないクイズといった評判がある。もしそれがあなたのプログラムであれば、あなたの開発者たちはボーッとしていて、脆弱性をすり抜けてしまうでしょう。目標は、すべてのエンジニアをセキュリティの専門家にすることではない。あなたのアプリやパイプラインを壊すようなコードを書かなくなるように、十分な意識を持たせることです。このセクションでは、開発者が実際に知っておくべきこと、時間を無駄にすることなくそれを教える方法、OWASP Top 10だけでは十分でない理由を説明します。また、なぜ OWASP Top 10 だけでは十分でないのかも説明します。おまけ:開発者が何も覚える必要がないように、セキュリティをスタックに組み込む方法について説明します。
プレースホルダ画像 画像の説明2つの開発者トレーニングセッションを並べてみました。1つは退屈そうな顔をしてパワーポイントを使うもの、もう1つは安全なサンドボックス環境で実際にコーディングを行うものです。
開発者が実際に知っておくべきこと、そして今は無視しても大丈夫なこと
開発チームはCVEデータベースを研究したり、すべてのXSSペイロードを記憶したりする必要はない。必要なのはコンテキストだ。なぜこの入力を検証しなければならないのか。なぜその依存関係が危険なのか。信頼されていないデータの取り扱い、秘密の保存、コードレビューにおける安全でないパターンの発見など、日々の業務に応用できる概念を教える。理論的なエクスプロイトをスキップして、PRに現れるものに集中する。
トレーニングを定着させる役割に特化し、実践し、退屈させない
最高のトレーニングは、開発者の学習方法にマッチしています。バックエンドエンジニアには、フロントエンドチームと同じレッスンは必要ない。モバイル開発者には、API開発者とは異なるリスクがあります。役割に特化したラボ、短いインタラクティブな演習、自社のコードベースからの実際のバグを使いましょう。実践的で、今日から適用できるものを提供し、企業のコンプライアンス劇場のような匂いのするものは避けましょう。
OWASPトップ10だけでは不十分な理由
そう、OWASPトップ10は素晴らしい出発点だ。しかし、トレーニングカリキュラムとしては時代遅れでもある。CI/CDのサプライチェーン攻撃、Gitから漏れた秘密、安全でないクラウド設定といった最新のリスクをカバーしていない。さらに悪いことに、SQLインジェクションについて学んだだけで、開発者は「終わった」と思ってしまう可能性がある。トレーニングは、技術スタックや脅威の状況に合わせて進化させる必要がある。
スタックの安全なデフォルト
どんなに訓練された開発者でもミスは犯す。だからこそ、安全なデフォルトが重要なのだ。セキュアな方法を簡単な方法にしましょう。リンターをセキュリティルールで事前設定する。プレコミットフックにシークレットスキャナを追加する。IAMロールをロックダウンするテンプレートを使い、Terraformでまともなデフォルトを強制する。スタックが力仕事をするとき、トレーニングは唯一の防御ではなく、強化になる。
洞察開発者のセキュリティ・トレーニングは宿題のように感じるべきではない。レベルアップのように感じるべきだ。トレーニングは、常に鋭く、実践的で、PR に実際に現れるリスクを中心に組み立てられるようにする。次に、スピードやチームの士気を低下させないセキュリティ文化を構築する方法を見てみよう。