ブログに戻る

フォロー&ご登録

セキュリティ対策もエンジニアリングチームのリーダーの仕事です

Sean Leach

Chief Product Architect, Fastly

セキュリティを取り入れた DevSecOps の手法が注目を集めるなか、セキュリティチームはエンジニアリングチームの関心とサポートを得ようと必死です。セキュリティチームとの架け橋になるために、エンジニアリングチームのリーダーは何ができるでしょうか ?この記事では、DevOps の文化、ワークフロー、目標にセキュリティを組み込むのに役立つ4つのアイディアをご紹介します。 

DevOps モデルの優れた点は、アプリケーションに対して責任を持つ2つのチーム (開発と運用) が連携することでアプリケーションのライフサイクルが加速し、より効率的になることです。これまで両チームは別々のサイロに留まっていましたが、今ではアプリケーションの作成とデプロイのプロセスにおいて同等の関係者として認識されています。

さらに現在、エンジニアリングチームは、ユーザーの仕様から設計、開発、運用、そしてそのサイクルの繰り返しに至るまで、DevOps サイクルのあらゆる側面にセキュリティを統合する必要があります。チームが DevSecOps のマインドセットに移行する際、しばしば問題が生じますが、その裏には「セキュリティもプロダクトの成功に関係している」というシンプルな現実があります。

エンジニアリングチームは、ソフトウェアの設計と実装の基本要素として、セキュリティを優先する必要があります。経営陣の関心を引こうと競い合うのではなく、エンジニアリングチームはセキュリティチームやビジネスの関係者とパートナーとしての関係を築かなければなりません。この変化は、セキュリティを単に開発段階に組み込むだけではなく、セキュリティをビジネスの目標達成に向けた全体的な展望に組み込むことも意味します。

そこで、これを実現するための4つの方法をご紹介します。

1. セキュリティを強制せずに推進し、啓蒙する

開発者は安全でないコードを作成したくはありません。ただ、適切なツールがなかったり、脆弱性や安全なパターンに関する知識が不足していたり、あるいはエンジニアリングチームのリーダーがセキュリティを優先せずに新機能の迅速な開発を奨励しているなどの理由で、コードに脆弱性をもたらしてしまうのです。

そこで、開発とデプロイプロセスのすべての段階にセキュリティを組み込む必要があります。セキュリティは DevOps サイクルの中に織り込まれるべきものであり、その出発点は人です。セキュリティエンジニアと開発チームが密接に連携する環境を構築してください。そして、開発チームの中でセキュリティの推進者を育ててください。また、特定の種類の脆弱性に焦点を当てたトレーニングセッションを実施するのも効果的です。

2. 開発プロセスにセキュリティツールを統合する

セキュリティの面で妥協することなく、迅速なイノベーションとリリースの目標を達成する重要な方法の一つは、セキュリティテストとツールを DevOps サイクルの各段階に組み込むことです。lint ツールは、見つけやすい間違いをチェックするのに役立ちます。静的アプリケーションセキュリティテスト (SAST) ツールは、コミット時にコードを解析します。アプリケーションがデプロイに向けて準備されたら、ステージングを行い、動的にテストする必要があります。そしてデプロイ後は、Web アプリケーションファイアウォールでアプリケーションを保護しモニタリングします。

エンジニアは、開発者やセキュリティチームと定期的に連絡を取り合い、ツールを使用して新しいセキュリティチェックを自動化する必要があります。一貫したセキュリティを確保する唯一の方法は、自動化によってテストとコントロールをパイプラインに統合することです。

3. セキュリティに関するインセンティブをエンジニアリングの目標に組み込む

セキュリティチームがセキュリティ監査のために1ヶ月、あるいは1週間の時間を必要とすると、開発に遅れが生じ、DevOps チームとセキュリティチームの目標の間に避けられない対立が生じます。DevOps のスピードに対応するためには、ソフトウェア開発のパイプラインにセキュリティをよりシームレスに統合する必要がありますが、これはエンジニアリングチームの仕事です。

スピードは新たな標準です。企業はデジタルトランスフォーメーションを推進し、パンデミックの環境に適応できるようにすることをエンジニアリングチームに強く求めています。ここ1年、セキュリティがデジタル化やモバイル事業の拡大の妨げになると見なされた場合、エンジニアリングチームは難しい選択を迫られていました。セキュリティの必要性よりもコードのデリバリーを優先したくなるかもしれませんが、セキュリティの組み込みやテストを怠ると、後々まで脆弱性が残り、最終的には生産性のロスや顧客満足度の低下などの被害が発生します。

この問題を解決するため、エンジニアリングチームはセキュリティに関するインセンティブを目標と成果指標 (OKR) に組み込み、すべての開発者とエンジニアが堅牢なコードを作成し、脆弱性を減らすように動機づけする必要があります。

4. エンジニアリングの柔軟性を DevOps に提供する

DevOps について議論する際、継続的インテグレーションと継続的デリバリー (CI/CD) に焦点が当てられることが多いのですが、DevOps チームは、セキュリティ製品やテストからのレポートなどのフィードバックを繰り返し収集し、推奨事項をアプリケーションの次のサイクルに反映させるという、セキュア開発ライフサイクル (SDL) のベストプラクティスも同様に考慮する必要があります。

このサイクルでは、エンジニアリングチームに柔軟性が求められます。アプリケーションやセキュリティチェックを改善するために、フィードバックを取り入れてプロセスやツールを修正する必要があるためです。エンジニアリングチームのリーダーは、DevOps のインフラが急速な変化に対応できる柔軟性を備えていることを確認し、官僚的な承認目的ではなく信頼性の高い変更を実施するための変更承認プロセスを構築する必要があります。この変更承認プロセスがあまりにも煩わしいと、開発者はエンジニアリングチームと協力してセキュリティに取り組む意欲がわかず、企業は開発者がそのプロセスを回避するというリスクを抱えることになります。

柔軟で継続的なテストとモニタリングを可能にするインフラがなければ、コードのセキュリティは保証されません。開発者にテストやセキュリティをうまくかわそうとする気を起こさせずに、セキュリティの原則を強化できるエンジニアリングプロセスが今、必要とされています。なぜなら、反復可能なセキュリティチェックがなければ、DevOps のスピード面でのメリットは、セキュリティギャップや脆弱性によって一掃されてしまうからです。