ここ数年でセキュリティまで概念を広げる「DevSecOps」が、注目を集めるようになりました。これまでセキュリティ対策は必須だけど開発の方が先という立ち位置でしたが、なぜここまで急速に注目されるようになったのでしょうか? この記事では、DevSecOpsの基本から重要性、メリット・デメリットまで、わかりやすく解説していきます。
DevSecOpsとは
DevSecOpsとは、開発(Development)、セキュリティ(Security)、運用(Operations)を略したもの。
もともとシステム開発と運用を連携して、互いの有用性を高めるDevOpsと呼ばれていましたが、そこにセキュリティの要素が加わり、現在の概念となりました。
DevOpsにセキュリティ対策のプロセスを組み込んだことで、開発スピードを損なうことなく、脆弱性のリスクにも対応することができます。
DevOpsとの関係は
企業にとってシステム開発とセキュリティ対策どちらも重要な気はしますが、DevOpsはなぜ今、工程にセキュリティを組み込む必要があったのでしょうか?
これまでは、開発時にセキュリティを徹底しようとすると、効率性が低下するなどデメリットが多かったため、脆弱性に対応するタスクは別で実施されていました。
ですが、最近は「システムのクラウド化」や、新機能を短期間で継続的にリリースしていく「アジャイル開発」の登場により、セキュリティ対策への負荷が軽減され、DevSecOpsが実現できるようになったのです。
DevSecOpsと『Shift Left』
DevSecOpsを語る上で、必ず触れておきたいアプローチが「Shift Left(シフトレフト)」です。 Shift Leftとは、これまで後工程で行っていたセキュリティ確認のプロセスを、開発の早期段階で問題に対処する考え方です。
導入することで手戻り分のコストやリソースを軽減できるため、DevSecOpsを実現するためには、Shift Leftを取り入れることが重要だともいわれています。
DevSecOpsのメリット
ここまでDevSecOpsの概要やDevOpsとの違いを解説してきましたが、DevSecOpsを導入するメリットは、どのようなものがあるのでしょうか。 このセクションでは、いくつかあるDevSecOpsのメリットの中から、スピード面とコスト面の2つをご紹介していきます。
セキュリティ上の問題に早く対処しやすくなる
DevSecOpsを導入する大きなメリットの1つが、セキュリティの問題に対して迅速に対応できること。
従来のDevOpsでは、セキュリティ対策が後手に回っているため、開発途中に問題が生じた際、すぐに対応することができません。
システム開発ライフサイクル(SDLC)にセキュリティを組み込むことで、トラブルを迅速に解決し、リスクの軽減にもつながります。
セキュリティ問題の対処のコストが減る
DevSecOpsを実現するもう一つの大きなメリットが、時間・コストの削減につながること。
セキュリティトラブルに対処するプロセスを短縮するだけでなく、トラブル発生時の対応スピードも向上するため、時間やコスト、担当者の負担を大幅に抑えることができます。
さらに実装したシステムの修正も容易になるため、昨今の情報化社会において目まぐるしく変化するビジネス需要にも、柔軟に対応することができます。
DevSecOpsのデメリット
明確なメリットがあり、いいこと尽くしのように見えるDevSecOpsですが、課題やデメリットもいくつか存在します。
ここでは、DevSecOpsの主なデメリットとして挙げられる2つの課題を、順番に解説していきますので見ていきましょう。
セキュリティと協調性や俊敏性の両立が難しい
システム開発ライフサイクル(SDLC)では、携わるメンバー全員がセキュリティに対して責任を負うことが重要。
しかし、開発者の中にはセキュリティスキルに乏しい人も多く、スピード・品質・セキュリティレベルと、すべてを理想に近づけるには難しいのが現状です。
DevSecOpsを実現するためには、セキュリティのトレーニングはもちろん、セキュリティという異なる分野のマインドセットやプロセス、ツールが必要になるでしょう。
セキュリティの品質の保証の基準がない
セキュリティの品質保証には、絶対的な基準や明確な定義はなく、詳しい人から学び、それを全体で共有する必要があります。
そのため、保証が不足し基準がわからないという点では、DevSecOpsを実現するための一つの課題といえるでしょう。
DevSecOpsを実現するポイント
DevSecOpsを導入して、開発と運用のライフサイクルをスムーズに回転させるには、以下の3点に気をつける必要があります。
ここで紹介するのはあくまでポイントの一部ではあるものの、実現するために抑えておきたい要素ですので、ぜひ一読ください。
セキュリティ担当者を任命する
前述でSDLCは、メンバー全員がセキュリティに対して責任を負うことが重要と言いましたが、それを開発チームに伝えるだけでは不十分です。
DevSecOpsの最終目標は、業務効率化や生産性向上、セキュリティの強化ですが、全員が同じ知識量とはなりませんし、なかには変化を嫌う方もいるでしょう。
そういった方々を説得して、プロジェクトの先頭に立って指揮できる、専門知識を備えたセキュリティ担当者を任命するのがよいでしょう。 負担はやや大きいですが、明確なビジョンとリーダーの存在なしではどんな組織でも上手くはいきません。
セキュリティのスペシャリスト中心に積極的なモニタリングを行い、随時情報を共有しながらビジネスを発展させていくことが大切です。
自動セキュリティテストをCI/CDパイプラインに組み込む
セキュリティ対策を可能な限り自動化するのは、開発・運用のライフサイクルを回転、循環されるのが目的であるDevOpsの中心的な考え方です。 自動化できるものはいくつかありますが、その中でも重要といわれているのが、継続的インテグレーション(CI)と継続的デリバリ(CD)です。
開発者がソースコード変更を定期的にリポジトリにマージし、その度に自動化されたビルドとテストを実行継続的インテグレーション(CI)と、リソース全体を自動化する継続的デリバリ(CD)の仕組みをセキュリティ対策に取り込みます。 最近では、CI/CDパイプラインに組み込み脆弱性スキャンを自動で行うツールも、各ベンダーから多数提供されています。
セキュリティを設計の制約にする
開発者がセキュリティに対する責任を共有できるようにするためには、Shift Leftを取り入れるなど、コードを作成する前にセキュリティを設計の制約にする必要があります。
新たな機能によって生まれるリスクなども考慮しながら、バックログの会議で検討していくとよいでしょう。
具体例としては、先ほど挙げたShift Leftに他、STRIDEのような脅威分析モデルの導入、脆弱性診断ツールであるOWASP ZAPなどが挙げられます。
まとめ
DevSecOpsは従来の開発リズムとは異なるため導入するにも一筋縄ではいきませんが、メリットも大きく、実現すれば生産性を大幅に向上させることも可能です。 Microsoft Azureでは、GitHubと連携して新しいサイバーセキュリティ攻撃にも対応した、信頼性の高いDevSecOpsフレームワークを提供しています。 セット製品も必要な機能だけを選ぶことも可能となっていますので、DevSecOpsの実現を目指している方は、ぜひ検討してみてはいかがでしょうか。