次の方法で共有


DevOps セキュリティ

DevOps セキュリティは、ソフトウェア開発ライフサイクル (SDLC) 全体のセキュリティ プラクティスを統合します。初期設計とコーディングからビルド、テスト、デプロイまで、運用環境に至ります。 セキュリティを最終ゲートとして扱う従来のセキュリティ アプローチとは異なり、DevOps セキュリティでは、開発パイプラインのすべてのステージにセキュリティ制御、自動テスト、継続的監視が組み込まれています。 このアプローチでは、最新のソフトウェア配信は、複雑な CI/CD パイプライン、サードパーティの依存関係、コードとしてのインフラストラクチャ、自動化されたデプロイに依存していることを認識しています。それぞれが、敵対者が積極的に悪用する潜在的な攻撃ベクトルを導入します。 ゼロ トラストの原則 (侵害を想定し、明示的に検証する) と多層防御戦略を適用することで、DevOps セキュリティにより、コード、依存関係、インフラストラクチャ構成、パイプライン プロセスが、運用環境を通じて設計から信頼でき、改ざんに対する耐性を維持できます。 包括的な DevOps セキュリティがないと、組織はサプライ チェーン攻撃、パイプラインでの資格情報の公開、悪意のあるコードインジェクション、脆弱なコンテナー イメージ、およびすべてのダウンストリーム コンシューマーに影響を与える永続的なバックドアを確立できる未承認のインフラストラクチャ変更などの重大なリスクに直面します。

DevOps セキュリティ ドメインの 3 つの主要な柱を次に示します。

設計とサプライ チェーンをセキュリティで保護します。 構造化された脅威モデリングを早期に実行します。 依存関係とライセンスのスキャン、脆弱性管理、SBOM 生成を使用してサプライ チェーンを保護します。 すべてのコンポーネントの実証と整合性を確認します。

関連するコントロール:

セキュリティコントロールの左シフト: SAST、シークレットスキャン、IaC スキャン、そしてDASTをCI/CDパイプラインに統合することで、セキュリティコントロールを強化できます。 デプロイ前にシークレット管理 (Key Vault など) を一元化し、パイプライン変更機関を制限し、成果物 (コンテナーや VM イメージなど) を継続的にスキャンしてセキュリティで保護します。

関連するコントロール:

DevOps アクティビティの監視と監査: DevOps の監査ログとセキュリティ ログを収集して、相関関係と対応のために中央の分析プラットフォームに転送します。 承認されていないパイプラインの変更、特権のエスカレーション、異常なコミット、および時間外の実行を検出します。

関連するコントロール:

DS-1: 脅威モデリングを実施する

セキュリティの原則

設計フェーズで STRIDE 手法を使用して体系的な脅威モデリングを実装し、潜在的なセキュリティ脅威を特定し、リスクに優先順位を付け、コード開発を開始する前に適切な軽減策を実装します。 このシフトレフトアプローチにより、修復コストが削減され、全体的なセキュリティ体制が向上します。

軽減すべきリスク

設計フェーズ中に脅威モデリングを実施できない組織は、敵対者が体系的に悪用する重大な盲点で動作します。 体系的な脅威分析なし:

  • 遅延アーキテクチャの欠陥: 埋め込み設計の脆弱性では、運用環境でコストの高いリファクタリングが必要です。修復コストは、設計フェーズ中の問題に対処するよりも大幅に高くなります。
  • 未確認の攻撃面: セキュリティで保護されていない信頼境界、不足している認証要件、不適切なデータ フロー保護などの脅威ベクトルは文書化されたままであり、攻撃者は、防御者が認識しない既知の弱点を悪用できます。
  • 不十分なセキュリティ制御: 不完全な脅威分析の結果として、セキュリティ制御 (暗号化、認証、承認、監査ログ) が見つからないか不十分で、多層防御戦略に悪用可能なギャップが生じます。
  • コンプライアンスの盲点: セキュリティで保護された設計検証を管理する規制要件 (PCI-DSS、HIPAA、SOX) は、文書化された脅威モデルと軽減の証拠がないと満たされません。
  • セキュリティ債務の蓄積: 脅威モデリングを伴わない継続的な機能の追加により、セキュリティの技術的負債が増え、システムは徐々に脆弱になり、さかのぼってセキュリティで保護することが困難になります。

脅威モデリングの欠如により、侵害の可能性が高くなり、侵入滞在時間が延長され、修復にかかるコストが大幅に上昇し、設計段階での早期軽減策と比べて高くなります。

MITRE ATT&CK

  • 初期アクセス (TA0001): 脅威モデリングによって識別される認証、セッション管理、または入力検証のアーキテクチャ上の欠陥を利用して、公開アプリケーション (T1190) を悪用します。
  • 特権エスカレーション (TA0004): 昇格制御メカニズムの悪用 (T1548) による、特権の分離が不十分であるか、システム アーキテクチャでの承認チェックが不足しています。
  • 防御回避 (TA0005): 不足している監査ログ、監視ギャップ、またはシステムに設計された不十分なセキュリティ テレメトリを悪用する防御 (T1562) を損ないます。

DS-1.1: STRIDE ベースの脅威モデリングを実装する

設計フェーズ中の体系的な脅威モデリングは、開発を開始する前に脆弱性を特定することで、セキュリティで保護されたソフトウェア アーキテクチャの基礎を提供します。 設計段階でセキュリティの問題に対処すると、修復コストが大幅に削減され、アーキテクチャの欠陥が実稼働システムに埋め込まれるのを防ぐことができます。 早期の脅威の識別により、セキュリティ制御が後で改良されるのではなく、アーキテクチャに組み込まれます。

脅威モデリングを確立するには、次の構造化されたアプローチを実装します。

  • 体系的な STRIDE 手法を確立する: STRIDE 手法 (スプーフィング、改ざん、否認、情報漏えい、サービス拒否、特権の昇格) を使用して、必須の設計フェーズ アクティビティとして体系的な脅威モデリングを確立します。 まず、システム コンポーネント、データ フロー、信頼境界、外部依存関係をマップするデータ フロー 図 (DFD) を作成します。 コンポーネントとデータ フローごとに、6 つの STRIDE カテゴリすべてに対する潜在的な脅威を体系的に評価し、可能性と影響に基づいてリスクに優先順位を付け、開発を開始する前に特定の軽減策を文書化します。

  • 構造化された脅威モデリング ツールを使用する:Microsoft Threat Modeling Tool などの構造化された脅威モデリング ツールを使用して一貫性を維持し、一般的なアーキテクチャ パターン (Web アプリケーション、API、マイクロサービス、IoT ソリューション) 用の事前構築済みテンプレートを活用します。 このツールは、DFD の作成、コンポーネントの種類とデータ フローに基づく脅威の自動識別を容易にし、関連するセキュリティ制御に対して実行可能な軽減策の推奨事項を生成します。 脅威モデルをバージョン管理された成果物としてアーキテクチャ ドキュメントと共にソース管理に格納します。

  • 開発ワークフローに統合する: 明確な所有権、優先順位、および受け入れ基準を使用して、識別された脅威を Azure DevOps 作業項目にエクスポートすることで、脅威モデリングの出力を開発ワークフローに直接統合します。 設計承認前に完了した脅威モデルを必要とするアーキテクチャ レビュー ゲートを実装し、アーキテクチャの変更が検出されたときに脅威モデルのレビューをトリガーするプル要求チェックを確立します。 これにより、脅威分析は、開発ライフサイクル全体を通じてシステムの進化と同期されたままになります。

DS-1.2: 脅威分析の統合を自動化する

大規模な組織間で脅威モデリングをスケーリングするには、セキュリティ レビューが開発のボトルネックにならないように、自動化と分散機能が必要です。 プロジェクトの開始プロセスとプル要求プロセスに埋め込まれた自動化された脅威識別ワークフローにより、すべてのプロジェクトに対して手動による介入なしで一貫したセキュリティ分析が保証されます。 有効化プログラムを通じて開発チーム内にセキュリティの専門知識を構築することで、持続可能でスケーラブルな脅威モデリングプラクティスが作成されます。

