DevSecOpsとは?基本からメリットまでわかりやすく解説

 2021.12.03  2022.08.19

様々な業界でIT化が進んだ現代において、安全かつスピーディーな情報システムの構築は必要不可欠です。業務効率化を図り、企業がより多くの利益を生み出すためには、実用性の高いシステムを導入しなければなりません。そんな現代において、注目を集めているのが「DevSecOps(デブセックオプス)」です。本記事では、DevSecOpsについて、基本からメリットまでわかりやすく解説いたします。

New call-to-action

1. DevSecOpsとは?

DevSecOps(デブセックオプス)とは、DevOps(デブオプス)から派生した概念のことです。DevOpsは、情報システムにおいて、開発(Development)と運用(Operations)を連携させることによって、開発期間を短縮し、リリース頻度を高くするという概念です。Secはセキュリティの意味であり、DevOpsにセキュリティ(Security)を融合させ、スピーディーかつ安全性の高い開発を目指すのがDevSecOpsです。情報システムの重要性が高まった今、システムの各工程でセキュリティ対策を実施し、安全な状態で開発を進める必要があります。

図版①DevSecOpsとDevOpsの違い図版①DevSecOpsとDevOpsの違い

DevSecOpsが登場した背景

近年の開発現場では、DevOpsとアジャイル開発が広がりつつあります。アジャイルとは日本語で「俊敏」という意味で、要件や仕様の優先度に応じて開発プロジェクトを複数立ち上げ、各プロジェクトの中で短い開発サイクルを繰り返す開発手法です。DevOpsとアジャイル開発を併用し、開発期間の短縮と品質の向上を目指します。一方で、DevOpsとアジャイル開発には「セキュリティ対策が疎かになる」「頻繁に発生するリリースの度に脆弱性テストを行うことで工数が増え、開発スピードが落ちる」という課題がありました。これを解決するため、あらかじめセキュリティ対策を開発のライフサイクルに組み込むDecSecOpsの考え方が登場しました。

またクラウドサービスの普及により、クラウドによるセキュリティ管理と自動化の機能が発展したことも、DevSecOpsの考え方が広まった理由の一つです。もともとセキュリティは開発・運用とは分離した位置づけでした。しかし、シームレスなクラウド環境では、統合コンソールからほかの作業と同時にセキュリティ管理ができます。開発・運用と分離せずに包括的なセキュリティ施策が行えることから、DevSecOpsを実現しやすくなっています。

DevSecOpsとシフトレフト(Shift Left)

DevSecOpsを実現するために必要なアプローチとして、シフトレフト(Shift Left)が挙げられます。従来は、システムが完成してリリースする直前にセキュリティテスト(脆弱性診断)を行っていましたが、これがCI/CDのライフサイクルを妨げていました。CI/CDとは継続的インテグレーション/継続的デリバリーの略語で、システム開発におけるビルドやテスト・デプロイを自動化し、継続的に繰り返すアプローチです。これを解消するため、セキュリティテストやセキュリティ施策を「開発プロセスの早い段階(左側)にシフトする」という考え方がシフトレフトです。開発プロセスにセキュリティを導入する時期が早いほど、脆弱性を早期に発見して修正できるため、開発スピードの向上や継続的なシステム改善につながります。

図版②DevSecOpsを実現するために必要なアプローチ、シフトレフト(Shift Left)図版②DevSecOpsを実現するために必要なアプローチ、シフトレフト(Shift Left)

C-Native 企業のDX実現に向けたクラウドネイティブソリューション
MCMS(マルチクラウドマネージドサービス)

2. DevSecOpsの目的と必要性

DevSecOpsの目的は、システムにおける要件定義、設計、実装、テスト、リリース、運用という各工程のセキュリティリスクを削減することです。企業にとっては、システムの品質を高くするだけでなく、セキュリティの脆弱性をなくすことも重要なのです。

特にこれからの時代は、ビジネスのためのソフトウェアではなく、ソフトウェアによるビジネスが展開されていくと言われています。事前にセキュリティ面を考慮したうえでシステムを構築しなければ、不具合が発生した際に、膨大なコストがかかってしまいます。それだけでなく、セキュリティのトラブルによってソフトウェアのリリースが遅れる恐れもあり、ビジネスの発展を妨げかねません。こういった観点から、DevSecOpsを念頭に置いて品質を保ちつつ、可能な限り低コストでシステムの開発と運用を手掛けていく必要があります。

3. DevSecOpsのメリット

DevSecOpsにはいくつかのメリットがあります。1つ目のメリットは、セキュリティリスクを抑制しやすいことです。

