DevSecOpsとは、開発チームと運用チームが開発サイクルの全工程で連携する「DevOps」に、セキュリティを融合させた考え方です。
柔軟かつスピーディな開発が求められると同時にセキュリティの重要性も高まっている今、「DevSecOps」の考え方が注目されています。
本記事では、DevSecOpsの基礎知識から、実現するための方法、注意点までを解説します。
➡︎【資料ダウンロード】DXを加速させる「アジャイル手法」の教科書
目次
DevSecOpsとは、ソフトウェアやシステムの開発サイクルの全工程で開発(Development)と運用(Operation)が連携する「DevOps」に、セキュリティ(Security)を融合させた考え方です。
従来のウォーターフォール開発では、開発の最終段階にセキュリティチームが加わり、セキュリティ対策を施していました。しかし、DevOpsやアジャイル開発など、開発サイクルを1~4週間といった短期間で回す手法が採用されるようになると、従来の追加型のセキュリティ対策ではプロジェクトの遅延を招くという問題が浮上しました。
そこで登場したのが、DevSecOpsです。DevSecOpsでは、開発からリリース、運用までの全工程にセキュリティ対策を統合し、開発チーム、運用チーム、セキュリティチームの全員が、共同でセキュリティに責任を持ちます。
これにより、安全なシステムやソフトウェアを迅速かつ低コストで届けられるようになりました。
★アジャイル開発について詳しくはこちら
➡︎【資料ダウンロード】DXを加速させる「アジャイル手法」の教科書
DevOpsとは、開発(Development)と運用(Operations)を組み合わせた言葉です。
開発と運用は、それぞれ「新機能の追加」と「システムの安定稼働」という異なるミッションを有しているため、両チームは対立しがちです。これに対してDevOpsは、開発プロセスや組織文化を変革し、開発チームと運用チームの連携を促します。
DevOpsの考え方を取り入れて開発と運用が連携することで、価値の高いソフトウェアを迅速に市場に届けることができます。
★DevOpsについて詳しくはこちら
DevOpsでは、開発チームと運用チームの連携によるスピーディな開発を目指します。DevSecOpsでは、この連携にセキュリティチームも加わります。
開発チーム、運用チーム、そしてセキュリティチームが開発サイクルの全工程において連携することで、開発の初期段階からセキュリティが組み込まれ、スピードを落とすことなく安全性の高いソフトウェアを開発できます。
DevOpsには、開発期間を短縮し、リリース頻度を高め、価値の高いソフトウェアを迅速に市場に届けられるメリットがあります。
一方で、要件定義からリリース、運用までのサイクルを短期間で繰り返すため、セキュリティ対策が疎かになる、もしくはリリースの度にテストが必要になることで工数が増えるという問題があります。
そのため、開発サイクルの初期段階からセキュリティチームが加わり、全工程にわたってセキュリティを組み込んだ開発・運用ができるDevSecOpsを導入する必要があるのです。
IPAが発表した『DX白書2023』によると、DX実現に向けたITシステムの開発手法としてDevSecOpsを活用している日本企業(「全社的に活用している」「事業部で活用している」の合計)は、わずか9.1%にとどまります。
一方、米国を見ると52.9%と5割を超えています。日本のDevSecOpsの活用状況は、米国に比して大幅な遅れをとっていると言わざるをえません。
DX(デジタルトランスフォーメーション)とは、デジタル技術の浸透によって人々の生活をより良いものへと変革することです。企業においてDXは、業務フローの改善や新たなビジネスモデルの創出のみならず、レガシーシステムからの脱却や企業風土の変革をも意味します。
日本企業におけるDXを推進するためにも、積極的なDevSecOpsの活用が期待されます。
★DXについて詳しくはこちら
★DX推進に関わるセキュリティリスクについて詳しくはこちら
➡︎【資料ダウンロード】さまざまな業界のDX推進事例をわかりやすく解説「DX事例集」<2024年版>
DevSecOpsには、主に「セキュリティの強化」「セキュリティとアジリティの両立」「ビジネス需要への柔軟な対応」という3つのメリットがあります。
DevSecOpsでは、開発サイクルの各段階でセキュリティ対策を組み込むため、脆弱性を早期に発見して対処することが可能です。そのため、脅威を最小限に抑えてセキュリティを強化することができます。
スピードと価値の向上ばかりが重視されがちな短期間の開発サイクルにおいて、「セキュリティの強化」というメリットはDevSecOpsの最大の強みといえます。
DevSecOpsでは、安全性を重視しながら、開発スピードを維持することも可能です。検知したセキュリティリスクを都度修正することで手戻りを最小化し、開発スピードを向上させることができます。
顧客のニーズやテクノロジーが日々変化する環境において、ビジネス需要に柔軟に対応できることも、DevSecOpsの大きなメリットのひとつです。
DevSecOpsでは、開発・運用・セキュリティのチームが一体となってコミュニケーションをとりながら、安全なソフトウェア開発を進めていきます。このため、各チームが独立して開発を進める手法と比べて、迅速かつ柔軟にニーズに応じた修正や変更に対応できます。
➡︎【資料ダウンロード】DXを加速させる「アジャイル手法」の教科書
米国国防総省が公開している DevSecOps に関するホワイトペーパー 『DoD Enterprise DevSecOps Reference Design』では、DevSecOpsを支える「4つの柱」として、「組織」「プロセス」「テクノロジー」「ガバナンス」を挙げています。DevSecOpsを実現するには、これら4つの要素が必要です。
DevSecOpsに取り組む組織はまず、組織文化を変える必要があります。
チーム全員でセキュリティに対する責任を共有することを確認し、コミュニケーションとコラボレーションを強化しましょう。また、チームで共同作業ができるよう、実用的なセキュリティ・品質保証(QA)情報を共有できる環境を整えることも重要です。
心理的安全性のある文化を醸成すること、成功と失敗の両方から学ぶこと、システム設計の改善やインシデント対応能力を強化することも求められます。フィードバック受け入れて、新要件に対応できる組織を作りましょう。
DevSecOpsにおけるプロセス設計は、チーム全体の協働によるものでなくてはなりません。テクノロジーやツールを駆使したプロセスの自動化は必須ですが、ときには人の介在も必要です。
小さく始めて、プロセスを繰り返す中で改善を重ねましょう。DevSecOpsでは、テスト駆動型の開発とサイクルの反復によって継続的に改善を図ります。
テクノロジーの例としては、各種ツールの適用やクラウド・コンテナ技術の活用などが挙げられます。
開発サイクルを自動化する技術や、インフラ環境のコード化(IaC:Infrastructure as Code)による管理の自動化、セキュリティポリシーのコード化(SaC:Security as Code)によるコンプライアンスチェックや監査の自動化も取り入れましょう。
テクノロジーの導入は、開発サイクルを短縮し、効率化するために不可欠な要素です。
DevSecOpsでは、組み込み型のガバナンス制御を行います。統一されたポリシーを適用すること、データ駆動型の検証を行うこと、ガバナンスの視認性を高めることも重要です。
DevSecOpsのガバナンスにおいては、運用とモニタリングも含めた開発サイクルの全工程で、積極的な評価とリスクマネジメントが求められます。
➡︎【資料ダウンロード】DXを加速させる「アジャイル手法」の教科書
DevSecOpsを実現するためのアプローチは、主に「シフトレフト」「セキュリティの自動化」「セキュリティ文化の醸成」「継続的な監視・改善」の4つです。
シフトレフトは、セキュリティ対策を組み込む段階を、開発プロセスの右から左へと移動させるアプローチです。
従来のセキュリティ対策は、プロセスの最終段階、つまり開発プロセスの一番右側で施されるものでした。DevSecOpsは、これを左側へ移動させて、開発プロセスの初期段階からセキュリティ対策を組み込む考え方です。
プロセスの序盤からセキュリティチームが開発に加わり、開発チームはセキュリティを実装しながらシステムを構築します。
セキュリティとアジリティを両立するには、セキュリティの自動化が欠かせません。
開発スピードを落とさずにセキュリティを開発プロセスに組み込めるよう、セキュリティ機能を搭載した統合開発環境や自動セキュリティテストを活用するとよいでしょう。
従来は、開発・運用・セキュリティは別々のチームが担っていました。したがって、「セキュリティはセキュリティチームが担うもの」という感覚が強く、開発チームや運用チームのセキュリティ理解はあまり深くありませんでした。
DevSecOpsは、開発・運用チームもセキュリティチームと同様に、セキュリティについて責任を負うという考えを前提としています。
セキュリティ文化を醸成するには、ツールの導入だけでは足りません。セキュリティ教育やトレーニングを通じて、セキュリティをチーム全体の文化として共有できるようにしましょう。
DevSecOpsを実現するには、継続的な監視・改善のアプローチも効果的です。
DevSecOpsのもとでは、開発サイクルの反復によってプロダクトの安全性と品質が向上していきます。このため、開発段階だけでなく運用段階でも、セキュリティを継続的に監視する必要があります。
監視を続けるなかでセキュリティの脆弱性が見つかるたびに改善し、セキュリティを強化するアプローチをとりましょう。
➡︎【資料ダウンロード】DXを加速させる「アジャイル手法」の教科書
DevSecOpsを実現するには、ツールを活用してセキュリティ対策を最大限自動化することが重要です。DevSecOpsを実装するツールを4種類紹介します。
SAST(Static Application Security Testing:静的アプリケーションセキュリティテスト)は、チームが開発したソースコードをスキャンして、静止状態でコーディングエラーやセキュリティの脆弱性を検出するツールです。
開発の初期段階の設計・構築工程でSASTを使用することで、開発チームの安全なコーディングを助け、シフトレフトを実現できます。
SCA(Software Composition Analysis:ソフトウェアコンポジション解析)は、オープンソース・コンポーネントの既知の脆弱性を特定するためのツールです。このツールでは、パッチ適用が必要な古いコンポーネントか否か、適用できるパッチがあるか否かも判定できます。
SASTは主に開発サイクルの初期段階に用いられるのに対し、SCAは設計工程から運用工程にかけて継続的に用いられます。
DAST(Dynamic Application Security Testing:動的アプリケーションセキュリティテスト)は、ソースコードにアクセスしたりソースプログラムを可視化したりせずに、実行中のアプリケーションを検査するテストツールです。
外部ハッカーによるアプリケーションへの侵入や攻撃をシミュレートすることで、SASTでは検出できないセキュリティ上の脆弱性を発見します。
DASTは、QA環境から運用までの工程で用いられます。
IAST(Interactive Application Security Testing:対話型アプリケーションセキュリティテスト)は、アプリケーションの実行中の挙動を監視し、セキュリティ上の欠陥や脆弱性を発見するためのツールです。
IASTは、SASTとDASTのハイブリッドなテストツールで、アプリケーションの実行中にリアルタイムでコードに含まれる脆弱性を発見できます。DevSecOpsが目指す迅速な開発サイクルを実現できるツールです。
➡︎【資料ダウンロード】DXを加速させる「アジャイル手法」の教科書
最後に、DevSecOpsを実行する上での注意点について解説します。
開発サイクルにセキュリティ対策を組み込むことでセキュリティが強化できたとしても、それによって開発・運用のサイクルが停滞してしまっては、DevSecOpsのメリットが損なわれてしまいます。
自動化の仕組みやツールの活用、組織体制やルールを整備することで、開発・運用のサイクルを効率的に循環させる工夫が必要です。
一方で、ツールに頼りすぎてしまうことも要注意です。ツールの導入は目的ではなく、手段でしかありません。
単にツールを導入して満足するのではなく、ツールを導入する目的からセキュリティ意識、チームの課題や目標、ポリシーまでを、組織全体で共有しておくことが大切です。
➡︎【資料ダウンロード】DXを加速させる「アジャイル手法」の教科書
DevSecOpsは、開発プロセスの初期段階からセキュリティを組み込み、開発・運用・セキュリティチームの協働によって、セキュリティとアジリティの両立を実現する考え方です。
DevSecOpsを実装するには、ツールの導入のみならず、組織文化の変革も不可欠です。DXを推進する上でも、是非DevSecOpsを取り入れてみてください。
➡︎【資料ダウンロード】DXを加速させる「アジャイル手法」の教科書
モンスターラボは、約20年にわたるサービス・プロダクト開発実績から得られたデジタル領域の知見や技術力を活かし、デジタルプロダクト開発事業を展開しています。
先端テクノロジーに対応した高度なIT人材があらゆるプラットフォーム上での開発を支援します。アジャイル開発とDevOpsによる柔軟な開発進行や、国内外のリソースを活用したスケーラブルな開発体制の構築も可能です。 また、リリース後の保守運用や品質向上支援まで伴走可能です。
モンスターラボが提供するサポートの詳しい概要は以下リンクをご確認ください。