DevOps×security!DevSecOpsについて徹底解説

DevOps×security!DevSecOpsについて徹底解説

近年は、DevOps×securityとしてDevSecOpsと呼ばれる考え方が広まってきました。まだ、発展途上の概念ではありますが、今まで活用されていたDevOpsの考え方に、セキュリティの概念を追加するようになっているのです。

言われてみれば単純なものではありますが、そもそもDevOpsについて理解できていない人やDevSecOpsのイメージが持てない人もいるでしょう。今回は、DevSecOpsの概要や構成要素について解説します。

DevSecOpsとは?

最初に、DevSecOpsとはどのような考え方であり、今までのDevOpsとはどのように違うのかを把握しておきましょう。

DevSecOpsの概要

DevSecOpsは、開発(Dev)、セキュリティ(Sec)、運用(Ops)の3つの要素を統合する考え方を指します。複数の要素を統合したアプローチとすることで、ソフトウェアの開発と運用のライフサイクル全体にわたって、セキュリティを担保することができるのです。

従来、セキュリティは開発プロセスの後段階や独立したフェーズで取り組むべき要素でした。しかし、これでは脆弱性の発見が遅れてしまうなどの問題があったのです。そこで、DevSecOpsのように、セキュリティが開発の初期段階から考慮・組み込まれ、持続的に改善されるアプローチが生み出されました。

なお、このようなアプローチが生み出された背景には「セキュリティ問題は初期の段階で取り組んだ方が、後から修正するよりもコストが低く、効果的だ」という考えがあります。DevSecOpsの採用により、企業はリスクを早期に検出し、迅速に対応することが可能です。結果、セキュリティインシデントの発生リスクを低減させ、信頼性の高いソフトウェアの提供を実現できます。

DevSecOpsとDevOps

DevSecOpsは、DevOpsの考え方にセキュリティ(Sec)の要素を組み込んだものです。DevOpsは主に開発と運用の効率を高めることを重視しています。それに対して、DevSecOpsはその中にセキュリティを持続的かつ自動的に組み込み、ソフトウェアのセキュリティを向上させることを目的としているのです。

従来、セキュリティは独立したフェーズや後段階での対応として扱われることが大半でした。しかし、DevSecOpsのアプローチでは、開発の初期段階から継続的にセキュリティを考慮して対策も組み込みます。これにより、開発と運用のスピードを維持しつつ、セキュリティもバランスよく確保できるようになるのです。

DevSecOpsが注目される理由

近年、サイバー攻撃の増加や複雑化、データ漏洩の事例が頻発しています。このような時代の変化が、DevSecOpsという考え方が注目されるようになった理由でしょう。

これらのセキュリティインシデントは、企業の信頼を損ねたり、法的なトラブルに発展したりするリスクがあります。特に、デジタルトランスフォーメーションが進む今の時代、ソフトウェアやアプリケーションはビジネスの中心的な存在です。これらにセキュリティ上の問題が含まれることは、可能な限り避けなければなりません。

セキュリティを高める方法論は昔から多数ありますが、それらの中でも今はDevSecOpsが特に良いと考えられています。ビジネスにおいて重要となるシステム群において、より効率よくセキュリティを担保するために、DevSecOpsが注目されているのです。

DevSecOpsを構成する要素とは


DevSecOpsは、いくつかの構成要素を満たしている場合に、実現できていると表現できます。具体的に、構成要素として必要なものを挙げると以下の通りです。

プロセスの確立

DevSecOpsはDevOpsにセキュリティの要素を加えたものです。そのため、DevOpsの構成要素でもある、プロセスの確立が求められます。あらかじめ定められた流れに沿って、環境がデプロイされるように準備されていなければ、DevOpsやDevSecOpsとは表現できません。

また、基本的な構築のプロセスだけではなく、変更時のプロセスなども明確にしておくことが大切です。これらすべてのプロセスが確立されていなければ、その部分が悪影響を与えかねません。

プロセスに沿ったツールでの自動化

上記で説明したプロセスを、ツールによって自動化することが重要です。プロセスを定めただけでは、一般的なシステム開発と同じ流れになってしまいます。DevSecOpsは、セキュリティも含めてプロセスを自動化しなければなりません。

自動化にあたっては、多種多様なツールが利用されます。状況によって最適なツールは異なるため、最適なものを選択することが重要です。ツールの選定を間違えてしまうと、DevSecOpsの良さを発揮できない可能性があります。

なお、自動化におすすめしたいツールは、大きく分けて4種類です。後ほど、具体的なツールの種類を紹介するため、詳細についてはそちらを参考にしてください。

ガバナンス

DevSecOpsを成功させるためには、組織のガバナンスが非常に重要です。誰かが誤って行動してしまうと、それが起因して自動化が崩壊する可能性があります。自動化や効率化は、特定の条件下でのみ成り立つものであるため、ガバナンスは必須です。

そのため、DevSecOpsの採用にあたっては、開発リーダーなど全体を把握する人が求められます。プロセスには、このような役職者の「承認」を含めるようにし、多くのエンジニアが並行して変更を加えすぎないように統治しなければなりません。

DevSecOpsを採用する3つのメリット

開発にDevSecOpsを採用することで、数多くのメリットを生み出します。具体的なメリットを挙げると、以下のとおりです。

リリースの高速化

デプロイを可能な限り自動化することで、リリースを高速化できます。それぞれの環境デプロイに必要な時間を短縮できるため、全体としての高速化が可能なのです。また、デプロイにあたっての人的ミスもなくなり、これも高速化につながります。