これらの自動化と有効化の機能を実装します。

  • 自動化と有効化によるスケーリング: 自動化と有効化を通じて組織全体で脅威モデリングをスケーリングします。 リスク レベルを自動的に評価し、脅威モデリング要件を決定し、データ分類、外部公開、規制スコープに基づいて適切なセキュリティ レビュー チェックポイントを割り当てる、プロジェクト開始テンプレートにセキュリティ アンケートを埋め込みます。 プル要求ワークフローにおいて、システム境界、認証フロー、またはデータ処理ロジックの変更を検出し、それらの変更を脅威モデルの検証のためにセキュリティアーキテクトに送るアーキテクチャレビューのトリガーを自動化します。

  • セキュリティ チャンピオンを使用して分散機能を構築する: 開発チーム内で分散型脅威モデリング機能を構築するためのセキュリティ チャンピオン プログラムを確立します。 STRIDE 手法に関するチャンピオンをトレーニングし、脅威モデリング ツールとテンプレートを提供し、チームの脅威モデリング セッションを促進できるようにします。 セキュリティチャンピオンは、最初の審査役割を果たし、複雑なシナリオを中央のセキュリティチームにエスカレートさせつつ、ほとんどの脅威モデリングが滞りなく行えるようにします。

脅威分析の自動化された実装:

  • アンケートベースの評価: 一貫した脅威の識別のために Azure DevOps テンプレートに統合された標準化されたセキュリティ アンケート
  • セキュリティ チャンピオン プログラム: 脅威モデリングの促進に関するトレーニングを受けた各開発チームの指定されたセキュリティ チャンピオン
  • アーキテクチャ レビューの自動化: 脅威モデルのレビューを必要とするアーキテクチャ ダイアグラムの更新に対するプル要求の自動チェック
  • コードとしての脅威モデル: 自動分析を可能にする構造化形式 (JSON/YAML) を使用したバージョン管理された脅威モデル定義

実装例

ある金融サービス組織がデータ侵害を受けたのは、攻撃者が開発中に特定されなかった支払い API の承認の欠陥を悪用し、重大な不正なトランザクションと規制上の罰金が発生した場合です。

挑戦: セキュリティ レビューなしで多数の API がデプロイされたマイクロサービス アーキテクチャ。 開発チームには、脅威を特定するためのセキュリティの専門知識が不足しています。 運用環境のインシデントの後にのみ検出されたアーキテクチャのセキュリティの問題。

ソリューションのアプローチ:

  • STRIDE 脅威モデリング: アーキテクチャと機密データ フローを示すデータ フロー ダイアグラムを使用して、すべてのマイクロサービスと API エンドポイントに 対して Microsoft Threat Modeling Tool を実装しました。
  • セキュリティ チャンピオン プログラム: 各開発チームのトレーニング済みの脅威モデリング ファシリテーターにより、中央のセキュリティ チームにボトルネックを発生させることなく、設計によるセキュリティを実現できます。
  • 自動化されたワークフロー統合: アーキテクチャの変更に対するセキュリティの承認を必要とする Azure DevOps プル要求ワークフローへの統合脅威モデル レビュー。

結果: 潜在的な侵害を防ぐ、デプロイ前に多数のセキュリティ問題を特定しました。 運用環境のセキュリティの脆弱性が大幅に減少しました。 セキュリティ レビューにより、開発サイクルに最小限の時間が追加されました。

重要度レベル

持っている必要があります。

コントロール マッピング

  • NIST SP 800-53 Rev.5: SA-11、SA-15、PL-8、RA-3、RA-5
  • PCI-DSS v4: 6.3.1、6.3.2、12.3.1
  • CIS コントロール v8.1: 14.2、14.3
  • NIST CSF v2.0: ID.RA-3、PR。IP-2
  • ISO 27001:2022: A.5.12、A.8.25
  • SOC 2: CC3.2、CC7.1

DS-2: ソフトウェア サプライ チェーンをセキュリティで保護する

セキュリティの原則

統合前にすべてのサード パーティ コンポーネントの実証、整合性、およびセキュリティ体制を確認することで、依存関係に対するゼロ トラストを実装します。 脆弱性の依存関係を継続的にスキャンし、包括的なソフトウェア部品表 (SBOM) を維持し、サプライ チェーン攻撃面を最小限に抑えるために自動セキュリティ更新プログラムを適用します。

軽減すべきリスク

ソフトウェア サプライ チェーン攻撃は、敵対者が組織とサード パーティコンポーネント間の信頼関係を悪用し、最小限の労力で広範囲にわたる影響を達成するため、重大な脅威をもたらします。 包括的なサプライ チェーン のセキュリティなし:

  • 悪意のある依存関係: 敵対者は、一般的なオープンソース ライブラリ (SolarWinds スタイルの攻撃) にバックドアを挿入したり、インストールまたは実行時に悪意のあるコードを実行する誤ったパッケージを作成したりします。
  • 脆弱なサード パーティ製ライブラリ: 依存関係の既知の CVE (Log4Shell、Heartbleed、スラットの脆弱性) は、可視性と自動脆弱性管理がないため、数週間または数か月間パッチが適用されません。
  • 侵害されたビルド成果物: 攻撃者は、ストレージまたは転送中にコンパイル済みのバイナリ、コンテナー イメージ、またはデプロイ パッケージを改ざんし、ソース コード レビューをバイパスするマルウェアを挿入します。
  • 依存関係の混乱攻撃: 悪意のあるアクターは、内部プライベート パッケージと一致する名前を持つパブリック リポジトリにパッケージをアップロードし、パッケージ マネージャー解決ロジックを利用して悪意のあるコードを置き換えます。
  • 推移的な依存関係のリスク: 間接的な依存関係 (依存関係の依存関係) の脆弱性は、詳細な依存関係ツリー分析と SBOM の生成なしでは非表示のままです。
  • 実証検証の欠如: 暗号化検証がない場合、正当なパッケージが悪意のあるバージョンに置き換えられるパッケージ置換攻撃が可能になります。

サプライ チェーンの侵害により、広範な影響、信頼できるライブラリでの永続的なバックドア、正当な外観による高い回避が可能になります。

MITRE ATT&CK

  • 初期アクセス (TA0001): ソフトウェアの依存関係と開発ツールの侵害によるサプライ チェーン侵害 (T1195.001) によるターゲット環境での初期の足掛かりを獲得し、信頼できる関係 (T1199) が組織とサード パーティのソフトウェア ベンダー間の信頼を利用して悪意のある更新プログラムを提供します。
  • 実行 (TA0002):依存関係インストール スクリプトまたはインストール後フックに埋め込まれた悪意のあるコードを実行するコマンドおよびスクリプト インタープリター (T1059)。
  • 永続性 (TA0003): コンパイル済みライブラリにバックドアを埋め込み、アプリケーションの更新後もクライアントソフトウェアのバイナリを継続して侵害します。

DS-2.1: 依存関係のスキャンと管理を実装する

包括的な依存関係のセキュリティ管理により、すべてのサードパーティ コンポーネントの可視性を維持し、脆弱性を継続的に監視し、修復プロセスを自動化することで、サプライ チェーン攻撃を防ぐことができます。 最新のアプリケーションは、数百または数千の依存関係 (直接的および推移的) に依存しているため、手動によるセキュリティ評価が不可能になり、脆弱なライブラリを介して広範な攻撃対象領域が作成されます。 継続的な監視による依存関係の自動スキャンにより、組織は悪用前に脆弱性を検出して修復できます。

