ICT活用が進むとともに情報セキュリティに対する問題も顕在化するようになっています。ここではアプリケーションセキュリティとは何かを解説したうえで、その重要性やアプリケーションの開発において重要な概念である「DevSecOps」についても言及していきます。
アプリケーションセキュリティとは?
まずはアプリケーションセキュリティとは何か、その概要を理解しておきましょう。簡潔に説明すると、アプリ内のデータを乗っ取りや盗難等から守ることを目的とした対策を指します。不正アクセスなどの脅威に対する脆弱性を回避する機能の開発からテスト、組み込みに至るまでの全プロセスが含まれ、情報セキュリティのうちアプリケーションレベルに限定して呼ぶときの名称でありながらも、幅広い概念であるといえます。
アプリケーションセキュリティは、アプリのライフサイクル全体を通した知識や対策を指すため、導入後のアプリを守るためのツールや手法もここに含まれます。近年は多様なソフトが開発されるに伴い、多くのセキュリティツールが世に出ています。それぞれに保護対象は異なり、一部分に特化したものもあれば、広範にカバーするツールなど様々です。例えば、コード改ざんに対するものやコーディングにおいて不注意で入り込んでしまう脅威の検証、アクセス権のチェック、暗号化の評価など、多種多様な役割があります。
また、最終的な保護対象の違いではなく、作用するフェーズで分類をしたときには大きく2種類のツールに分けることができます。1つは比較的市場の大きい「テストツール」で、もう1つは「防御ツール」です。アプリケーションセキュリティのテストでは、決められたポイントでコードを分析する静的な検証や、実稼働システムへの攻撃をシミュレーションし複雑な攻撃のパターンを明らかにする動的な検証などがあります。一方、防御ツールは、脆弱性のチェックや損傷の防御など、アプリの保護を固める役割を担っています。
ただし、企業活動本来の目的を果たすためにはそれらのツールだけでは不十分です。各分野に特化したツールを多く導入しても、運用コストが過大になってしまったり、問題発生時の対応に遅れが生じたりすることがあるためです。この点に関しては以下で言及していく、「DevSecOps」の考え方が特に重要になってきます。
アプリケーションセキュリティの重要性
前項で説明したように、アプリ内のデータ等を保護するためのツールは豊富にあります。アプリ自体の数が増加し、それとともにセキュリティ上の問題も増えることで、情報保護の需要が高まっているためです。
アプリ以外に関しても対策を講ずる必要はありますが、クラウドの利用も増えていることから近年ではアプリケーションセキュリティの重要性が特に説かれるようになっています。それは、限定的な閉じられたネットワークからのみ利用する形態ではなくなり、様々なネットワークから利用ができるようになっていることが関係しています。実際、侵害行為の多くはアプリケーション層にある脆弱性が標的にされています。そのため、個人情報や営業するうえでの重要な情報を多く持つ企業は、特に警戒しなくてはなりません。
しかしながら、現在ではサプライチェーンも相当に複雑化しており、容易にその対策ができるとも限りません。現在のような形態でアプリが用いられるようになる以前は検査やテストも比較的容易にできていましたが、今ではアウトソース開発の利用、オープンソースや市販のソフトウェアコンポーネントの利用なども増えており、それが対策を困難にしている理由の1つとなっています。
そこで、このような状況に対応できるような有用なツールを利用し、できるだけハッカーが先に問題点を見つけてしまうような事態を避けなければなりません。ただし、つぎはぎのようにツールを利用していると別の問題を引き起こすこともあります。次項で詳しく見ていきましょう。
アプリケーションセキュリティ(AppSec)ツールにおける問題
新たに書かれるソフトウェアのコードは、年に1000億行を超えるとされています。しかしその一方で、脆弱性における問題発生件数は過去20年で変わっていません。さらに問題なのは、重大な脆弱性に対しタイムリーな修正をできていないということです。開発および運用チームが、タイムリーな修正をできたと報告した企業は全体のわずか1割に過ぎないといされています。
この問題は、情報セキュリティの対策が、単なるツールの積み上げでしかなされていないことが関係しているともいわれています。ハッカーによる⾼度なサイバー攻撃は増加しており、情報漏洩の半数以上はハッキングを伴うものです。つまり、Webアプリはハッキングによる攻撃を頻繁に受け、情報漏洩を繰り返しているという状況があります。国内外問わず、大企業も被害に遭っており、例えば、海外のある企業は、脆弱性に対するパッチ適⽤を怠ったことが原因で情報漏洩を起こしてしまい、1000億円を超える損害が生じたという事例もあります。
アプリに対するセキュリティツールの種類も数も増えていますが、単にこれを積み上げるだけではこういった攻撃に対処することが難しく、従来のやり方とは異なる対策を講じる必要に迫られています。また、ツールが氾濫してしまうとツール間での連携が取れない事態に陥り、管理や修復にかかるコストも大きくなってしまうでしょう。
企業の半数以上が、導入しているセキュリティツールの数が増えすぎて体制に悪影響が及んでいるともいわれており、こういった状況は、かえってリスクを増幅させてしまいます。つぎはぎのように、その場その場での対策を取るのではなく、開発から運用まで全体のフローを意識した体制作りから始めることが重要です。そこで、近年注目を集めているのが「DevSecOps」です。
アプリケーションセキュリティの新たな概念「DevSecOps」とは
「DevSecOps」とは、アプリケーションセキュリティにおける新たな概念です。「DevOps」という、要件定義から設計、コード実装、そしてデプロイに至るパイプラインを指す概念がありますが、ここにセキュリティの観点を組み入れた考え方が「DevSecOps」です。言い換えると「セキュリティ要件を組み込んだ「DevOps」が「DevSecOps」であり、攻撃の高度化やツールの氾濫という問題への解決が期待されます。
これまではセキュリティを担保する作業がアプリの開発プロセスとは別に実施されており、多くの開発チームはまず設計や実装に専念していました。開発後、プロダクション環境にデプロイされ、ようやく脆弱性の診断を行うという流れが一般的だったのです。従来の開発様式では大きな問題となってこなかったこの手法も、開発サイクルが短くできるようになった現在においては問題が顕在化しています。開発スピードを上げられるにもかかわらず、こうしたアプローチをしていることにより効率が低下してしまっているのです。セキュリティ上の問題が見つかったときは、すでにあるコードを切り戻さなければなりませんし、また実稼働状態になるまで問題が発見できず脅威にさらされることもあります。
そこで、開発プロセスのすべてにセキュリティを組み込むという「DevSecOps」の考え方が重要になります。開発者はセキュリティに配慮しつつコードを書き、アプリの展開前にテストを実施、デプロイ後に問題が発生したとしてもチームが迅速に対処できる計画を立てます。つまり、デプロイ前の各プロセスにおいてセキュリティの要件・工程を組み入れるのです。
ただし、そこで考慮しなくてはならないのが、ワークフロー全体の速度です。開発のスピードを低下させずに実行できる体制を整えることが重要となり、一部のセキュリティゲートは自動化することが求められます。
セキュリティ機能を搭載した統合開発環境をチーム全員で利用するなど、継続的にセキュリティを統合するためには適切なツールの選定が欠かせません。開発環境を統合できるものを使えば、開発プロセスやワークフローもスムーズになり、その効果を高められるでしょう。コンプライアンス監査を実施する際にも、監査担当者が発見するより早い段階で気づきやすくなり、全体としての時間やコストの削減につながります。
DevSecOpsでDXを加速していく
DevSecOpsの実現により、セキュリティ対策に要する時間およびコストの削減につながることを紹介しました。しかし、これはセキュリティ上の問題を解決するだけでなく、ビジネス全体へも良い影響を及ぼします。
例えば、新サービスを市場投入するまでの時間を短縮することが可能になります。これはDXの観点からも重要なことです。単にデジタル化を進めるだけの時代は終わり、今後はさらなるデータ活用・分析による高度なIT利用が注目されるようになっています。ビッグデータやAIの活用に関心が高まる中、セキュリティ体制が十分に整うということは、そのための土台を築くことに寄与するでしょう。
これらを実現するためには、エージェント型のツールを導入するなどして、組織全体での⽬標を統⼀、接続性のないツールの氾濫を防がなくてはなりません。上述のようにツールを積み上げるだけでは対処できない問題があり、管理にかかるコストも膨らんでしまいます。セキュリティ対策を施す場合、対策そのものに対する労力だけでなく、ツールの管理にも目を向けなくてはなりません。管理にどれだけ時間が取られてしまっているのか改めて考え、体系化されたシステムの構築を目指しましょう。
「DevSecOps」を取り入れることで、開発者はコードを書きつつセキュリティ対策を実施でき、開発のライフサイクル初期から脆弱性も検査できます。それは結果的に修正作業やテストにかかるコストを削減することにつながるでしょう。すぐに「DevSecOps」を実現することは難しいかもしれませんし、初期投資は覚悟しなければなりません。しかし、現状の体制を続けたときのコストを長い目で見ていけば、将来的には具体的な導入を検討する方がコストを削減できるでしょう。
まとめ
アプリケーションの開発段階からセキュリティ対策に取り組むことが大切です。アプリの使用場面が多様化していることや、個人情報を扱う場面が増えていることからもアプリケーションセキュリティへの取り組みは欠かせません。また、DXを加速させるという観点からも「DevSecOps」は重要といえるでしょう。