DevSecOpsではない環境でソフトウェアの開発と運用を進めると、セキュリティの問題が生じた際に迅速な対応ができません。DevSecOpsはDevOpsを補完するセキュリティシステムであり、トラブルが発生してもすぐに気づくことができます。

2つ目のメリットは、生産性の向上に繋がることです。DevSecOpsによって、セキュリティトラブルに対処するプロセスを短縮し、時間とコストを節約できます。トラブルが発生してもすぐに解決できるため、日頃からDevSecOpsの環境を整備しておくことで、結果的に生産性の向上に繋がります。

3つ目のメリットは、ビジネス需要変化に柔軟に対応できることです。DevSecOpsの環境下では、そうでない場合よりもシステムを容易に修正できます。ビジネスの需要は日々目まぐるしいスピードで変化しているため、今後益々頻繁な修正が必要になるでしょう。DevSecOpsでなければ、システムを修正するたびに時間がかかり、トラブルも発生します。

4. DevSecOpsの基本要素

DevSecOpsの基本要素としては、次のようなものが挙げられます。

組織体制と文化

DevSecOpsを取り入れるにあたって、組織体制や文化を改新して開発やセキュリティ対策に取り組み、責任を共有することが大切です。従来のようなやり方では、これから益々進展していくIT化に対応できません。DevSecOpsは、開発期間を短縮し、リリース頻度を高くすることによって、業務効率化を図るものです。一般的に考えると有効な対策と言えますが、組織の中には変化を嫌う人もいます。

そういった人たちをどのように説得し、どんな組織にしていくのかという明確なビジョンがなければ、DevSecOpsによってビジネスを発展させていくことはできないでしょう。DevSecOpsをきっかけにして、組織体制や文化を改新し、新たな風を吹き込んでいくことが重要です。

プロセス

DevSecOpsの実現には、プロセスも重要です。チームによって共同開発を行い、継続的にシステムを改善していく必要があります。テクノロジーを活用し、各プロセスを自動化することで生産性の向上に繋げます。自動化を推進することで、今まで行っていた簡易的な作業に取り組む必要がなくなり、開発に時間を割くことが可能になります。

セキュリティなどの問題が発生した際には、なぜ発生したのか、今後どういった対策をとれば再発を防げるのかをじっくり考え、より高品質なシステムを構築することができるでしょう。システムを改める場合には、テストを何度も実施し、改善を繰り返すことが必要不可欠と言えます。

技術

DevSecOpsには技術も必要です。ツールやソフトウェアを導入し、システムに適応させなければなりません。ビジネスの需要は常に変化し、驚異的なスピードで日々新たなテクノロジーが誕生しています。そういった時代の流れに対応していくためには、どういったツールやソフトウェアがトレンドなのか、どのような機能があれば効率的に開発を進めていけるのかを把握し、取り入れていくことが大切です。

開発を進める際には、クラウドやコンテナ技術を活用するのも重要です。他のプロセスから隔離された環境を構築し、可能な限り少ないリソースでテストを実施できる状態が望ましいです。また、「Security as Code」や「Infrastructure as Code」も実施しましょう。「Security as Code」とは、セキュリティポリシーのコード化によってコンプライアンスチェックや監査を自動化することであり、「Infrastructure as Code」とは、インフラ環境のコード化によって構築及び管理を自動化することです。インフラやセキュリティの構築を人の手で行うのではなく自動化することで、コストを削減し、ミスを防ぐことが可能になります。技術を活用し、運用プロセスを最適化しましょう。

ガバナンス

DevSecOpsの実現には、ガバナンスも重要です。組み込み型のガバナンス制御を実施し、一貫した理念を共有することが大切です。安全にシステムの開発と運用を進めるためには、ガバナンスの視認性を向上させなければなりません。ガバナンス活動を継続し、システムの管理を徹底することで、DevSecOpsを実現することができるでしょう。

DevSecOpsは、1つの要素だけで実現することはできず、「組織体制と文化」「プロセス」「技術」「ガバナンス」という様々な観点から取り組んでいかなければなりません。どの要素も欠かせないことを念頭に置いて、DevSecOpsの実現を目指しましょう。

5.DevSecOpsを実現するセキュリティツール

DevSecOpsを実現するためには、セキュリティツールの活用が有効です。CI/CDのパイプラインに組み込んで、自動的に脆弱性スキャンを行います。主なセキュリティツールの種類と、開発ライフサイクルのどの段階で使用するかについて解説します。

SAST