次のコア機能を使用して、継続的な依存関係のセキュリティを確立します。

  • 包括的な可視性と SBOM 生成を確立します。 包括的な可視性、自動化された脆弱性検出、プロアクティブな修復の 3 つのコア機能を使用して、継続的な依存関係セキュリティ管理を確立します。 まず、すべてのリポジトリで直接依存関係 (パッケージ マニフェストで明示的に宣言) と推移的な依存関係 (依存関係の依存関係) の両方をマップする完全な依存関係インベントリを生成します。 規制コンプライアンスとインシデント対応の準備のために、業界標準の形式 (SPDX、CycloneDX) でソフトウェア部品表 (SBOM) を維持します。

  • 脆弱性の自動スキャンと修復を実装します。 National Vulnerability Database (NVD)、GitHub Advisory Database、および言語固有のセキュリティ アドバイザリに対する依存関係を継続的に監視する自動脆弱性スキャンを実装します。 適切なチームへの重大度ベースのルーティングを使用して、依存関係スタックに影響を与える新しい CVE が開示されたときにリアルタイムアラートを構成します。 依存関係バージョンのアップグレードでプル要求を生成する自動セキュリティ更新機能を有効にします。これには、互換性テストや、手動による修復の負担を軽減するためのインテリジェントなマージ競合解決が含まれます。

  • セキュリティ検証を開発ワークフローに統合する: 依存関係の変更によるセキュリティへの影響を自動的に評価するプル要求レビューを使用して、依存関係のセキュリティ検証を開発ワークフローに直接統合します。これにより、既知の脆弱性、ライセンス コンプライアンスの問題、疑わしい特性 (入力ミス、保守者の評判の欠如) を含む新しい依存関係にフラグが設定されます。 危険度の高い依存関係の変更の承認ゲートを確立し、重要な脆弱性を持つ依存関係が保護されたブランチにマージされないようにするポリシーを適用します。

  • 運用環境への可視性の拡張:Microsoft Defender for Cloud DevOps Security などのツールを使用して、ソース コードを超える可視性をデプロイされた環境に拡張し、コードの依存関係を実行中のワークロードと関連付け、依存関係チェーンを介して攻撃パスを特定し、理論的なリスクだけでなく、実際の運用環境の露出に基づいて修復に優先順位を付けます。 GitHub Advanced Security などのツールは、包括的な依存関係グラフの視覚化、Dependabot 主導の自動更新、独自のパッケージ エコシステムに対するカスタム脆弱性パターンのサポートを提供します。

実装例

ある医療機関が、患者データを数か月間流出させた運用環境アプリケーションで悪意のある npm パッケージを検出しました。 調査では、重大な Log4Shell の脆弱性を含む既知の CVE との広範な脆弱な依存関係が明らかになっています。

挑戦: 脆弱性や悪意のあるパッケージを可視化しない数百のリポジトリにわたる何千もの依存関係。 手動の依存関係レビューは、アプリケーションごとに数週間消費されました。 規制監査では、重要なサプライ チェーンのギャップが特定されました。

ソリューションのアプローチ:

  • 脆弱性管理の自動化: 依存関係をスキャンし、セキュリティ更新プログラムのプル要求を自動的に作成することで、 GitHub Advanced Security を有効にしました。
  • サプライ チェーンの透明性: 規制コンプライアンスとインシデント対応のためのソフトウェア部品表を SPDX 形式で生成する Microsoft SBOM ツール を実装しました。
  • パッケージの検証: 署名の検証と依存関係のピン留めを使用して Azure Artifacts を構成し、混乱攻撃や未承認のパッケージの置換を防ぎます。
  • DevOps のセキュリティ監視: コードからクラウドへの追跡可能性 のために Microsoft Defender for Cloud DevOps Security をデプロイしました。

結果: 広範な脆弱な依存関係を迅速に検出して修復しました。 自動検証により、複数の悪意のあるパッケージ インシデントを防止しました。 包括的な SBOM ドキュメントを使用して規制コンプライアンスを達成しました。

重要度レベル

持っている必要があります。

コントロール マッピング

  • NIST SP 800-53 Rev.5: SR-3、SR-4、SR-6、SA-12、SA-15(9)、RA-5
  • PCI-DSS v4: 6.2.4、6.3.2、6.3.3
  • CIS コントロール v8.1: 16.1、16.2、16.11
  • NIST CSF v2.0: ID.SC-2、ID.SC-4、DE。CM-8
  • ISO 27001:2022: A.5.19、A.5.22、A.5.23
  • SOC 2: CC3.2、CC8.1

DS-3: DevOps インフラストラクチャをセキュリティで保護する

セキュリティの原則

包括的なシークレット管理、承認ゲートを使用したパイプライン アクセス制御、セキュリティで保護されたビルド エージェント構成、継続的な監視を通じて、ビルド インフラストラクチャの多層防御を実装します。 ハードコーディングされた資格情報を排除し、最小特権アクセスを適用して、ソフトウェアの開発および展開プロセスの整合性を保護します。

軽減すべきリスク

安全でない DevOps インフラストラクチャは、敵対者がソフトウェア配信チェーン全体を侵害するために悪用する重大な脆弱性を作成します。 包括的なインフラストラクチャ セキュリティがない場合:

  • 侵害された CI/CD パイプライン: 攻撃者は、盗まれた資格情報、悪用された脆弱性、またはインサイダー アクセスを通じてビルド パイプラインにアクセスし、すべてのダウンストリーム コンシューマーに影響を与えるコード挿入、アーティファクトの改ざん、またはデプロイ操作を可能にします。
  • ビルド ログと成果物で公開されたシークレット: ハードコーディングされた資格情報、API キー、証明書、接続文字列は、パイプライン ログ、エラー メッセージ、またはコンパイルされた成果物を通じて漏洩し、攻撃者に運用環境への直接アクセスを提供します。
  • 承認されていないパイプラインの変更: 変更制御と承認ワークフローがない場合、悪意のあるアクターはパイプライン定義を変更したり、悪意のあるビルド手順を挿入したり、検出せずにデプロイ構成を変更したりできます。
  • アクセス制御が不十分: ロールの割り当てが過度に制限され、職務が分離されていないことにより、DevOps インフラストラクチャ内での横移動、特権エスカレーション、永続的なアクセス確立が可能になります。
  • セキュリティで保護されていないビルド エージェント: 修正プログラムが適用されていない、正しく構成されていない、または侵害されたビルド エージェントは、攻撃者にビルド環境への永続的なアクセスと、運用ネットワークへの潜在的なピボット ポイントを提供します。
  • 不足している監査証跡: DevOps アクティビティのログ記録と監視が不十分な場合、不正アクセス、疑わしい変更、または内部関係者の脅威の検出を防ぐことができます。

インフラストラクチャの侵害により、攻撃者はソースにコードを挿入し、信頼できるパイプラインをバイパスし、すべてのダウンストリーム アプリケーションに影響を与えます。

MITRE ATT&CK

  • 初期アクセス (TA0001): DevOps プラットフォームとパイプラインにアクセスするために、盗まれた資格情報またはサービス プリンシパル シークレットを使用する有効なアカウント (T1078)。
  • 永続化 (TA0003): バックドア サービス プリンシパル、個人用アクセス トークン、または維持されるアクセス用の SSH キーを作成するアカウント操作 (T1098)。
  • 資格情報アクセス (TA0006): パイプライン ログ、環境変数、または構成ファイルからシークレットを収集するセキュリティで保護されていない資格情報 (T1552.001)。
  • 防御回避 (TA0005): パイプライン定義のセキュリティ スキャン手順、監査ログ、または承認ゲートを無効にする防御 (T1562) を損ないます。

DS-3.1: パイプラインのシークレット管理を実装する

一元化されたシークレット管理では、コード、構成ファイル、およびパイプライン定義からハードコーディングされたシークレットを削除することで、DevOps パイプラインでの資格情報の公開を排除します。 パイプライン YAML、環境変数、またはソース リポジトリに埋め込まれた資格情報は、パイプライン侵害の主要な攻撃ベクトルを表し、リポジトリまたはログにアクセスする攻撃者が運用資格情報を抽出できるようにします。 動的な取得と Just-In-Time アクセス パターンを使用して暗号で保護されたシークレット ストレージを実装すると、運用効率を維持しながら資格情報の盗難を防ぐことができます。

