DevOpsセキュリティのベストプラクティス
2021年3月16日
0 分で読めますDevOpsセキュリティとは、DevOpsのライフサイクルとバリューストリーム全体に情報セキュリティのポリシーと技術を適用することです。DevOpsは通常、ソフトウェア開発ライフサイクル(SDLC)のあらゆる段階に関わるため、効果的なセキュリティ対策がこれまで以上に重要になります。
ほとんどの組織にとって、情報セキュリティは目新しいものではありません。情報技術における主要な課題の一つは、侵害からどのように守るかということです。しかし、DevOpsのインフラは従来のITとは大きく異なります。DevOpsに情報セキュリティを効果的に適用するには、どうすればよいのでしょうか。
DevOpsセキュリティとは?
DevOpsセキュリティは、DevSecOpsの初期形態です。ソフトウェア開発ライフサイクル全体でセキュリティを重視し、開発者(Dev)と運用(Ops)チームの教育と支援を通じて、開発・デプロイするソフトウェアのセキュリティをより適切に管理できるようにすることを目指します。

DevOpsからDevSecOpsへの移行についてはこちらをご覧ください。
DevOpsセキュリティにおける4つの主な課題
従来型のITやソフトウェア開発から、現代的でアジャイルなアプローチへと移行したことで、新たなセキュリティ課題が生まれました。セキュリティツールだけでなく、文化、人材、プロセスも変える必要があります。DevOpsは開発と運用の融合と捉えられることが多い一方で、DevOpsとセキュリティは依然として分断されたままです。
1. 変化の速さ
セキュリティに大きな影響を与える要因の一つが、DevOpsにおける変化の速さです。レガシー環境では、新しいインフラは通常、物理的なベアメタルハードウェアとしてプロビジョニングされ、申請から利用可能になるまで長い時間がかかりました。ソフトウェア開発も一般にウォーターフォール型で、メジャーリリースは数か月または四半期ごとでした。それに対し、現代のアジャイル環境では、1日に複数回、本番環境へデプロイすることもあります。
さらに、クラウドベースのインフラを利用すれば、追加のキャパシティを数時間、数日ではなく、わずか数分で拡張できます。こうした要素が重なり、環境の変化の速度は大幅に上がっています。従来のテクノロジーやプロセスは、これほど変化の大きい環境に対応できるようには作られていません。
2. クラウドセキュリティ
もう一つの課題は、クラウドファーストのアーキテクチャが広く普及したことに直接起因します。従来のオンプレミス環境と比べて、クラウドは攻撃対象領域がはるかに広く、ネットワーク境界も曖昧です。プロビジョニングされたほぼすべてのリソースは、数回のクリックや数行のコードだけで、パブリックインターネットからアクセスできるように設定できます。従来のネットワークセキュリティは、ネットワークの境界が明確で、確立された少数の受信・送信経路があることを前提としていました。クラウドセキュリティの課題について詳しくはこちらをご覧ください。
3. ワークロードのコンテナ化
これもセキュリティ環境に新たな変数をもたらします。コンテナは現代的な開発・デプロイのワークフローに魅力的な機能を提供しますが、基盤となるエンジン、オーケストレーション、ネットワークの複雑さが増すため、監視・保護すべき攻撃経路も増えます。
4. コラボレーション
従来のセキュリティツール、テクノロジー、プロセスは、こうしたユースケースの多くを想定して設計されていません。サイロ化したセキュリティチームとエンジニアリングチームでは、DevOpsを優先する文化の迅速で反復的なペースに対応できません。セキュリティとエンジニアリングが孤立して運用されると、本来一元化できる業務や情報の共有が重複しがちです。
チーム間の足並みをそろえ、同じ情報源から同じ情報を得るためには、パイプラインを一つにまとめることも重要です。しかし実際には、同じマシンでSplunkエージェントを2つ稼働させ、一方をセキュリティチーム、もう一方をアプリケーションチームが使用している組織や、不正対策チームがセキュリティ部門とインフラ部門の両方からデータを受け取り、それぞれが完全に別個のイベントパイプラインを運用しているケースも珍しくありません。
CTFを始めよう
オンデマンドのバーチャル入門ワークショップで、CTFチャレンジの解き方を学びましょう。
DevSecOpsとは?
DevSecOpsとは、迅速なフィードバックを伴うソフトウェアデリバリーと組織の文化を特徴とするDevOpsモデルに、情報セキュリティのプラクティスを統合することです。DevOpsのサイクルの各段階に情報セキュリティを後付けするDevOpsセキュリティとは異なり、DevSecOpsは「シフトレフト」の考え方に基づいて、セキュリティとエンジニアリングの目標を統合します。

