DevSecOpsは、Development(開発) 、Security(セキュリティー)、Operations(運用)の略で、初期設計から統合、テスト、提供、デプロイメントに至るまで、ソフトウェア開発ライフサイクルのあらゆる段階でセキュリティーとセキュリティープラクティスの統合を自動化するアプリケーション開発プラクティスです。
DevSecOpsは、組織のセキュリティー開発アプローチにおける自然かつ必要な進化を表しています。これまで、セキュリティーは開発サイクルの最後に、ほとんど後付けでソフトウェアに「追加」されるもので、別のセキュリティチームがこれらのセキュリティー対策を適用し、別の品質保証(QA)チームがこれらの対策をテストを行っていました。
ソフトウェア更新が年に1回または2回リリースされるだけであれば、従来のセキュリティー問題への対処能力でも管理可能でした。しかし、ソフトウェア開発者がアジャイルおよびDevOpsプラクティスを採用し、ソフトウェア開発サイクルを数週間、さらには数日に短縮することを目指したため、これまでのセキュリティーのような「後付け」のアプローチでは許容できないボトルネックが発生しました。
DevSecOpsは、アプリケーションとインフラストラクチャーのセキュリティーをアジャイルおよびDevOpsのプロセスとツールにシームレスに統合するため、セキュリティーに関する問題が発生した場合、より簡単、より迅速、かつ低コストで修正を行い、実稼働環境に導入する前に対処します。
さらに、DevSecOpsにより、アプリケーションとインフラストラクチャーのセキュリティーはセキュリティーのサイロの単独責任ではなく、開発チーム、セキュリティーチーム、IT運用チームの共有責任となります。ソフトウェア開発サイクルを遅らせることなく安全なソフトウェアの提供を自動化することで、DevSecOpsのモットーである「ソフトウェアをより安全に、より早く」を実現します。
インテリジェントな自動化がビジネス・オペレーションに競争上の優位性をもたらす方法をご覧ください。
よりスマートなAIOpsに関する電子ブックを読む
DevSecOpsの主な2つのメリットは、速度とセキュリティーです。 そのため、開発チームは、より優れた、より安全なコードを、より早く、より安価に提供できます。
「DevSecOpsの目的と意図は、必要な安全性を損なうことなく最高レベルのコンテキストを保持する人々に対してセキュリティーに関する決定を迅速かつ大規模に、かつ安全に配布することであり、全員がセキュリティーに対する責任を負うという考え方を構築することです」と「DevSecOps Manifesto」の共著者であるShannon Lietz氏は説明します。
ソフトウェアが非DevSecOps環境で開発される場合、セキュリティー上の問題が大幅な時間遅延につながる可能性があります。コードとセキュリティーに関する問題の修正には大幅な時間と費用がかかる可能性があります。DevSecOpsを迅速かつ安全に実施することで事後にセキュリティー問題に対処するためのプロセスを繰り返す必要性が最小限に抑えられるため、時間とコストを削減できます。
統合セキュリティーによって重複レビューや不必要な再構築が排除され、コードの安全性が高まるため、このプロセスはより効率的で費用対効果が高まります。
DevSecOpsでは、開発サイクルの開始時からサイバーセキュリティープロセスが導入されます。開発サイクル全体を通して、コードはセキュリティー上の問題についてレビュー、監査、スキャン、テストされ、問題を特定すると、すぐに対処します。セキュリティー上の問題は追加の依存関係が導入される前に修正されます。サイクルの早い段階で保護テクノロジーを用いてセキュリティーの問題を特定および実装することで、修正にかかるコストは低くなります。
さらに、開発、セキュリティー、運用チーム間の連携が強化されると、インシデントや問題が発生した際の組織の対応が向上します。セキュリティーチームは、DevSecOpsプラクティスにより、脆弱性にパッチを適用する時間が短縮され、より価値の高い作業に集中できるようになります。これらのプラクティスによりコンプライアンスも確保および簡素化され、セキュリティーのためにアプリケーション開発プロジェクトを新たに変更する必要がなくなります。
DevSecOpsの主なメリットは、新たに特定されたセキュリティーの脆弱性を迅速に管理できることです。DevSecOpsでは脆弱性のスキャンとパッチ適用がリリースサイクルに統合されるため、一般的な脆弱性と露出(CVE)を特定してパッチ適用する機能は低下します。この機能により、攻撃者が公開運用システムの脆弱性を悪用できる範囲が制限されます。
組織が継続的インテグレーション/継続的デリバリーパイプラインを使用してソフトウェアを出荷する場合、サイバーセキュリティーテストを運用チーム向けの自動テストスイートに統合できます。
セキュリティーチェックの自動化は、プロジェクトと組織の目標に大きく依存します。自動テストにより、組み込まれたソフトウェアの依存関係が適切なパッチレベルであることを確認でき、さらに、ソフトウェアのセキュリティー・ユニットテスト合格を裏付けます。さらに、最終更新が運用環境にプロモートされる前に、静的および動的分析を使用してコードをテストし、保護することができます。
組織の成熟度に伴い、セキュリティー体制の成熟度も高まります。DevSecOpsは、反復可能で適応性のあるプロセスに適しています。DevSecOpsは、環境が変化して新しい要件に適応する際、セキュリティーが環境全体に一貫して適用されるようにします。成熟度が高いDevSecOpsの実装には、堅牢な自動化、構成管理、オーケストレーション、コンテナ、不変のインフラストラクチャー、さらにはサーバーレスコンピューティング環境が含まれます。
DevSecOpsは、開発、提供、運用プロセスにセキュリティー管理を自然に組み込む必要があります。
「シフトレフト」はDevSecOpsの合言葉です。これは、ソフトウェアエンジニアに、DevOps(提供)プロセスの中の右側(完了時)より左側(開始時)の上流工程でセキュリティー対策をするよう奨励するものです。DevSecOps環境では、セキュリティーは初期から開発プロセスの不可欠な部分です。
DevSecOpsを採用している組織では、サイバーセキュリティーのアーキテクトやエンジニアが開発チームの一員として参加しています。 彼らの仕事は、スタック内のすべてのコンポーネント、すべてのコンフィギュレーション項目にパッチが適用され、安全にコンフィギュレーションされ、文書化されているか確認することです。
シフトレフトにより、DevSecOpsチームはセキュリティーリスクと漏洩を早期に特定し、これらのセキュリティー脅威に即座に対処することができます。開発チームは製品を効率的に構築することを考慮しているだけでなく、製品を構築する際にセキュリティーの実装も行っています。
セキュリティーはエンジニアリングとコンプライアンスの組み合わせです。組織は、開発エンジニア、運用チーム、コンプライアンスチーム間で連携を形成し、組織内の全員が会社のセキュリティ体制を理解し、同じ基準に従うようにする必要があります。
提供プロセスに関わる人は全員、アプリケーションのセキュリティーの基本原則に精通している必要があります。Open Web Application Security Project(OWASP)のトップ10、アプリケーション・セキュリティーテスト、およびその他のセキュリティーエンジニアリング・プラクティスに関する理解が必要です。開発者は、脅威モデル、コンプライアンスのチェック理解し、リスク、危険性を測定、セキュリティー制御を実装する方法に関して実用的な知識を持っている必要があります。
優れたリーダーシップは、組織内の変化を促進する良い文化を育みます。DevSecOpsでは、プロセスのセキュリティーと製品の所有権の責任を伝達することが重要かつ不可欠です。そうして初めて、開発者とエンジニアはプロセス所有者となり、自分の作業に責任を負うことができます。
DevSecOps運用チームは、チームと現在のプロジェクトに適したテクノロジーとプロトコルを使用して、自分たちに適したシステムを作成する必要があります。チームがニーズに合ったワークフロー環境を作成できるようにすることで、チームはプロジェクトの結果に投資する利害関係者になります。
DevSecOpsプロセスにトレーサビリティ、監査可能性、可視性を実装することで、より深い洞察とより安全な環境につながります。
必要なROIを実現するように設計された、統合、AI、自動化機能の包括的な IBMポートフォリオをご覧ください。
IBM UrbanCodeがオンプレミス、クラウド、メインフレームアプリケーションのあらゆる組み合わせに対してソフトウェアの提供を高速化および最適化する方法についてはこちらです。
強力なDevOpsソフトウェアを活用して、複数のデバイス、環境、クラウドにわたってセキュリティーが強化されたクラウドネイティブアプリを構築、展開、管理します。