次のセキュリティコントロールを使用してシークレット管理を構成します。

  • 一元化されたストレージを使用してハードコーディングされた資格情報を排除します。 暗号化アクセス制御と包括的な監査証跡を使用して、専用シークレット管理インフラストラクチャ内のすべてのシークレットを一元化することで、パイプライン定義とソース コードからハードコーディングされた資格情報を排除します。 シークレットをパイプライン YAML ファイル、ログに表示される環境変数、またはリポジトリ内の構成ファイルに格納してはならないという原則を確立します。これらは、DevOps 環境での資格情報の公開の主なベクトルです。

  • マネージド ID を使用して動的シークレットの取得を構成します 。暗号化されたシークレット ストレージ、詳細なアクセス ポリシー、シークレットの自動ローテーション、包括的な監査ログを提供する Azure Key Vault などのソリューションを使用して、一元化されたシークレット ストレージを実装します。 パイプライン定義にシークレットを埋め込むのではなく、セキュリティで保護されたサービス接続を使用して実行時に動的にシークレットを取得するようにパイプラインを構成します。 マネージド ID またはワークロード ID フェデレーションを使用してシークレット ストアへのパイプライン アクセスを認証し、それ自体が盗難の対象となる有効期間の長いサービス プリンシパル資格情報の必要性を排除します。

  • 承認ゲートを使用して Just-In-Time アクセスを適用する: 必要なときにのみシークレットが取得される Just-In-Time シークレット アクセス パターンを適用し、パイプラインの完了後に自動失効を行い、資格情報の有効期間の公開を最小限に抑えます。 時間制限付きのアクセス制限を実装し、運用シークレットへのパイプライン アクセスに対して複数人の承認 (承認ゲート) を必要とするため、侵害された単一のアカウントが追加の検証なしで機密性の高い資格情報にアクセスできなくなります。

  • 階層型インフラストラクチャのアクセス制御を確立します。 DevOps インフラストラクチャの階層型アクセス制御を確立します。パイプラインの変更権限をセキュリティレビュー担当者に制限し、運用デプロイの承認を必要とする環境固有のアクセス許可を適用し、パイプラインが意図したスコープ外のシークレットにアクセスできないようにするリポジトリレベルのサービス接続制限を実装し、機密性の高いワークロードのネットワーク分離を使用して強化されたセルフホステッド ビルド エージェントをデプロイします。 コードとしてのインフラストラクチャのセキュリティ スキャンをパイプラインに統合して、シークレットを公開したり、未承認のアクセス パスを作成したりする可能性のある正しく構成されていないリソースのデプロイを防ぎます。

実装例

ある小売組織は、攻撃者がパイプライン ログで見つかった盗まれたサービス プリンシパル資格情報を使用して運用データベースにアクセスし、何百万もの顧客レコードを公開したときに侵害を受けた。

挑戦: パイプライン変数にハードコーディングされたデータベース接続文字列と API キー。 パイプラインのアクセス許可が過度に緩和されていたため、開発者は誰でも運用環境にデプロイできる状態でした。 エージェントの妥協によりインフラストラクチャへの継続的なアクセスが確保されました。

ソリューションのアプローチ:

  • 一元化されたシークレット管理: パイプラインからハードコーディングされたシークレットを排除する Azure Key Vault 統合を実装しました。 資格情報の公開リスクを削除するマネージド ID 認証を構成しました。
  • パイプラインのアクセス制御: 運用環境のデプロイに対するセキュリティ チームの承認を必要とする Azure DevOps Environment を使用して、承認ゲートと環境固有のアクセス許可を確立しました。
  • 強化されたビルド エージェント: 規制対象データを処理する機密性の高いワークロード用のセキュリティ強化とネットワーク分離を備えたセルフホステッド エージェントをデプロイしました。
  • インフラストラクチャ のセキュリティ スキャン: ARM テンプレートと Terraform 構成の統合されたセキュリティ検証により、誤った構成のデプロイが防止されます。

結果: 資格情報の盗難を防ぐパイプライン ログからシークレットを排除しました。 プロダクション環境への承認されていないデプロイを排除しました。 デプロイ前にインフラストラクチャの構成ミスが検出され、ブロックされました。

重要度レベル

持っている必要があります。

コントロール マッピング

  • NIST SP 800-53 Rev.5: AC-2、AC-3、AC-6、SC-12、SC-13、AU-2、AU-6
  • PCI-DSS v4: 8.3.2、8.6.1、8.6.3、12.3.3
  • CIS コントロール v8.1: 4.1、4.7、6.1、6.5
  • NIST CSF v2.0: PR。AC-4、PR。DS-5、DE。CM-7
  • ISO 27001:2022: A.5.15、A.5.16、A.8.3
  • SOC 2: CC6.1、CC6.6、CC6.7

DS-4: 静的アプリケーション セキュリティ テスト (SAST) を統合する

セキュリティの原則

すべてのビルド プロセスに統合された複数の特殊な静的アプリケーション セキュリティ テスト (SAST) スキャナーを使用して、包括的な自動セキュリティ テストを実装します。 マルチスキャナー カバレッジを使用して包括的な検出を行い、プッシュ保護を使用してシークレット スキャンを実装し、セマンティック コード分析をデプロイして脆弱性を特定し、運用環境に到達する前にブロックします。

軽減すべきリスク

開発中に検出をエスケープするコード レベルの脆弱性により、敵対者が体系的に悪用する永続的なセキュリティの弱点が生じます。 SAST 統合が包括的でない場合:

  • インジェクションの脆弱性: SQL インジェクション、クロスサイト スクリプティング (XSS)、コマンド インジェクション、LDAP インジェクションの欠陥により、攻撃者はアプリケーション ロジックを操作したり、機密データを抽出したり、任意のコードを実行したりできます。
  • ハードコーディングされた資格情報: 開発者は、パスワード、API キー、証明書、接続文字列をソース コード リポジトリに誤ってコミットし、攻撃者に運用システムとデータへの直接アクセスを提供します。
  • セキュリティで保護されていない暗号化の実装: 弱い暗号化アルゴリズム (DES、MD5)、ハードコーディングされた暗号化キー、不適切な初期化ベクトル、またはキーの長さが不十分な場合は、データの機密性と整合性が損なわれます。
  • バッファーオーバーフローとメモリ破損: C/C++ アプリケーションでの安全でないメモリ操作により、任意のコード実行、特権エスカレーション、サービス拒否攻撃が可能になります。
  • ビジネス ロジックの欠陥: 認証では、バイパス、承認のギャップ、競合状態、入力検証が不十分なため、特権エスカレーション、不正アクセス、未承認アクセスが可能になります。
  • コードとしてのインフラストラクチャ (IaC) の構成ミス: 安全でない Terraform、ARM テンプレート、または Kubernetes マニフェストは、アクセスが過度に制限されている、暗号化が不足している、または公開されている管理エンドポイントを使用して、脆弱なインフラストラクチャをデプロイします。

自動 SAST がない場合、脆弱性は技術的負債として蓄積され、ドウェル時間が長くなり、運用環境で修復するためにコストがかかります。

MITRE ATT&CK

  • 初期アクセス (TA0001): 公開アプリケーション (T1190) を悪用し、インジェクションの脆弱性を利用するか、アプリケーション コードで認証バイパスを回避します。
  • 実行 (TA0002): クライアント側の脆弱性であるXSSや安全でない逆シリアル化を利用したクライアント実行 (T1203) のための悪用。
  • 資格情報アクセス (TA0006): ソース コード、構成ファイル、またはコンパイル済みバイナリからハードコーディングされた資格情報を抽出するパスワード ストア (T1555) からの資格情報。
  • 特権エスカレーション (TA0004): バッファーオーバーフローまたはメモリ破損を悪用して特権を昇格させる攻撃 (T1068)。

DS-4.1: マルチスキャナー SAST パイプラインを実装する

すべてのビルドに統合された包括的な静的アプリケーション セキュリティ テストでは、運用環境に到達する前にコード レベルの脆弱性を早期に検出できます。 最新のアプリケーションでは、さまざまな言語、フレームワーク、および特殊なアナライザーを必要とするコードとしてのインフラストラクチャを使用します。単一のスキャナーではすべての脆弱性クラスが検出されません。 特殊なツールと自動実行と品質ゲートを組み合わせた多層 SAST 戦略により、包括的なカバレッジを確保しながら、セキュリティの問題が検出されたときに開発者に即座にフィードバックを提供します。

