DevSecOpsとは?シフトレフトの思想でセキュリティ問題を開発初期に解決する
Dev+Sec+Ops=DevSecOps
今回取り上げるテーマは、「DevSecOps」です。これはソフトウェア開発に関連した用語ですが、少しわかりにくいと思います。この言葉は、「Dev」と「Sec」それから「Ops」を足し合わせてできていますので、それらの意味を再確認することが理解への早道です。
まずはDevですが、これはDevelopmentすなわち開発を意味します。それからSecはセキュリティ、Opsは運用になります。
ソフトウェアの開発にはライフサイクルがあります。要件定義から始まって、設計、実装(コーディング)、テスト、リリース、運用といった要素です。DevSecOpsはこれらのサイクルの最初期からセキュリティを組み込んでいくことを目指す取り組みです。現代において、ソフトウェアから脆弱性を排除することは非常に重要です。脆弱性はしばしばサイバー攻撃の起点となり、ソフトウェアの利用者に深刻な被害を与えます。しかし、一方でセキュリティを確保することは負担にもなります。下手をすると、ビジネスで求められるスピード感を損なってしまう要素にもなりかねません。DevSecOpsは、開発速度と安全性の確保双方を維持するための取り組みだと言えます。
従来型のソフトウェア開発では、セキュリティ上の不備はソフトウェアの完成後に初めて露呈することが多く、後付けでの対応を余儀なくされていました。開発サイクルの最終段階でこの不備に対応するのは、コストが非常にかかります。リリースが終わっていて、既に世の中にソフトウェアが出回ってしまっている場合、その影響は甚大です。即座にセキュリティの不備を修正するプログラムであるセキュリティパッチを開発し、配布する必要に迫られます。これは大変なことです。当然相応のコストがかかりますし、利用者にもその負担を強いることになります。これでは社会全体が幸せにはなりません。
もしインシデントが発生してしまった場合を考えると、対応や顧客への説明、報告、失われた信用の回復などに莫大な間接コストがかかってしまいます。
DevSecOpsの考え方を導入することにより、開発の最初期からセキュリティの考慮を行います。そのため、脆弱性の芽を早期に摘むことが可能となり、結果として対応が容易になります。コーディング中であれば、その個所を修正するだけで済みます。そのため、極力開発の初期段階で対応することが、費用対効果を高めます。
最近では、ウォーターフォール型の開発手法ではなく、アジャイル型の開発手法を採用するケースも多くなっています。その場合であっても、開発のスピード感が極めて重要な要素になりますので、セキュリティの問題を早期解決し、手間とコストを抑制することは理にかなっているのです。
進化と発展
さてこのDevSecOpsですが、もともとはここからセキュリティを除いた、「DevOps」という考え方がベースになっています。
以前は、ソフトウェアの開発部隊と運用部隊には大きな文化の違いがありました。開発部隊はソフトウェアに新規機能を導入することを志向しますが、運用部隊は、新しい機能のリリースは予期せぬ問題を引き起こすトリガーになることが多いためそれを嫌います。どちらの立場も間違っているわけではありませんが、ソフトウェアを開発して価値を提供していくためには、全体を俯瞰して最適化することが重要です。そこで出てきた言葉がDevOpsです。
そしてこの考え方とセキュリティ確保のために必要な要素の考え方が似通っており、親和性が高かったことから、発展してDevSecOpsという概念が生まれたというわけです。
シフトレフト
ここでもう一つ抑えておきたい言葉が、「シフトレフト」です。これはセキュリティをソフトウェアの開発ライフサイクルの可能な限り早い段階、時系列の図にすると左側で行うことを目指す取り組みです。DevSecOpsの中核をなす概念だということがお分かりいただけるのではないかと思います。
技術面以外でのメリット
DevSecOpsには、技術的、コスト的なメリットの他にも利点があります。それは、組織の文化の変革を可能とすることです。これまではセキュリティは、ソフトウェア開発の外で、セキュリティの専門家によって行われるものだという認識が強くありました。しかし、DevSecOpsで、開発と運用チームの双方を巻き込むことによって、セキュリティは関係者全員の共有すべき問題だという認識を高めることができるのです。開発者は脆弱性を極力発生させないようなセキュアコーディングを意識しますし、運用も自らの負担となる事後のセキュリティ対応の負担を減らすように動くようになります。セキュリティの専門家は、こういった活動全体を支援する存在となることが求められます。
DevSecOpsの課題
さて、このように実現すれば良い方向に進むDevSecOpsですが、まだ現状ではいくつかの課題を抱えています。
まずは従来の組織がやはりサイロ化、つまり独立した考え方を持っており、一枚岩になり切れないという点が挙げられます。これにより責任の共有の妨げになります。
それから、経営層の理解が不足している場合も多くみられます。DevSecOpsの実現のためにはツール類の導入や、組織改編といった経営層の判断が求められます。経営層の明確な支援がなければ、計画は頓挫してしまうことでしょう。
まとめ
このように、DevSecOpsはDevOpsを発展させて、セキュリティをソフトウェア開発サイクルの最初期で、シフトレフトの考え方に基づいて対処するという取り組みです。導入により、開発企業だけではなく、利用者にとっても負担が減り、生産性が向上するものです。
開発の初期段階でのセキュリティ不備の発見には、最近ではCSPMのようなツールも用いられています。こういったツールを活用して、効果的なDevSecOpsを実現していくことが、今の時代では強く求められているといえるでしょう。