![見出し画像](https://assets.st-note.com/production/uploads/images/169182022/rectangle_large_type_2_6fe462849ca822f742126f67ce69142c.png?width=1200)
DevSecOpsとは?
"Shift Left", "Right to Left", "Secure by Desigin"等、読み手によってどうとでも取れてしまう造語が氾濫している昨今、DevSecOpsは数あるサイバーセキュリティのテーマの中でも最もノイジーなテーマの1つかと感じています。
この記事ではDevSecOpsとは何のことで何故必要なのかを掘り下げてみたいと思います。こちらの書籍のONE : DevOps Explained, TWO : Security Explainedを参考にしています。
先ずDevOpsを掘り下げてみます。
20年以上前のソフトウェア開発の現場では、ウォーターフォール型と呼ばれる全ての工程を順序立てて開発する手法が一般的でした。
要件定義 -> 仕様書作成 -> コーディング -> テスト -> リリース -> 運用
要件定義から、実際に動くソフトウェアがリリースされてユーザが利用できるようになるまで、半年以上かかることも。
ソフトウェアがリリースされる頃には、ユーザの要件も変わっていて、開発されたソフトウェアに対する需要は低くなっていることもザラです。
この問題を解決するために、DevOpsと呼ばれる考え方や文化が誕生しました。
DevOpsとはソフトウェア開発(Development)とサービス運用(Operation)を統合した造語で、先に上げた一連の開発サイクルを素早く回して繰り返すことを基本方針としています。
多くの書籍やBlogではアジャイル開発という言葉を使っています。私はアジャイル開発とDevOpsはほぼ同義と捉えています。細かな違いはありますが。
ソフトウェア開発者は、最小限の基本機能だけを実装したソフトウェアを素早くリリース、セキュリティを含むテストはなるべく自動化、サービス運用チームはユーザからのフィードバックを開発チームにフィードバック。
これを素早く何度も繰り返して、ユーザの要求と実際に動くソフトウェアのギャップを小さくして、ユーザの満足度を高めていきます。
次にSecurirtyを掘り下げてみます。
ありとあらゆる攻撃の手口が誕生する昨今、全ての攻撃に対する100%の防御策を打つことは不可能ですが、多くの攻撃は下記の3つの観点で整理できると思います。
Confidentiality(秘匿性)、Integrity(完全性)、Availability(可用性)
企業の環境に不正に侵入して情報を搾取する。これはConfidentialityに該当しますね。
認証や認可の仕組みを強化したり、企業情報を厳密にカテゴリ分けして、機密情報は暗号化したりして、不正な搾取に対策する必要があります。
生成AIのモデルを捏造して生成AIに機密情報を答えさせる。これはIngtegrityに該当しますね。
生成AIのモデルに関するデジタルサインの仕組みを強化したり、トレーニングデータのハッシュを持つようにしたりして、不正な捏造に対策する必要があります。
ウェブサイトに大量のデータを送りつけて不正にサービスを停止する。これはAvailabilityに該当しますね。2024年末に発生した、日本の金融機関を狙った攻撃は全てこの類の攻撃でした。
怪しいIPやDomainからの通信を遮断する仕組みを強化したりして、不正なトラフィックから保護する必要があります。(厳密にはこれだけではAvailabilityの対策にはならないかもですがここでは割愛させて下さい)
ウォーターフォールの時代に実施していたテストは、上記のようなConfidentiality, Integrity, Availabilityを俯瞰したテストではなく、静的なソフトウェアコードのチェックのような限定的なものでした。
かつ、テストはソフトウェア開発の最終工程でのみ実施されることがほとんどで、脆弱のソフトウェアがリリースされた後、実際の攻撃を受けて穴が発見されたとしても、それらをパッチで一時しのぎするだけです。
このSecurityに関するギャップを解消するために、DevOpsにSecを加えた、DevSecOpsと呼ばれる考え方や文化が誕生しました。ソフトウェア開+サービス運用+セキュリティですね。
DevSecOpsでは、ソフトウェア開発やサービス運用に携わる全て人がいつ何時もセキュリティを意識することを基本としています。
ソフトウェア開発者がコーディングを行う際も、定義している変数や関するのスコープや気密性を厳密に考えて、よりセキュアなコードを実装するよういつ何時も意識します。
サービス運用者は、リリースされたソフトウェアには必ず脆弱性が潜んでいることとして、脆弱性の検出や脅威情報との突き合わせを常日頃意識します。
Develoment/Operation/Securityが三位一体となって、悪質な攻撃組織からの攻撃による事故が発生する確率を可能な限り0に近づけながら、ユーザに求められるサービスを継続的にリリースする。
これがDevSecOpsの本質かもしれません。
![](https://assets.st-note.com/img/1736367618-wMovYxcQsjhKki2q3gX49LHW.jpg?width=1200)