次のコンポーネントを使用して自動セキュリティ テストを実装します。

  • 多層スキャン戦略を実装する: コードが運用環境に到達する前に脆弱性を検出するために、自動化された静的アプリケーション セキュリティ テストをすべてのビルドに埋め込みます。 複数の特殊なスキャナーを組み合わせた多層 SAST 戦略を実装します。単一のツールではすべての脆弱性クラスが検出されないため、包括的なカバレッジには言語固有のアナライザー (Python、JavaScript、C/C++)、コードとしてのインフラストラクチャ スキャナー (Terraform、ARM テンプレート、Kubernetes マニフェスト)、複雑なデータフローの脆弱性に対するシークレット検出、セマンティック コード分析が必要です。

  • 品質ゲートを使用して自動実行を構成します。 コミットとプル要求のたびに自動的に実行されるように SAST スキャンを構成し、コード コンテキストが最新である間、セキュリティの問題に関するフィードバックを開発者にすぐに提供します。 重大または重大度の高い脆弱性が検出されたときにマージまたはデプロイをブロックする重大度ベースの品質ゲートを確立し、脆弱なコードがパイプラインを進むのを防ぎます。 スキャナーを構成して、標準化された形式 (SARIF) で結果を出力し、一貫した脆弱性追跡、ツール間の重複除去、および一元化されたセキュリティ ダッシュボードとの統合を可能にします。

  • プッシュ保護を使用してシークレット スキャンを展開する: プッシュ保護を使用して特殊なシークレット スキャンを実装します。これにより、開発者は、数週間後に監査レビューでシークレットを検出するのではなく、コミット時にリポジトリでシークレットをキャッチする資格情報、API キー、証明書、またはトークンをコミットできなくなります。 独自の認証メカニズムに対して、標準のシークレット パターン (AWS キー、Azure トークン、データベース接続文字列) とカスタム組織固有のパターンの両方をサポートします。 シークレットが検出されたら、資格情報のローテーション手順やセキュリティで保護された代替手段など、直ちに修復ガイダンスを提供します。

  • 複雑な脆弱性にセマンティック コード分析を使用する: 詳細なデータフロー分析を実行する GitHub CodeQL などのセマンティック コード分析ツールをデプロイして、複数の関数呼び出しによる SQL インジェクション、ビジネス ロジックでの認証バイパス、安全でない逆シリアル化チェーンなど、パターンマッチング スキャナーに見えない複雑な脆弱性を特定します。 組織のフレームワーク、セキュリティ要件、インシデント振り返りで識別される一般的な脆弱性パターンに合わせてカスタマイズされたカスタム セキュリティ クエリを作成します。 特定の行番号、脆弱性の説明、修復の推奨事項を含む pull request コメントを使用して、SAST の結果を開発者ワークフローに直接統合します。

  • 統合プラットフォームを使用して調整する:Microsoft Security DevOps 拡張機能などの統合 SAST プラットフォームでは、1 つのパイプライン タスクを通じて複数の特殊なスキャナー (マルウェア対策、バンディット、BinSkim、Checkov、ESLint、Template Analyzer、Terrascan、Trivy) を調整し、異種ツール エコシステム全体で構成管理と結果集計を標準化できます。

実装例

SaaS プロバイダーが SQL インジェクション攻撃を受け、何十万もの顧客レコードが公開されました。 インシデント後の分析では、ハードコーディングされた資格情報や、数か月間存在していたインジェクションの欠陥など、広範なコード レベルの脆弱性が明らかになります。

挑戦: 手動のコード レビューでは、ほんの一部の脆弱性のみが検出されました。 開発者は、インジェクションの欠陥と暗号の弱点を特定するためのセキュリティ トレーニングを欠いていました。 運用環境のデプロイ前に自動スキャンを行う必要はありません。

ソリューションのアプローチ:

  • マルチスキャナー SAST: CodeQL、ESLint、Bandit を使用して Microsoft Security DevOps 拡張機能 を展開し、言語と脆弱性の種類を網羅しています。
  • シークレット保護: コミットでの資格情報の公開を防ぐシークレット スキャンとプッシュ保護を備えた GitHub Advanced Security を実装しました。
  • セマンティック分析: ビジネス ロジックの脆弱性とフレームワーク固有のセキュリティ パターンに対するカスタム クエリを使用して GitHub CodeQL を構成しました。
  • セキュリティ ゲート:Azure Pipelines で確立されたパイプライン ゲートにより、重大度の高い結果のデプロイがブロックされます。

結果: 広範な脆弱性を迅速に特定し、修復しました。 重大なセキュリティ上の欠陥が運用環境に到達するのを防いだ。 セキュリティ負債が大幅に削減されました。

重要度レベル

持っている必要があります。

コントロール マッピング

  • NIST SP 800-53 Rev.5: SA-11、RA-5、SI-2
  • PCI-DSS v4: 6.3.2、6.4.1、11.3.1
  • CIS コントロール v8.1: 16.3、16.6
  • NIST CSF v2.0: PR。IP-2、DE。CM-4
  • ISO 27001:2022: A.8.25、A.8.29
  • SOC 2: CC7.1、CC7.2

DS-5: 動的アプリケーション セキュリティ テスト (DAST) を統合する

セキュリティの原則

コンテナー化されたワークロードのコンテナー セキュリティ スキャン、Web アプリケーションとアプリケーション プログラミング インターフェイス (API) の自動侵入テスト、認証、承認、セッション管理のための特殊なテストを通じて、実稼働前環境で包括的な動的セキュリティ テストを実装します。 ランタイム検証では、静的分析では検出できない構成の弱点と統合の脆弱性が識別されます。

軽減すべきリスク

静的分析では見えないランタイムの脆弱性により、敵対者がアプリケーションのデプロイ後に悪用する重大なセキュリティ ギャップが生じます。 包括的な DAST がない場合:

  • 展開構成の弱点: 正しく構成されていない認証プロバイダー、制限のない CORS、脆弱な TLS 構成、または不足しているセキュリティ ヘッダー (CSP、HSTS、X-Frame-Options) により、ソース レビューで検出できない攻撃が有効になります。
  • API セキュリティのギャップ: 認証バイパス、承認エラー、過剰なデータ公開、レート制限の欠落、または安全でない直接オブジェクト参照 (IDOR) を使用する REST および GraphQL API では、不正アクセスとデータ抽出が可能です。
  • 認証と承認のバイパス: セッション管理、パスワード リセット フロー、多要素認証の実装、またはロールベースのアクセス制御ロジックの欠陥により、特権エスカレーションとアカウントの引き継ぎが可能になります。
  • セッション管理の脆弱性: 予測可能なセッション トークン、不十分なタイムアウトの適用、セッション固定の脆弱性、またはトークン失効の欠落により、セッションハイジャックと資格情報の盗難が可能になります。
  • 環境固有のセキュリティの問題: データベース、メッセージ キュー、外部 API、またはサード パーティのサービスとの統合ポイントでは、開発や分離されたテストでは見えないランタイムの脆弱性が発生します。
  • ビジネス ロジックの欠陥: 競合状態、状態操作の脆弱性、複雑なワークフローでの入力検証の不十分、またはトランザクションの整合性の問題により、不正行為とデータ操作が可能になります。

DAST は、ランタイムの動作、環境構成、および統合セキュリティを検証し、静的解析では実現できないカバレッジを提供します。

MITRE ATT&CK

  • 初期アクセス (TA0001): 一般向けアプリケーション (T1190) を悪用し、ランタイム テストによって検出された認証バイパス、インジェクションの欠陥、または安全でない API エンドポイントを活用します。
  • 資格情報アクセス (TA0006): DAST 中に検出されたレート制限、脆弱なパスワード ポリシー、または予測可能なセッション トークンの不足を悪用するブルート フォース (T1110)。
  • 特権エスカレーション (TA0004): 有効なアカウント (T1078) が、デプロイされたアプリケーションで承認バイパスまたはロール操作の脆弱性を悪用しています。
  • コレクション (TA0009): 情報リポジトリ (T1213) からのデータ。過剰な API 応答、ディレクトリ トラバーサル、または安全でない直接オブジェクト参照の脆弱性によって機密データを抽出します。
  • 流出 (TA0010): WEB サービス (T1567) 経由で流出し、API のセキュリティ ギャップを悪用して、検出なしで大規模にデータを抽出します。