図2:セキュリティ目標を左へシフト
DevOpsセキュリティは通常、一般的な考え方や姿勢から始まります。DevOpsセキュリティにおいて、ツールだけですべてが解決するわけではありません。DevSecOpsのプラクティスは、ToDoリストの項目にチェックを入れることではありません。チームにセキュリティを重視する意識がなければ、プラットフォームのセキュリティを確保するという目標の達成はほぼ不可能です。
DevSecOpsでは、提供されるツールやプロセスを使い、ライフサイクルの各段階にセキュリティ目標を適用します。セキュリティチームがエンジニアリングチームや運用チームと分かれて活動している場合でも、より協力的な文化が生まれることがあります。開発と運用の責任共有はDevOpsの始まりから中核的な原則でしたが、セキュリティは依然として、サイロ化したセキュリティチームや組織との個別連携にとどまりがちでした。
DevSecOpsは、特に設計や開発の初期段階において、DevOpsのライフサイクル全体にセキュリティ目標を組み込むことを目指します。セキュリティの責任を「左にシフト」することで、問題がより高いSLAが求められる環境に持ち込まれる前に、開発者がセキュリティ修正を担えるようになります。
チームの人員が限られている企業では、シフトレフトによって、セキュリティチームが負う修正作業の負担を軽減できます。Redditでは、APIを自動化することで、小規模なセキュリティチームが多数のリポジトリを管理できるようになり、開発者自身がセキュリティ修正を担えるようにもなりました。
「リポジトリの問題を解消した後、新しいプルリクエストにセキュリティ上の脆弱性があれば失敗するよう、仕組みを切り替えました。これにより、Redditはセキュリティチームが主導する受動的な対応から、開発者を中心とした開発者主導の修正へと移行できました。これだけの作業を管理できたのは、Snyk APIを活用したからです。」
Redditのセキュリティ専門家、Spencer Koch Reddit
DevOpsとDevSecOpsのツール、特にCI/CDがもたらす迅速なフィードバック機能により、開発者は自動化されたセキュリティフィードバックにすぐに対応できます。手作業によるレビューサイクルをなくし、SDLC全体を通じてセキュリティ態勢を強化できます。
DevOpsからDevSecOpsへの移行
組織はDevOps文化からDevSecOps文化へどのように移行すればよいのでしょうか。答えは意外に思えるかもしれません。セキュリティを心配するのをやめることです。その代わり、全員がセキュリティに責任を持てるようにする必要があります。その取り組みを始めるための基本的な戦略をいくつかご紹介します。
前述のとおり、シフトレフトは本格的なDevSecOpsの取り組みにおける重要な領域です。SDLCの早い段階にセキュリティ目標を移すことで、全体的なセキュリティの成果を向上できます。具体的には、開発チームが完成したデプロイ成果物をセキュリティチームに渡し、SDLCの後半でレビューや報告を受けるのではなく、要件定義や設計を含む開発の初期段階から、セキュリティをシームレスに組み込みます。
これは、既存のワークフローに負担の大きい要件やプロセスを押し付けることではありません。各段階で摩擦をできるだけ減らすことが最終的な目標です。DevSecOpsによって、組織はセキュアなソフトウェア開発ライフサイクル(SSDLC)へと移行できます。

図3:DevSecOps + SDLC = SSDLC
シフトレフトの考え方をさらに進め、開発者やインフラエンジニアがセキュリティ目標を最初から最後まで担えるようにすることで、アプリケーションのセキュリティ態勢を強化できます。その実現には、自動化と迅速なフィードバックサイクルを重視することが欠かせません。開発者がコードをプッシュしたら、新機能や修正に関する潜在的なセキュリティ問題についてすぐにフィードバックを得られるようにします。実行可能なフィードバックがあれば、開発者は必要な変更を行い、セキュリティエンジニアが介入しなくても、組織はただちにセキュリティを強化できます。
Red Venturesでは、開発者にとって「摩擦のない」体験を重視したことで、特にコンテナ化されたワークロードなど、セキュリティの重要な側面を改善する取り組みがスムーズに受け入れられました。既存のワークフローを活用すれば、業務への影響を最小限に抑えながらセキュリティを強化できます。
この自動化をCI/CDにさらに統合することで、アプリケーションコードだけでなく、Infrastructure as Code(IaC)の変更も潜在的な問題がないか分析し、必要に応じて迅速にフィードバックを提供できます。
DevSecOpsでセキュリティの成果を高める

図4:DevSecOpsがもたらす価値
組織がDevOpsセキュリティへの懸念から脱却し、DevSecOpsを導入すれば、ソフトウェア開発とデリバリーをDevOps文化の次の段階へと進化させられます。DevSecOps文化では、セキュリティが運用と開発の協業モデルに加わります。
セキュリティを左にシフトするとは、最初からセキュリティ目標を組み込むことです。開発者、インフラエンジニア、運用担当者の全員が、セキュリティ問題に責任を持てるようになります。DevSecOps文化とツールに根付く迅速なフィードバックサイクルにより、CI/CDパイプラインなどの自動化を通じて、潜在的なセキュリティ問題を数時間や数日ではなく、数秒から数分で詳細に把握できます。
DevSecOpsの取り組みを支える最新のツールを選ぶことが重要です。従来のセキュリティツールやプロセスは、クラウドネイティブアーキテクチャにおける急速な変化に対応できるよう設計されていません。
CTFを始めよう
オンデマンドのバーチャル入門ワークショップで、CTFチャレンジの解き方を学びましょう。
DevSecOpsを導入すれば、組織はソフトウェアをより迅速かつ安全に提供し、最終的に顧客と自社の双方により大きな価値をもたらすことができます。