SAST(Static Application Security Testing)は、静的アプリケーションセキュリティテストツールです。独自に開発したコードやカスタムコードをスキャンして、コーディングエラーや悪用可能な弱点につながる設計上の欠陥を検出します。主に設計・構築工程で使用します。代表的なツールは「Coverity」です。

SCA

SCA (Software Composition Analysis)は、ソフトウェアコンポジション解析ツールです。ソースコードやバイナリをスキャンして、オープンソースおよびサードパーティコンポーネントの既知の脆弱性を特定します。設計から運用工程まで継続的に使用します。代表的なツールは「Black Duck」です。

DAST

DAST(Dynamic Application Security Testing)は、動的アプリケーションセキュリティテストツールです。ハッカーがWebアプリケーションやAPIを操作する方法を模倣した自動ブラックボックステスト技術で、ネットワーク接続を介してアプリケーションをテストします。QA環境から運用工程にかけて使用します。代表的なツールは「VAddy」です。

IAST

IAST(Interactive Application Security Testing)は、インタラクティブアプリケーションセキュリティテストツールです。手動または自動機能テスト中にバックグラウンドで動作し、Webアプリケーションの実行時の動作を解析します。IASTはDASTとは異なり、アプリケーションの内部から動作する点が特徴です。主にテスト工程で使用します。代表的なツールは「Seeker」です。

図版③DevSecOpsを実現するセキュリティツールの役割図版③DevSecOpsを実現するセキュリティツールの役割

6.DevSecOpsの課題

多くのメリットがあり導入が必須ともいえるDevSecOpsですが、以下のような課題も存在します。

セキュリティ品質の基準がない

セキュリティ品質保証には、絶対的な基準や明確な定義はありません。どのポリシーを採用するかをチームメンバーと確認するほか、セミナーや勉強会に参加して積極的に学ぶ必要があります。ほかの人の経験から学び、共有していくことが大切です。

セキュリティスキルの不足

DevSecOpsはプロジェクトに携わるメンバー全員がセキュリティに対して責任を負うべきですが、現状では正しいセキュリティスキルを持つ人が少ないことが課題となっています。実際にセキュリティトラブルに直面してから学ぶケースも多いですが、リスクを減らすためには組織の取り組みとしてセキュリティトレーニングを行うなどの対策が必要です。

7.DevSecOpsを実現するためのポイント

開発・運用チームの生産性を保つ

セキュリティ上の脅威を発見した場合には迅速な対応が必要ですが、それによって開発・運用サイクルを停滞させてはいけません。自動化の仕組みやツールなどを上手に活用して、チームの負荷を軽減させましょう。可能な限り作業を自動化して開発・運用のライフサイクルを回していくのはDevOpsの核となる考え方であり、特にCI/CDは重要です。CI/CDパイプラインに自動セキュリティツールを組み込むことをまず検討してみてください。

チーム間でセキュリティの共通認識を持つ

セキュリティについての知識量は各人によって異なりますが、開発チーム・運用チーム・セキュリティチームで共通のセキュリティ認識を持つように心がけることが大切です。先頭に立って指揮をとるセキュリティ責任者を任命し、明確なビジョンを提示するとよいでしょう。

ツールだけに頼らない

DevSecOpsを実現するために便利なツールは多く存在しますが、あくまでもツールは手段であることを忘れないようにしましょう。ツールを導入しただけで満足してしまっては、本来の目的は果たせません。まずは関係者間で現状の課題や目指す形を確認し、組織文化や体制、開発・運用のプロセス、ガバナンスなどさまざまな観点から環境を整備することが大切です。

8.まとめ

現代のビジネスにおいてITは欠かせないものとなりました。頻繁な機能追加や継続的なアップデートが必要なシステムやサービスには、迅速かつ効率的な対応が求められます。開発担当と運用担当それぞれの業務範囲の目的達成だけではなく、ユーザーのシステム利用価値の最大化を意識したDevOpsの考え方は、現代さらには未来のビジネスにおいて必要不可欠なものとなるでしょう。

CTA

RECENT POST「CLOUD SHIFT」の最新記事


CLOUD SHIFT

CI/CDとは?メリットやデメリット、パイプラインの活用用途を解説

CLOUD SHIFT

ビックデータ時代のデータマネージメントのポイントとは?

CLOUD SHIFT

マルチクラウドとは?ハイブリッドクラウドとの違いやメリット、デメリットを解説

CLOUD SHIFT

マネージドクラウドとは?手間をかけないクラウド保守の方法を徹底解説

DevSecOpsとは?基本からメリットまでわかりやすく解説
CTA

RECENT POST 最新記事

CTA

RANKING人気記事ランキング


OFFICIAL SUPPORTER