【セキュリティ】DevSecOpsとは？プロダクト開発を行っていく上で欠かせない開発手法について解説します

みなさんこんにちは。高瀬です。

今回は、プロダクト開発において欠かせない、DevOps、DevSecOpsという開発手法について解説します。

DevOpsとは？

ロカオプサービスは、お知らせ でもご案内しております通り、2~3日に1回は、機能追加や、機能修正を行いリリースしております。その背景には、DevOpsという開発手法が関係しています。

DevOpsとは、Development (開発) と、Operations (運用) を合わせた語であり、ソフトウェアの開発と運用のサイクルを短い期間のサイクルで回していくことで、より迅速に新たな機能をリリースすることに重点をおいた開発手法です。

従来のソフトウェア開発は、1つの機能がリリースされるまで、およそ数ヶ月から数年開発サイクルとして要していました。しかしながら、最近ではお客様の声がよりダイレクトに届くようになり、また、ソフトウェアに対する要望 / 要求も日々移り変わっています。

そのため、お客様の声をより早くソフトウェアに反映し、それをより早くリリースするため、弊社ではDevOpsの開発手法をとっています。DevOpsの開発手法を取ることで、リリースのサイクルが数日単位にまで短縮することが可能となっています。

DevOpsの詳細

DevOpsは、次の要素から成り立っており、そのサイクルをどんどん回していきます。「プラン / コード / ビルド / テスト / デプロイ / オペレート / モニタリング」。順に説明します。

プラン

ビジネスの価値と機能要件を定義し、どんな機能を実装するか考えます。

コード

どんな機能を実装するか計画した後に、その機能を実際に実装します。

ビルド

本番環境へのリリースのために、ソフトウェアのビルドとバージョンを管理し、コードをコンパイルおよびパッケージ化します。

テスト

ビルドされたものに対して、自動および手動テストを実施します。

デプロイ

本番環境へソフトウェアをリリースします。

オペレート

本番環境の管理を実施します。

モニタリング

本番環境についての情報を収集し、問題が発生していないかどうかを確認、監視します。

DevOpsの難点

これまで、開発したソフトウェアに対するセキュリティを担保する役割は、開発フローの最終段階に設定されていました。つまり、数ヶ月から数年かけてソフトウェアを開発した後に、セキュリティチェックを行い、開発したソフトウェアがセキュリティ的にも問題ないことを担保していたのです。

しかし、今はDevOpsの開発スタイルを取ることで、開発サイクルは数日単位にまで短縮されています。その結果、数日単位でリリースされる機能に対して、数ヶ月から数年かけて開発したソフトウェアに対して実施していた、従来のセキュリティチェックではそのリリースの早さに追従するのが難しく、DevOpsの開発スタイルで開発したソフトウェアのセキュリティを担保することは、事実上困難になっていました。

そこで考えられたのが、DevSecOpsという開発スタイルです。

DevSecOpsとは？

DevSecOpsとは、DevOpsの開発サイクルの中で、セキュリティチェックが最初から最後まで組み込まれた開発スタイルのことを言います。「プラン / コード / ビルド / テスト / デプロイ / オペレート / モニタリング」の、最初のサイクルからセキュリティについて考慮します。こうすることで、DevOps開発サイクルのどのフェーズにいてもセキュリティが考慮されていることになり、従来のセキュリティチェックと比べても、格段にセキュリティが考慮され、結果としてセキュアなソフトウェアを迅速にリリースすることに繋がります。

ちなみに、セキュリティのプロセスを、DevOpsのプロセスの右側 (最後) から、左側 (最初) に移動するさまから、シフトレフトと呼ばれます。

自動化をフローの一部として組み込む

何事も、手動でやるよりも、自動的に実施した方が、手間がかからないですし、工数の削減につながります。DevOpsもこの考え方に基づいており、デプロイや、テストなど、自動化できるものは全て自動化することで、開発からリリースまでの期間を短縮しています。

DevSecOpsについても同様で、セキュリティチェックをさまざまなフェーズに組み込みますが、これも手動で実施するのではなく、自動的に実施されるフローの一部として組み込みます。自動化することで、工数を削減したり、本来の開発作業に注力することができます。

DevSecOpsで組み込むツール

静的アプリケーションセキュリティテストツール (Static Application Security Testing (SAST))

エクスプロイト可能な弱点に繋がる可能性のあるコーディングエラーや設計上の欠陥について、コードをスキャンします。

ツールには、SonarQube などがあります。

Code Quality and Code Security | SonarQube

Catch bugs and vulnerabilities in your app, with thousands of automated Static Code Analysis rules.

ソフトウェア構成分析ツール (Software Composition Analysis (SCA))

オープンソースおよびサードパーティコンポーネントの既知の脆弱性を特定します。

ツールには、npm-audit などがあります。

npm-audit | npm Docs

Run a security audit

動的アプリケーションセキュリティテストツール (Dynamic Application Security Testing (DAST))

ネットワーク接続を介して、アプリケーションのクライアント側レンダリングを調べることで、アプリケーションをテストします。

ツールには、OWASP ZAP などがあります。

The ZAP Homepage

Welcome to ZAP!

まとめに

セキュリティに対する意識は、今後より一層必要になります。ロカオプでは、セキュアなプロダクトをより早くお客様へお届けできるよう、安全で確実なソフトウェア開発に注力して参ります。

参考ページ

https://www.redhat.com/ja/topics/devops/what-is-devsecops

https://www.synopsys.com/glossary/what-is-devsecops.html

https://www.vmware.com/topics/glossary/content/devsecops.html

https://www.ibm.com/cloud/learn/devsecops

https://www.nri-secure.co.jp/glossary/shift-left

https://snyk.io/series/devsecops/

https://www.atlassian.com/devops/devops-tools/devsecops-tools

https://www.dynatrace.com/news/blog/what-is-devsecops/

https://www.dynatrace.com/news/blog/what-is-shift-left-and-what-is-shift-right/

https://www.techtarget.com/searchitoperations/definition/DevSecOps

https://www.zscaler.jp/blogs/product-insights/top-challenges-faced-organizations-implementing-devsecops

https://jfrog.com/devops-tools/what-is-devsecops/

https://www.trellix.com/en-us/security-awareness/operations/what-is-devsecops.html

https://circleci.com/ja/blog/what-is-devops/

https://www.netapp.com/devops-solutions/what-is-devops/