DevOpsが進化を続けるなか、セキュリティのプラクティスも絶えず変化・進化しています。DevOpsのプラクティスとITセキュリティ(DevSecOpsとも呼ばれます)を統合することで、企業は開発プロセスから運用、デプロイに至るまで、最も重要なアプリケーションや資産を強固な防御の連鎖で守ることができます。
多くの組織が、ソフトウェア開発とセキュリティを統合するアプローチとしてDevSecOpsへ移行しています。アプリケーションのライフサイクル全体にセキュリティ対策を適用するだけでなく、高いレベルのアプリケーションセキュリティを維持しながら開発を迅速化するには、両チームを統合することも不可欠です。DevOpsとITセキュリティを統合することで、企業は脆弱性からシステムを守りつつ、時間、費用、リソースも節約できます。
DevSecOpsとは?
DevSecOps(development security operations)とは、開発のあらゆる段階にセキュリティを組み込む、アプリケーション開発・デプロイのハイブリッドなアプローチです。これは、問題が発生した際にチームへ警告できるよう、早い段階からセキュリティツールを導入することを意味します。また、自動テスト技術を取り入れ、本番環境に投入する前にソフトウェアの安全性を高めることも意味します。
DevSecOpsが重要なのはなぜか?
従来のデプロイ手法は、新たに出現するセキュリティ脅威に対応しきれていないため、機密データを扱う組織には、より高い基準が求められています。さらに、組織はクラウドコンピューティング、人工知能(AI)、ブロックチェーン、モノのインターネット(IoT)に多額の投資を行っており、今や何としても守るべき価値あるデータを大量に抱えています。
しかし、こうした新しいテクノロジーの可能性を最大限に引き出すには、速度やパフォーマンスを犠牲にすることなく、脅威の検出に追随できなければなりません。そのためには、アプリケーションを稼働させる前に本番環境を保護する、迅速で効率的なプロセスを導入する必要があります。
実際にはどのような形になるのでしょうか?
DevSecOpsを実践する例としては、アプリケーションの許可リスト登録や、自動コード分析の導入などが挙げられます。
アプリケーションの許可リスト登録
この戦略では、コンピューターシステム上で実行できるソフトウェアを認証済みのものに限定します。管理者が明示的に承認していないコードを拒否することで、悪意のあるプログラムをブロックします。アプリケーションの許可リスト登録は、ウイルス対策ソリューションよりも高い保護を提供するだけでなく、誤検知も排除します。その結果、管理者がセキュリティアラートの管理に費やす時間を減らせます。
また、多くの企業では、アプリケーションの許可リスト登録を導入すると、従業員が自分のコンピューターをより細かく管理できることを歓迎するため、導入率が急上昇しています。
自動コード分析の導入
コード分析ツールは、適切なログ記録が実装されているか、クロスサイトスクリプティング攻撃に対して脆弱でないかといった、一般的なプログラミングエラーをアプリケーションについて検査できます。こうしたプログラムにより、開発者はアプリケーションを本番環境へデプロイする前に問題を修正でき、組織を危険にさらしかねない、恥ずべきミスを回避できます。
関連記事: 2021年のDevOps向けベストツール&ソフトウェア
DevSecOps導入前に解決すべき課題
DevOps環境では、自動化が重要な実現手段となります。セキュリティなどの業務を自動化することで、運用担当者はより重要な他の課題に集中できるようになると同時に、規制への継続的なコンプライアンスも確保できます。
このプロセスは、コンプライアンスの自動化、またはコンプライアンス・アズ・コードと呼ばれます。しかし、企業でDevSecOpsを導入するには、いくつかの課題に対処しなければなりません。
DevOpsツールとITセキュリティツールの統合不足
組織では通常、本番環境へ変更をデプロイするツールと、脆弱性を検出するツールが異なります。一方のツールセットがビジネスリスクを管理し、もう一方がコンピューターの問題を監視するのです。DevOpsツールとセキュリティツールを統合すれば、本来は手作業となる多くのセキュリティタスクを自動化できます。
ソフトウェア開発ライフサイクル/パイプラインのプラクティス
開発者はコードを記述する際、安全なコーディングのベストプラクティスに従うべきです。これには、ISO/IEC 27002、NIST 800-53、SANS 20 Critical Controlsなどの標準への準拠、バッファーオーバーフロー攻撃に対抗するStackGuardのような機能の組み込み、静的ソースコード分析を用いたテスト段階でのコードの重要箇所のレビューなどが含まれます。
課題の検出/対応メカニズム
課題追跡システムは、組織内のSIEM(セキュリティ情報イベント管理)製品、IDS/IPS(侵入検知システム/侵入防止システム)デバイス、その他のアラートソリューションが生成するセキュリティアラートを監視する効果的な手段になります。誤検知と潜在的なリスクの両方に迅速に対処する自動対応を用意すれば、重要なイベントを見逃さずに済みます。
責任範囲の明確化
製品の提供や運用に関する特定の側面について責任者を割り当てることは、チームが質問をしたり担当領域を変更したりする際に、どこへ相談すればよいかを把握するために必要です。責任範囲の明確化には、インシデント対応や脅威ハンティングの機会(ネットワークの脆弱性を特定し、最適なシステム監視プロセスを判断することなど)を含む責任の割り当ても伴います。
セキュリティ意識
組織が業界の動向にどれだけ適切かつ熱心に従っていても、変化は避けられません。効果を維持し、攻撃対象領域を最小限に抑えるには、データ侵害、合併・買収、さらには政府の指示による変化など、環境に変化が生じた際に組織も対応を調整する必要があります。
ITセキュリティはなぜDevSecOpsサイクルに不可欠なのか?
DevSecOpsは、開発、運用、情報セキュリティの各チームが協力して作り上げたものです。ITセキュリティが関与しなければ、DevSecOpsサイクルは成功しません。開発プロセスの早い段階からセキュリティを関与させることで、より優れたセキュリティテスト、責任の明確化、関係する全チーム間の強固なコミュニケーションが可能になります。
このような協力は、ソフトウェア開発の各段階で、誰がどのタスクを担当するのかを明確にすることで実現します。
QA(品質保証)は常にソフトウェア開発に不可欠な要素でしたが、DevSecOpsでは、ペネトレーションテストや脆弱性評価など、QA関連の活動にさらに重点を置く必要があります。これらを正しく実装すれば、データ侵害、コンプライアンス違反、ダウンタイムといった、企業が日々時間と費用を失う原因となるインシデントを大幅に減らせます。
関連記事: DevSecOpsガイド:その概要と必要とされる理由
ITセキュリティとDevSecOpsを統合するためのベストプラクティス
以下は、DevSecOpsとITセキュリティを統合するための8つのベストプラクティスです。
ツールとプロセスを自動化する
効率を最大化するため、セキュリティチームは可能な限りツールとプロセスを自動化すべきです。これにより、対応が必要な問題を迅速に特定しやすくなり、付加価値を生まない作業に費やす時間を削減できます。
組織全体で文化の変革を促す
DevSecOpsの取り組みを成功させるには、開発担当者とセキュリティ担当者が、別々の2つのグループではなく、結束した1つのチームとして協力しなければなりません。
早期かつ頻繁にテストする
すべての新機能やアプリケーションは、開発ライフサイクルを通じて厳格なテストを受ける必要があります。特にDevSecOps環境では、自動テストを要件に組み込むことが重要です。
先回りしてコミュニケーションを取る
開発チームとセキュリティチームは、新機能やコードのチェックインについて定期的かつ先回りして情報を共有し、組織に悪影響を及ぼす前に潜在的な脆弱性を特定すべきです。
静的アプリケーションセキュリティテスト(SAST)を導入する
SASTは、自動コード分析と手動レビューを組み合わせて、実行時に悪用される可能性のある問題を特定し、アプリケーションのデプロイ前に脆弱性を検出します。SASTは通常、開発・デプロイの各段階で重要なセキュリティチェックを確実に実施するため、継続的インテグレーション/継続的デリバリー(CI/CD)パイプラインに統合されます。
動的アプリケーションセキュリティテスト(DAST)を導入する
静的アプリケーションセキュリティテストのツールやスキャナーは脆弱性の特定に有効ですが、コードレベルの欠陥しか特定できません。つまり、実行時の挙動は考慮されないのです。DASTツールは一方で、アプリケーションが実際の本番環境でどのように動作しているかに基づき、実行時の情報を使って弱点を動的に特定します。
インタラクティブアプリケーションセキュリティテスト(IAST)を導入する
IASTを使えば、テスターはスクリプトを自動的に実行でき、手動テストだけでは実現できない、より拡張性と効率に優れたセキュリティテストのアプローチを提供できます。
ただし、手動テストの代替ではなく、補完として使用すべきです。これは一部には、IASTが本質的に柔軟性に欠ける構造を持つためです。すべてのスクリプトは、テスト可能なソフトウェアとその構成方法を定める、あらかじめ定義されたルールに従わなければなりません。
サービスとしてのアプリケーションセキュリティテスト(ASTaaS)を導入する
ここも、CI/CDへの移行によってアプリケーションセキュリティプログラムを強化できる領域です。このモデルを実装する方法の1つは、ASTaaSをCI/CDパイプラインに統合することです。
アプリケーションを納品後に高価なサードパーティ製スキャナーにかけるのではなく、スキャナーをビルドパイプラインに統合しましょう。そうすれば、脆弱性がまだ簡単に修正できる段階で特定できます。
企業におけるDevSecOpsの将来
ITセキュリティの未来はDevSecOpsにあります。ただし、それはセキュリティの専門家とソフトウェア開発者を開発サイクルに統合する企業に限られます。DevSecOpsが重要なのは、組織が高速なペースでアップデート、修正、新機能を提供し続けながら、サイバー攻撃を防止できる手段だからです。
企業にはこれまで以上に、セキュリティを犠牲にすることなく、価値を継続的に提供する能力が求められています。DevSecOpsを統合しなければ、企業はリスクの露呈につながる脆弱性(攻撃者には容易に検出されます)に苦しみ続けるでしょう。しかし、DevSecOpsの手順を整備すれば、サイバー攻撃が成功する前に阻止できる可能性が大幅に高まります。