DS-5.1: 実稼働前に自動 DAST を実装する

動的アプリケーション セキュリティ テストでは、実行中のアプリケーションのセキュリティ コントロールが検証され、静的分析では検出できないランタイムの脆弱性が検出されます。 SAST はソース コードを調べますが、DAST は運用環境に似た構成でデプロイされたアプリケーションをテストして、認証の誤った構成、承認の欠陥、運用環境でのみ現れる統合セキュリティギャップなど、デプロイ固有の問題を特定します。 運用前の自動 DAST により、統合システムに対して現実的な攻撃シナリオをテストしながら、顧客の露出前にセキュリティ検証が保証されます。

次の機能を使用してランタイム セキュリティ検証を実装します。

  • ランタイム検証を使用して SAST を補完する: 運用環境に似た構成でアプリケーションを実行する場合のセキュリティを検証する動的アプリケーション セキュリティ テストを使用して、静的分析を補完します。 SAST はソース コードの脆弱性を特定しますが、DAST は静的分析から見えないランタイムの問題を検出します。デプロイ構成の弱点 (正しく構成されていない認証プロバイダー、制限のない CORS ポリシー、セキュリティ ヘッダーがない)、環境固有の統合の欠陥 (データベース接続のセキュリティ、デプロイされたコンテキストでの API 承認)、および現実的な運用条件下でのみ現れるビジネス ロジックの脆弱性。

  • 運用環境に似たステージング環境にデプロイします。 実稼働アーキテクチャ、ネットワーク トポロジ、外部依存関係、および構成パラメーターをミラー化する実稼働前ステージング環境に DAST スキャンをデプロイします。 DAST の自動実行は、ステージングへのデプロイ時にトリガーされ、認証フロー、承認境界、セッション管理、入力検証、API セキュリティ、および現実的な負荷と使用パターンでのエラー処理を体系的にテストします。 これにより、運用に似た外部システム (ID プロバイダー、データベース、メッセージ キュー、サード パーティ API) と統合されている場合に、セキュリティ制御が正しく機能することを検証します。

  • コンテナーのランタイム監視を実装します。 コンテナー化されたワークロードの場合は、デプロイ前のイメージ スキャンとデプロイ後の動作分析を組み合わせた継続的なランタイム セキュリティ監視を実装します。 デプロイ前にコンテナー イメージで既知の脆弱性をスキャンし、実行中のコンテナーで異常なネットワーク接続、承認されていないプロセスの実行、ファイル システムの変更、特権エスカレーションの試行を監視します。 通常の Kubernetes ワークロードの動作をプロファイリングして、侵害を示す逸脱を検出し、CIS ベンチマークとセキュリティのベスト プラクティスに対してコンテナー構成を継続的に評価します。

  • リスクの高い攻撃対象領域に焦点を当てます。 リスクの高い攻撃領域に特化した DAST の取り組み: REST と GraphQL API (テスト認証バイパス、承認エラー、インジェクションの脆弱性、過度のデータ公開、安全でない直接オブジェクト参照)、認証とセッション管理 (トークン セキュリティの検証、タイムアウトの強制、ログアウト機能、パスワード リセット フロー、多要素認証)、ビジネス ロジック ワークフロー (競合状態、状態操作、トランザクションの整合性の問題のテスト)。 両方のアプローチからの結果を組み合わせた SAST/DAST 相関ワークフローを確立し、静的分析と動的分析の両方で確認された脆弱性を最も高いリスクとして優先します。

  • 統合プラットフォームを活用する: コンテナー化された環境の場合、 Microsoft Defender for Containers は、コンテナー のライフサイクル全体にわたって、ランタイムの脆弱性評価、ワークロード プロファイリング、脅威検出の統合機能を提供します。

実装例

eコマース組織が、承認されていない割引を許可する支払い API で認証バイパスを検出しました。 SAST は、外部認証プロバイダーを使用してデプロイされた環境でのみ現れたランタイム構成の欠陥を見逃しました。

挑戦: SAST によってコードの脆弱性が検出されましたが、ランタイム構成の問題と API 承認の欠陥が見落とされました。 運用環境のデプロイ構成は、静的分析から見えないセキュリティ ギャップを作成する開発とは異なります。

ソリューションのアプローチ:

  • 自動 DAST スキャン: 運用環境に似た構成でデプロイされたアプリケーションをテストする運用前環境に OWASP ZAP をデプロイしました。
  • コンテナー ランタイム保護: 実行時のセキュリティ監視と脆弱性評価のために Microsoft Defender for Containers を実装しました。
  • API セキュリティ テスト: デプロイされた REST および GraphQL エンドポイントで認証、承認、およびデータ検証を検証する特殊な API テストを構成しました。
  • SAST/DAST の相関関係: 包括的なセキュリティ検証のために静的および動的な結果を組み合わせた脆弱性相関ワークフローを作成しました。

結果: 認証バイパスや API 承認の欠陥など、SAST によって見逃されたランタイムの脆弱性が検出されました。 運用前の検出によってセキュリティ インシデントを防止しました。

重要度レベル

持っている必要があります。

コントロール マッピング

  • NIST SP 800-53 Rev.5: SA-11、CA-8、RA-5
  • PCI-DSS v4: 6.4.2、11.3.2
  • CIS コントロール v8.1: 16.7、16.8
  • NIST CSF v2.0: DE。CM-4、PR。IP-12
  • ISO 27001:2022: A.8.29、A.8.30
  • SOC 2: CC7.1、CC7.3

DS-6: ワークロードのライフサイクルをセキュリティで保護する

Azure Policy:Azure の組み込みポリシー定義 DS-6 を参照してください。

セキュリティの原則

コンテナー レジストリとコンテナー ワークロードのセキュリティ スキャン、仮想マシン (VM) ワークロードのゴールデン イメージ管理と自動構築、自動検疫による継続的な脆弱性スキャンを通じて、包括的なイメージ セキュリティを備えた不変のインフラストラクチャを実装します。 暗号化署名を確認し、最小限の基本イメージを維持し、ワークロードのライフサイクル全体にわたってセキュリティ ベースラインを適用します。

軽減すべきリスク

セキュリティで保護されていないワークロード ライフサイクル管理により、脆弱または侵害された成果物が運用環境に到達し、敵対者が体系的に悪用する永続的な攻撃ベクトルが作成されます。 包括的なワークロード セキュリティがない場合:

  • 脆弱な運用 VM イメージ: パッチが適用されていない OS ベースラインまたは正しく構成されていないゴールデン イメージは、デプロイされたすべての VM に弱点を伝達します。
  • 修正プログラムが適用されていない脆弱なベースイメージ: CVE の影響を受けたベース (Log4Shell、Heartbleed、OpenSSL) 上に構築されたコンテナは、ワークロードを悪用やエスケープのリスクにさらします。
  • 古い脆弱なアーティファクト: イメージとパッケージがアンスキャンされ、CVE が蓄積され、攻撃対象領域が拡大します。
  • 十分なイメージ検証: 暗号署名と実証検証がない場合、敵対者は正当なイメージを、バックドアやマルウェアを含む侵害されたバージョンに置き換えられます。
  • 肥大化した攻撃面: 不要なパッケージ、開発ツール、またはデバッグ ユーティリティを含むコンテナー イメージは、脆弱性の露出を高め、攻撃者に追加の悪用ツールを提供します。
  • 不足しているセキュリティ ベースライン: CIS ベンチマークコンプライアンス、セキュリティ強化、最小限の特権構成なしでデプロイされた VM とコンテナー イメージは、多層防御で悪用可能なギャップを生み出します。