また、DevSecOpsはセキュリティの観点も含めているため、これに依存するトラブルも発生しません。スクラップアンドビルドの回数を少なくでき、開発から本番リリースまでのトータル期間の圧縮につなげられます。

品質の向上

DevSecOpsを導入することによって、システムの品質の向上が見込めます。より高品質なシステムを、短時間で構築できることがメリットです。

一般的に、リリース直前はセキュリティ診断に充てられる時間が短く、十分な検査ができません。また、リリース期日も迫っていることから、脆弱性が見つかってもすぐに対応できないことがあります。これは言うまでもなく、システムの運用上、望ましくありません。

しかし、DevSecOpsを導入して運用していれば、早い段階で細かな検査ができます。また、何かしらの脆弱性が見つかった場合は、比較的早く対応することが可能です。また、時間に余裕があることから、幅広い脆弱性をカバーできます。

DevSecOpsに役立つ4つのツール


DevSecOpsに役立つ自動化ツールは多数あります。それらを分類すると、大きく4つに分かれるため、それらについて解説します。

SAST

SASTは、主に開発工程で利用されるテストツールです。ソースコードの内容を分析することで、コーディングエラーやプログラム中に埋め込まれた脆弱性を発見してくれます。コーティングエラーは人間でも気づくことができますが、脆弱性は気づきにくいため、ツールによる自動検出が理想的です。

ただ、基本的にSASTは、プログラム単体の脆弱性しか発見できません。つまり、複数のプログラムが連続で動いたり連携されたりする場合の考慮は不可能です。ソースコードの評価としては、不十分な部分があることを理解しておきましょう。

SCA

SCAは、開発工程からリリース、運用まで幅広く利用する解析ツールです。ソースコードを自動的にスキャンして、既知の脆弱性が含まれていないか評価します。本来は修正すべきものが残っていると、それは脆弱性となるため、ツールを利用して発見するのです。

解析にあたっては、様々なベンダーやオープンソース開発団体の情報が利用されます。ツールがこれらの情報を自動的に収集し、その内容を踏まえて指摘してくれるのです。脆弱性が公開されていない場合は、SCAでは発見できないことに注意しましょう。

DAST

DASTは、アプリケーションを自動的にテストできるツールです。攻撃者がWebアプリケーションやAPIを攻撃することを想定し、どのような手法が通用してしまうのかを評価してくれます。

攻撃の手法は多様化していますが、大まかな方向性は変化していません。そのため、DASTにはこれらの攻撃手法があらかじめインプットされています。そして、攻撃者を模して自動的に攻撃することで、脆弱性を発見するのです。

IAST

IASTは、アプリケーションの処理中にデータの流れなどを分析し、脆弱性がないか評価するツールです。プログラムが潜在的に持つ脆弱性を発見するために利用されます。

基本的には、上記で紹介したDASTなどと組み合わせて利用するツールです。テストしている裏側でIASTを起動させることで、自動的にデータの流れやアルゴリズムの内容などを評価してくれます。

DevSecOpsを導入する際の注意点

DevSecOpsを導入したいと考えている企業は多いのではないでしょうか。ただ、DevSecOpsを導入するにあたっては、いくつも意識すべきことがあります。特に重要な注意点について解説します。

基準・ケースの不足

DevSecOpsを導入する際には、プロセスの確定やガバナンスの確立などが求められます。これらを確実なものにしなければ、DevSecOpsが成功することはありません。中途半端な自動化によって、全体の開発効率が落ちてしまう可能性があります。

ただ、ここで重要となることは、プロセスやガバナンスの基準となるものが少ないことです。DevSecOpsは、新しい概念ということもあり、まだまだ基準などの考え方が確立されていません。実際にDevSecOpsが導入されているケースは増えていますが、それでも不足していて、基準の確立には至っていないのです。

何かしらの基準やケースがないと「自分たちのDevSecOpsは正しい方向性なのか」と不安になってしまうでしょう。このような不安を持つことは当たり前だと考えられます。しかし、残念ながら、これを解消することは難しいことが注意点です。

エンジニアのスキル

ケースが不足していることが背景にあり、DevSecOpsのスキルを持つエンジニアが限られています。また、DevSecOpsについての理解があるエンジニアでも、十分とはいえないかもしれません。エンジニアのスキル不足を常に意識することが重要です。

とはいえ、基準が存在しない以上は、DevSecOpsを手探りで運用していくしかありません。時には失敗してしまうことも考えられるため、それを考慮して導入するようにしましょう。少しずつDevSecOpsを活用していくことで、自分たちに適した進め方が確立されるはずです。

また、最初から完璧な運用を目指さないようにすることも意識しておきましょう。「DevSecOpsを導入するからには失敗は許されない」というプレッシャーがあると、新しい仕組みは導入できません。バックアッププランを用意して、万が一失敗してしまったときでも、リカバリーできるようにすることが理想的です。

まとめ

DevOpsにセキュリティの概念を追加したDevSecOpsについて解説しました。現時点でDevOpsは幅広く利用されていますが、セキュリティも追加されるようになっています。全てを自動化することによって、効率良いシステムのデプロイを実現できるのです。

脆弱性を解消するなどの効果を生み出しますが、まだまだDevSecOpsは発展途上といえます。明確な基準やケースは存在せず、プロジェクトやエンジニアが手探りで導入している状況です。そのため、短時間ではDevSecOpsを使いこなせず、効果を得られないかもしれません。

ただ、失敗を恐れていては、DevSecOpsのような新しい概念の導入は不可能です。基本的な部分は理解して、あとは臨機応変に、自分たちに適したものを導入していくようにしてみましょう。

SHAREこの記事をシェアする

admin