紹介
DevOps プラクティスにより、開発チームはアプリケーションをより迅速かつ頻繁にデプロイできます。 ただし、セキュリティのない速度はリスクを生み出します。 セキュリティの脆弱性に迅速に移行しても、ビジネスには役立ちません。 課題は、アプリケーションをライフサイクル全体にわたってセキュリティで保護しながら、速度を維持することです。
最新の開発におけるセキュリティの課題
DevOps チームは、前例のないインフラストラクチャにアクセスし、クラウド プラットフォームを介してスケーリングできます。 このアクセシビリティは、機会をもたらしますが、高度なセキュリティの脅威に組織を公開します。 すべてのアプリケーション展開は、ビジネス セキュリティ、顧客データ、組織の評判を危険にさらす可能性があります。
従来のセキュリティ アプローチは、最新の環境では失敗します。 ファイアウォールとネットワーク制御を使用してデータ センターを保護する境界ベースのセキュリティ モデルは、分散クラウド環境には変換されません。 アプリケーションは、複数のサービス、リージョン、クラウド プロバイダーにまたがる。 マイクロサービス、API、および外部統合間のデータ フロー。 従来の城と堀のアプローチでは、十分な保護が提供されなくなりました。
最新のセキュリティには、複数の防御レイヤーが必要です。 組織は、アプリケーション コード、インフラストラクチャ、ネットワーク、データ、ID など、複数のレベルでセキュリティを採用する必要があります。 セキュリティは 1 つのチェックポイントとして存在できません。 脅威を検出して防止する複数の機会を持つスタック全体に埋め込む必要があります。
DevSecOps アプローチ
継続的インテグレーションと継続的デリバリーを使用して、アプリケーションのセキュリティを確保し、セキュリティを維持するにはどうすればよいですか? 開発プロセスの早い段階でセキュリティの問題を見つけて修正するにはどうすればよいですか? 答えは、一般的に DevSecOps と呼ばれるプラクティスにあります。
共同責任としてのセキュリティ: DevSecOps では、セキュリティ チームとその機能が DevOps プラクティスに組み込まれており、セキュリティは別の機能ではなく、チームのすべてのユーザーの責任になります。 開発者、運用エンジニア、およびセキュリティ スペシャリストは、開発ライフサイクル全体で共同作業を行います。
セキュリティを左にシフト: セキュリティについては、開発の終了時に評価された後の評価を、すべてのプロセス ステップでの考慮事項に反映する必要があります。 この "シフト 左" アプローチでは、修正が簡単でコストが安い場合に、セキュリティの問題を早期にキャッチします。 コード レビュー中に見つかった脆弱性のコストは、運用環境で検出された脆弱性よりもはるかに少なくなります。
継続的なプロセスとしてのセキュリティ
アプリケーションのセキュリティ保護は、複数の領域を含む継続的なプロセスです。
セキュリティで保護されたインフラストラクチャ: 強化されたオペレーティング システム、適切に構成されたネットワーク、暗号化されたストレージ、セキュリティで保護された ID 管理など、セキュリティで保護された基盤を構築します。
階層型セキュリティを備えたアーキテクチャ: アーキテクチャに組み込まれているセキュリティを使用してアプリケーションを設計します。 複数のセキュリティ レイヤーを使用して多層防御を実装し、1 つのコントロールが失敗しても他のコントロールが有効なままになるようにします。
継続的なセキュリティ検証: パイプライン全体でセキュリティ テストを自動化します。 継続的インテグレーションとデプロイの一環として、セキュリティ スキャン、脆弱性評価、コンプライアンス チェックを実行します。
監視と応答: 運用環境のアプリケーションのセキュリティ上の脅威と異常な動作を監視します。 可能な場合は、自動修復で検出された問題に迅速に対応します。
包括的なセキュリティ アプローチ: セキュリティは全員の責任であり、初期設計から運用運用、最終的な使用停止まで、アプリケーション ライフサイクル全体にわたって包括的に対処する必要があります。
このモジュールで扱う内容
このモジュールでは、開発ライフサイクル全体にわたってセキュリティを統合する DevSecOps の概念とプラクティスについて説明します。
一般的な脆弱性: 最も一般的で危険なセキュリティの脆弱性の 1 つである SQL インジェクション攻撃について学習します。 これらの攻撃のしくみを理解することは、アプリケーションで攻撃を防ぐのに役立ちます。
DevSecOps の原則: DevSecOps と従来のセキュリティ アプローチの違い、および開発速度を犠牲にすることなく、既存の DevOps ワークフローにセキュリティ プラクティスを統合する方法について説明します。
パイプラインのセキュリティ: CI/CD パイプラインで重要な検証ポイントを検出します。ここでは、セキュリティ チェックを行う必要があります。 運用環境に到達する前に脆弱性をキャッチする自動セキュリティ テストを実装する方法について説明します。
脅威のモデリング: セキュリティ上の脅威を特定、評価、優先順位付けするための体系的なアプローチについて学習します。 脅威モデリングは、アプリケーションとビジネスにとって最も重大なリスクにセキュリティの取り組みを集中するのに役立ちます。
自動セキュリティ分析: 自動化されたセキュリティ分析を提供する GitHub CodeQL などのツールについて説明します。 これらのツールはコードの脆弱性とセキュリティ パターンをスキャンするため、コードの変更ごとに手動でセキュリティ レビューを行うことなく、問題を早期に見つけることができます。
セキュリティ チームの加速: 継続的インテグレーションとデプロイ パイプラインは、繰り返し行うセキュリティ チェックを自動化し、ソフトウェア開発チームとのコラボレーションを改善することで、セキュリティ チームの作業を実際に高速化できます。 セキュリティ チームは、日常的な変更を手動で確認するのではなく、複雑な脅威に集中できます。
学習目標
このモジュールを完了すると、次のことができるようになります。
- SQL インジェクション攻撃とそのアプリケーション セキュリティへの影響を特定して理解します。
- DevSecOps の原則と、開発ライフサイクル全体を通じてセキュリティがどのように統合されるかについて説明します。
- DevOps パイプラインの重要なポイントでセキュリティ検証を実装します。
- 脅威モデリングを実施して、セキュリティ リスクを特定し、優先順位を付けます。
- GitHub CodeQL を使用して、セキュリティ分析と脆弱性の検出を自動化します。
前提 条件
- DevOps の概念とプラクティスの理解。
- 継続的インテグレーションと継続的デプロイ パイプラインに関する知識。
- アプリケーション開発と一般的なセキュリティの概念に関する基本的な知識。
- Git などのバージョン管理システムの経験。
- ソフトウェアを提供する組織で経験を積むのに役立ちます。