侵害されたアーティファクトは永続的な攻撃ベクトルになり、横移動を支援し、防御者に正当に見えます。

MITRE ATT&CK

  • 初期アクセス (TA0001): アプリケーション コンテナーまたは Web サービスの修正プログラムが適用されていない脆弱性を利用して、公開アプリケーション (T1190) を悪用します。
  • 実行 (TA0002): イメージ検証が不十分なため正当と思われる悪意のあるコンテナーをデプロイするコンテナー (T1610) をデプロイします。
  • 特権エスカレーション (TA0004): コンテナーの分離から抜け出し、ホスト システムを侵害するためにコンテナーの脆弱性を悪用するホストへのエスケープ (T1611)。
  • 横移動 (TA0008): 侵害されたイメージからデプロイされた脆弱な VM またはコンテナー間でのピボットを可能にするためのリモート サービス (T1210) の悪用。

DS-6.1: コンテナー イメージのセキュリティを実装する

コンテナーと VM のイメージは、ライフサイクル全体にわたって包括的なセキュリティ制御を必要とする重要な攻撃領域を表します。 脆弱な基本イメージは、デプロイされたすべてのインスタンスに弱点を伝達し、インフラストラクチャ全体に影響を及ぼします。 スキャン、署名、セキュリティで保護されたストレージなどのソース コードと同じセキュリティの厳しいワークロード成果物を扱うことで、攻撃者が既知の脆弱性を悪用したり、悪意のある画像を置き換えたりするのを防ぎながら、検証済みの信頼できるイメージのみをデプロイできます。

次のプラクティスを使用してワークロード成果物をセキュリティで保護します。

  • 不変のインフラストラクチャの原則を確立します。 コンテナー イメージと VM イメージは、ソース コードに脆弱な基本イメージがデプロイされたすべてのインスタンスに弱点を伝達するのと同じセキュリティの厳しさを必要とする重要な成果物として扱います。 ワークロード成果物が 1 回ビルドされ、包括的にスキャンされ、暗号署名され、変更なしでデプロイされる不変のインフラストラクチャ原則を確立し、ライフサイクル全体の一貫性と追跡可能性を確保します。

  • マルチステージ ビルドで最小限の基本イメージを使用する: コンテナー ワークロードの場合は、基本的なランタイム コンポーネントのみを含む最小限の基本イメージから階層化されたイメージ セキュリティを実装し、完全なオペレーティング システム イメージと比較して攻撃対象領域を大幅に削減します。 マルチステージ ビルドを使用して、ビルド時の依存関係とランタイム イメージのコンパイルと機能豊富なイメージのビルドを分離し、最終的な成果物のみを最小限のランタイム イメージにコピーし、開発ツール、パッケージ マネージャーを排除し、脆弱性の露出を高め、攻撃者に悪用ツールを提供する依存関係を構築します。

  • 自動スキャンを検疫ポリシーと統合する: 自動脆弱性スキャンをイメージ ビルド パイプラインに統合し、レジストリ ストレージの前にすべてのイメージをスキャンし、包括的な CVE データベースをチェックし、新しい脆弱性が開示されると保存されたイメージを継続的に再スキャンします。 セキュリティ チームの承認と文書化されたリスク受け入れを必要とする例外ワークフローを使用して、重大または重大度の高い脆弱性を持つイメージの展開を防ぐ自動検疫ポリシーを実装します。 セキュリティ パッチがリリースされたときに、自動化されたパイプライン トリガーを使用して基本イメージ更新ポリシーを確立し、イメージが時間の経過と共に CVE を蓄積しないようにします。

  • 暗号化署名と検証を適用します。 ビルド時にすべてのステージ 署名イメージで暗号化署名と検証を通じてイメージの整合性を適用し、デプロイ前に署名を検証し、署名されていないイメージまたは改ざんされたイメージを自動的に拒否します。 これにより、敵対者が正当な画像をバックドアを含む侵害されたバージョンに置き換える画像置換攻撃を防ぐことができます。 ネットワーク アクセス制御 (プライベート エンドポイント、仮想ネットワーク統合)、イメージをプッシュ/プルできるユーザーを制限するロールベースのアクセス ポリシー、およびすべてのレジストリ操作の包括的な監査ログを使用して、セキュリティで保護されたコンテナー レジストリにイメージを格納します。

  • VM の強化されたゴールデン イメージを維持する: VM ワークロードの場合は、CIS ベンチマークに準拠した強化された基本イメージを使用して一元化されたゴールデン イメージ リポジトリを維持し、定期的なセキュリティパッチ適用とコンプライアンス検証を実施します。 セキュリティ更新プログラムを組み込み、不要なサービスを削除し、最小特権の構成を適用し、実行中のシステムにパッチを適用するのではなく、定義されたスケジュールに基づいて新しいイメージを生成する、自動化されたイメージ構築パイプラインを実装します。

  • 統合セキュリティ プラットフォームを活用する:Microsoft Defender for Containers 統合を使用した Azure Container Registry などのソリューションでは、自動化されたスキャン、検疫ワークフロー、コンテンツ信頼、および一貫性のあるセキュリティ ポリシーを使用した複数リージョンレプリケーションが提供されます。

実装例

物流組織は、重要なリモート コード実行の脆弱性を含むパッチが適用されていない基本イメージを含むコンテナー アプリケーションをデプロイしました。 攻撃者はデプロイ直後にこの脆弱性を悪用し、配送データを侵害しました。

挑戦: 脆弱性スキャンのない多数のコンテナー イメージ。 数か月前に作成された画像には、重大な脆弱性を含む多くの CVE が蓄積されています。 悪意のあるイメージの置換を防ぐ検証がありません。

ソリューションのアプローチ:

  • コンテナー レジストリのセキュリティ: デプロイ前に重大度の高い CVE を使用してイメージを検疫する脆弱性スキャンを行う Azure Container Registry を実装しました。
  • 強化された VM イメージ: 規制対象ワークロード用の CIS ベンチマークに準拠した VM イメージを含む Azure 共有イメージ ギャラリー をデプロイしました。
  • ランタイム保護: 継続的な脅威検出とドリフト監視用に Microsoft Defender for Containers を構成しました。
  • 成果物の整合性: ライフサイクル全体を通じてイメージの信頼性を確保する暗号化署名と検証を確立しました。

結果: 運用環境のデプロイから脆弱なイメージをブロックしました。 イメージあたりのコンテナー CVE が大幅に削減されました。 署名検証によるイメージ置換攻撃を防止しました。

重要度レベル

持っている必要があります。

コントロール マッピング

  • NIST SP 800-53 Rev.5: CM-2、CM-3、SI-2、SI-7、RA-5
  • PCI-DSS v4: 6.2.4、6.3.3、11.3.1
  • CIS コントロール v8.1: 4.1、7.3、7.4
  • NIST CSF v2.0: PR。IP-1、PR。IP-3、DE。CM-8
  • ISO 27001:2022: A.8.9、A.8.31、A.8.32
  • SOC 2: CC7.2、CC8.1

DS-7: DevOps のログ記録と監視を実装する

セキュリティの原則

セキュリティ分析、リアルタイムの脅威検出、自動応答のために、一元化されたセキュリティ情報イベント管理 (SIEM) プラットフォームへの統合による監査ストリーミングを通じて、包括的な DevOps アクティビティ ログを実装します。 行動分析、異常検出、およびセキュリティ メトリックを確立して、迅速なインシデント対応を可能にし、コンプライアンス監査証跡を維持します。

軽減すべきリスク

