DevSecOpsとは?
本記事ではDevSecOps(デブセックオプス)について簡単にご説明していきます。
DevSecOpsとは?
DevSecOpsは、セキュリティの定義を拡大したもので、開発、セキュリティ、運用の頭文字をとったものです。これは、ソフトウェア開発ライフサイクル(SDLC)の早い段階でセキュリティを導入することを除けば、DevOps戦略と似ています。
以下に簡単な定義を4つまとめました
- 時間や品質を犠牲にすることなく、提供されるソフトウェアが適切にコーディングし、十分に強化されてるようSDLC 全体でセキュリティ メカニズムを継続的に構築するという考え方です。
- テスト、トリアージ、および、リスク軽減装置をCI/CDパイプラインのできるだけ早い段階で作業することによって、DevSecOpsはバグ修正を最小化することを目指します。
- DevOpsと同様に、「Shift Left」の一部で、開発者がSDLCの最終段階で課題を処理するのではなく、リアルタイムでセキュリティテストを実行しながら課題を修正できるようにします。
- SDLC全体(計画、設計、コーディング、テスト、手直し、リリース)にわたって実装する必要があり、リアルタイムのフィードバックと対応する改善を挟みます。
なぜDevSecOpsが重視されるようになったか
DevOpsを推進している企業であれば、セキュリティ対策は避けて通れません。DevOpsはシステム開発の工数の削減と開発期間を短縮して、コスト削減しながら質の良い製品をリリースすることが重要になります。
ただ、一方で開発期間の短縮とシステムの品質向上は相反するものであり、この二つを同時に実現するとなると他ツールの活用が求められます。
セキュリティの課題は運用時に明らかになりますが、DevOpsのライフサイクルで開発時にフィードバックする場合、開発スピードを犠牲にしなければなりません。そのため、あらかじめセキュリティを考慮した開発と運用のライフサイクルが必要になります。これがDevSecOpsの登場した直接的な背景と考えられます。
DevSecOps はどのように機能する?
プロセス自体は組織、チーム、業界、および要件によって異なりますが、DevSecOps は通常、次の 6 つの段階で構成されます。
計画 > コード > ビルド > テスト > リリース > デプロイ
このプロセスでは、開発の最後に単一のセキュリティ テスト スイートに依存するのではなく、CI/CD サイクルのすべての重要な神経接合部にセキュリティを組み込み、埋め込むことに重点を置いています。
1. 計画
この段階では、プロジェクトチーム メンバーとクライアントは、セキュリティを優先する開発戦略を協議、議論、レビュー、策定します。また、どのテストをいつ実行するか、各テストの範囲の深さなど、最適な利益を得るためにプロセスを編成する決定も行います。
また、多くの場合、リスク/ベネフィット分析を通して、必要なセキュリティ制御の数を分析する必要もあります。
2. コード
この時点でコードを作成するとき、開発者はセキュリティ管理を最優先事項に保つ必要があります。単体テスト、コード レビュー、静的コード分析、プレコミット フックなどの検証の実践を通じて、確実にすることが不可欠です。
3. ビルド
コードが作成され、コード リポジトリにコミットされると、ビルドが開始されます。ここでは、自動化が必須要件になります。CI/CD ツールは、セキュリティ プラクティス (静的アプリケーション テスト、コンポーネント分析など) を通じてコードを構築および実行します。この段階でセキュリティの不具合を見つけ出すために、ソース構成分析を介して外部の依存関係とサードパーティのアプリをスキャンするのが一般的です。
4. テスト
アーティファクトがテスト環境に移動すると開始されます。この前に複数のテストが実施されますが、これは最小実行可能な製品で包括的なテスト スイートを実行する場所です。
この段階では、動的アプリケーションセキュリティテスト(DAST)のようなメカニズムを使用して、欠陥をスキャンするため、時間がかかることが予想されます。テストでは、SQLやコードインジェクションのリスク、クロスサイトスクリプティング攻撃、バッファオーバーフロー、クロスサイトリクエストフォージェリ、認証、認可、APIエンドポイントなどの一般的な脅威を確認します。
5. リリース
上記の包括的なテストの後、実行環境のインフラストラクチャを調査し、構成管理の課題を検出し、一般的に動的なインフラストラクチャのセットアップの静的な構成について洞察を得ることに重点を置いています。
この段階では、構成管理レポの更新により、アプリケーションの複数の側面を変更する必要があります。
また、ユーザ制御アクセス、ネットワークファイアウォールアクセス、データ管理も再確認する必要があります。APIキーとアクセストークンを監査して、ロールベースのアクセス制御も忘れないようにしましょう。
6. デプロイ
アーティファクトが本番環境へ移行します。この段階では、実際のユーザー環境から見たセキュリティ上の懸念が生じます。チームは、ソフトウェアをチェックして、ステージング環境と本番環境の主な違いに合わせて調整します。一般的な例は、アプリケーションのトランスポート層セキュリティ (TLS) およびデジタル著作権管理 (DRM) 証明書の検証などがあります。
DevOps と DevSecOps の違いは?
DevOps | DevSecOps |
---|---|
サイロ化されたチーム、特に開発者チームと運用チームの解体を目指します。 | DevOps と同じことを目指しており、セキュリティ チームを参加させています。 |
アプリケーションの安定性や品質を損なうことなく、展開の頻度を増やす | DevOps の利点を活用しながら、業界最高のセキュリティ コントロールでアプリケーションを強化することを目的としています。 |
スピードと品質に焦点を当てた行程 | セキュリティ関連の速度も向上 |
セキュリティ関連を個別チームで行う | セキュリティをチーム全体で行う |
CI/CD、ソフトウェア テスト、構成管理、および継続的な監視のためのツールが必要 | DevOps ツールに加えて、静的アプリケーション セキュリティ テスト (SAST)、ソフトウェア構成分析 (SCA)、対話型アプリケーション セキュリティ テスト (IAST)、動的アプリケーション セキュリティ テスト (DAST) などのセキュリティ ツールが必要となる |
DevSecOpsはDevOpsに取って代わる?
DevSecOps は DevOps に取って代わるものではありませんが、その範囲と有効性を拡大して、安全で高品質のソフトウェアを提供します。
DevOps と同じように、アプリケーション全体に影響を与えるボトルネックになる前に、セキュリティの問題を検出して解消することが目標です。
PractiTest(プラクティテスト)に関する
お問い合わせ
PractiTest(プラクティテスト)のトライアルアカウントお申し込みや、製品デモの依頼、
機能についての問い合わせなどお気軽にお問い合わせください。