DevOps のログ記録と監視が不十分な場合、敵対者が悪用して検出されずに動作し、永続化を確立し、機密性の高いコードや資格情報を流出させる重大な盲点が生じます。 包括的な可視性なし:

  • 検出されないパイプラインの侵害: 攻撃者は CI/CD パイプラインを変更して、悪意のあるコードを挿入したり、シークレットを流出させたり、監査ログが不足したりしてアラートをトリガーすることなくバックドアを確立します。
  • コードまたはインフラストラクチャを変更する Insider の脅威: 悪意のある内部関係者や侵害されたアカウントは、ソース コード、インフラストラクチャ定義、またはデプロイ構成を検出せずに未承認の変更を行います。
  • 包括的な監査証跡がない: 詳細なアクティビティ ログがない場合、セキュリティ インシデントが発生した場合のフォレンジック調査、影響評価、根本原因分析が防止され、ドウェル時間が長く、侵害への影響が増大します。
  • 遅延インシデント対応: 平均検出時間 (MTTD) は、セキュリティ チームがリアルタイムのアラート、異常検出、DevOps セキュリティ イベントの自動関連付けがない場合に、数時間から数週間に及びます。
  • コンプライアンス監査エラー: 包括的な監査証跡、変更追跡、アクセス ログを管理する規制要件 (SOX、PCI-DSS、HIPAA、ISO 27001) は、DevOps 監視を一元化しないと満たされません。
  • 特権エスカレーションの盲目: アクセス許可の未承認の昇格、バックドア アカウントの作成、またはアクセス制御の変更は、動作分析と特権の監視なしで検出されません。

ログのギャップにより、悪意のあるパイプラインの変更、特権のエスカレーション、および高い特権の開発経路での永続的なアクセス試行が隠されます。

MITRE ATT&CK

  • 防御回避 (TA0005): 防御 (T1562) が損なわれ、監査ログ、セキュリティ スキャン手順、または監視エージェントが盲点で動作することを無効にし、インジケーターの削除 (T1070) によって監査ログまたはパイプラインの実行履歴が消去され、悪意のあるアクティビティが非表示になります。
  • 永続化 (TA0003): 追加のサービス プリンシパル、個人用アクセス トークン、または SSH キーを検出せずに作成するアカウント操作 (T1098)。
  • コレクション (TA0009): パイプライン アクセスを通じてソース コード、シークレット、または知的財産を流出する情報リポジトリ (T1213) からのデータ。
  • 資格情報アクセス (TA0006): セキュリティで保護されていない資格情報 (T1552) は、パイプライン ログまたは実行履歴から公開されたシークレットを収集します。

DS-7.1: DevOps プラットフォームの監査ログを実装する

運用インフラストラクチャと機密性の高いソース コードへの特権アクセスを持つ DevOps プラットフォームでは、敵対者のアクティビティや内部関係者の脅威を検出するための包括的なセキュリティ監視が必要です。 監査ログのギャップにより、悪意のあるアクターは長時間にわたって検出されずに動作し、一元化されたログ集計により、より広範なセキュリティ テレメトリとの相関関係が可能になり、高度な攻撃チェーンが明らかになります。 リアルタイムの行動分析は、分離されたイベントで見えない疑わしいパターンを特定し、生の監査データを実用的なセキュリティ インテリジェンスに変換します。

次の機能を使用して、包括的な DevOps セキュリティ監視を確立します。

  • 包括的なセキュリティ関連アクティビティをキャプチャします。 ユーザー認証と承認イベント、ソース コードのコミットとブランチ操作、パイプラインの作成と変更、デプロイの実行、シークレット アクセス、アクセス許可の変更、サービス プリンシパルの作成、管理アクションなど、すべてのセキュリティ関連の DevOps アクティビティをキャプチャする包括的な監査ログを確立します。 DevOps プラットフォームは、運用インフラストラクチャへの特権アクセスを保持し、機密性の高いコード ログのギャップにより、敵対者や悪意のある内部関係者が長期間にわたって検出されずに動作できるようにします。

  • ログを一元化された SIEM にリアルタイムで転送する: DevOps プラットフォームのネイティブリテンション期間 (通常は 90 日) に依存するのではなく、監査ログをリアルタイムで一元化された SIEM プラットフォームに転送し、長期的なフォレンジック分析、コンプライアンス レポート、および他のシステムからのセキュリティ イベントとの相関関係を実現します。 手動のログ レビューなしで自動解析、分析、アラートを有効にする構造化形式 (JSON) で標準化されたプロトコル (/azure Event Hubs、syslog) を使用して、セキュリティ オペレーション センターにログをストリーミングします。

  • 行動分析と異常検出をデプロイします。 DevOps 監査データに行動分析と異常検出を実装して、時間外パイプラインの変更、機密性の高いリポジトリへの異常なアクセス、迅速な特権エスカレーション、サービス プリンシパルの作成、疑わしいデプロイ、予期しない場所からのパイプライン実行、シークレット アクセスの異常なパターンなど、個々のイベントで見えない疑わしいパターンを特定します。 ユーザーとサービスのベースライン動作プロファイルを確立し、侵害やインサイダーの脅威を示す可能性のある統計的に有意な逸脱に関するアラートを生成します。

  • リスクの高いアクティビティの自動アラートを構成します。 運用デプロイの失敗、保護されたブランチでのパイプラインの変更、新しいサービス プリンシパルの作成、アクセス許可の昇格イベント、無効なセキュリティ スキャン手順、監査ログ転送構成の変更、承認されていないパイプラインからのシークレットへのアクセスの試行など、セキュリティ チームへの即時通知を使用して、危険度の高いアクティビティの自動アラートを構成します。 重大度ベースのエスカレーションを実装して、重要なアラートがセキュリティ操作にすぐに到達し、ルーチン イベントが分析のためにバッチ処理されるようにします。

  • より広範なセキュリティ テレメトリと統合する: エンドポイント検出、ネットワーク セキュリティ、ID イベント、脅威インテリジェンス フィードとの相関関係を実現するために、DevOps 監査ログを SIEM プラットフォームの広範なセキュリティ テレメトリと統合します。 これにより、DevOps の侵害がマルチフェーズ操作の 1 つの段階である高度な攻撃チェーンを検出できます。たとえば、フィッシング資格情報を後続のパイプラインの変更や通常とは異なるクラウド リソース プロビジョニングと関連付けることができます。

  • 統合 SIEM プラットフォームを活用する:Azure DevOps Audit StreamingMicrosoft Sentinel の統合などのプラットフォームでは、リアルタイムのログ転送、DevOps の脅威に対する事前構築済みの検出ルール、調査のためのセキュリティ ブック、自動応答オーケストレーションが提供されます。

実装例

製造組織は、元請負業者が CI/CD パイプラインを変更してバックドア コードを運用アプリケーションに挿入したときに、インサイダーの脅威を発見しました。 監査ログが不十分なため、インシデントは数か月間検出されません。

挑戦: DevOps アクティビティの一元的なログ記録はありません。 パイプラインの変更と特権アクセスの変更が監視されません。 監査証跡がないため、フォレンジック調査が妨げられた。 変更の追跡が不十分なため、コンプライアンス監査が失敗しました。

ソリューションのアプローチ:

  • 一元化された監査ログ:Azure DevOps 監査ストリーミング のイベント転送機能を Microsoft Sentinel へ、セキュリティ分析および長期保存のために有効化しました。
  • 行動分析: 異常なアクセス パターン、時間外パイプラインの変更、および内部関係者の脅威を示す特権エスカレーションを識別する異常検出を実装しました。
  • 自動アラート: 未承認の運用デプロイや、セキュリティ操作へのサービス プリンシパル作成ルーティングなど、疑わしいアクティビティのアラートを構成しました。
  • コンプライアンス レポート: 包括的な変更追跡を使用して、規制要件を満たす自動監査証跡生成を作成しました。

結果: その後、承認されていないパイプラインの変更が迅速に検出され、防止されました。 包括的な監査証跡により、インシデント調査時間が大幅に短縮されました。 文書化された変更管理に対するコンプライアンスを達成しました。

重要度レベル

持つべきです。

コントロール マッピング

  • NIST SP 800-53 Rev.5: AU-2、AU-3、AU-6、AU-12、SI-4
  • PCI-DSS v4: 10.2.1、10.2.2、10.3.4
  • CIS コントロール v8.1: 8.2、8.5、8.11
  • NIST CSF v2.0: DE。CM-1、DE。CM-7、RS。AN-1
  • ISO 27001:2022: A.8.15、A.8.16
  • SOC 2: CC7.2、CC7.3