コンテナー イメージDefender for Cloud脆弱性が見つかると、そのイメージを元の CI/CD パイプライン実行までトレースし直すのが難しい場合があります。 この課題は、イメージがコンテナー レジストリにあるか、Kubernetes クラスターで実行されているかに関係なく、一般的です。 パイプライン コンテキストがないと、適切な開発者を見つけて、迅速に修復を開始するのが難しくなります。 Defender Cloud Security Posture Management (CSPM) には、コンテナー ワークロードをコードからクラウドにマップする DevOps セキュリティ機能が含まれているため、チームはより迅速に修復を開始できます。
この記事では、利用可能なマッピング手法、それぞれの前提条件、そしてその結果として得られたコードからランタイムへのマッピングをAzureポータルで検証する方法について説明します。 始める前に、必要なDefender CSPMまたはDefender for Containersの前提条件を満たしていることを確認してください。
コードからランタイムへ – 技術的な前提条件
コードとランタイムのリレーションシップを確立するには、次の前提条件が必要です。
一般的な前提条件 (すべての方法)
使用されるマッピング方法に関係なく、次の前提条件が適用されます。
-
Defender CSPM (Cloud Security Posture Management) または Defender for Containers をクラウド環境で有効にする必要があります。
- Defender for Containers には、限られたマッピング機能セットが含まれています。
- コンテナー イメージは、 CI/CD パイプラインを使用してビルドする必要があります。
- 手動でビルドおよびプッシュされたイメージはサポートされていませんが、一部の手動でビルドされたイメージはマッピング結果に引き続き表示される場合があります。
- コンテナー イメージは、次のいずれかの方法 で Defender for Cloud によって検出可能である必要があります。
- サポートされているコンテナー レジストリに格納されている場合、または
- サポートされている Kubernetes 環境での実行
オプション 1: コード環境を Defender for Cloud に接続する
Azure DevOpsやGitHub環境をDefender for Cloudに接続すると、自動で一連の自動化ツールが起動します。 自動化ツールは既存のDevOpsワークフローに影響を与え ず 、コードからランタイムへのマッピングを可能にします。
注
- 現在、Azure DevOps と GitHub でサポートされています
- 接続 前 にビルドおよびデプロイされたコンテナー イメージのサポートが制限されている可能性があります
コード環境をDefender for Cloudに接続する手順については、以下をご覧ください:
オプション 2: Docker ラベルベースのマッピング
Docker ラベルベースのマッピングは、ビルド時にコンテナー イメージに直接埋め込まれるメタデータに依存します。 Defender for Cloud は、OCI/Docker イメージ マニフェストからこのメタデータを抽出し、それを使用してイメージをソース リポジトリに関連付けます。
Dockerラベルベースのマッピングについての詳細は、以下をご覧ください:
- OCI Docker イメージの注釈の仕様
- Azure DevOps に OCI/Docker ラベルを追加する
- GitHub でラベルを追加する
-
Dockerfile
LABEL命令を使用してラベルを手動で指定する
注
- DockerのラベルベースのマッピングはDevOpsコネクタを必要とし ません 。
- マッピングは、Defender CSPMまたは Defender for Containers の対象となる Kubernetes 環境に対して実行されます。
オプション 3: GitHub 証明ベースのマッピング
アテステーションベースのマッピングでは、GitHub Actions ワークフロー中に生成された 暗号的に検証可能な由来メタデータ が使用されます。 これらの構成証明は、コンテナー イメージを正確なソース リポジトリ、コミット、およびビルド ID にリンクします。
証明ベースのマッピングに関する詳細は、以下をご覧ください:
Azure ポータルでコードとランタイムのマッピングを確認する
どのマッピング方法(DevOpsコネクタ、Dockerラベル、GitHub認証)を使っても、結果として得られたコードからランタイムへのマッピングはAzureポータルで検証できます。 以下の例は、Azure DevOpsのCI/CDパイプラインでコンテナイメージを構築し、それをレジストリにプッシュした後のマッピング結果の表示方法を示しています。 Cloud Security Explorerを使ってマッピングを確認できます:
Azure portal にサインインする
Microsoft Defender for Cloud>Cloud セキュリティ エクスプローラーに移動します。 コンテナー イメージのマッピングが表示されるまでに最大 4 時間かかることがあります。
基本的なマッピングを表示するには、[コンテナー イメージ]>+>[コード リポジトリからプッシュ] の順に選択します。
(省略可能)[+ by Container Images ]\(+コンテナー イメージ\) を選択して、一般的な脆弱性と露出 (CVE) を持つコンテナー イメージのみを表示するフィルター ([ 脆弱性あり] など) をクエリに追加します。
クエリを実行すると、コンテナー レジストリとパイプライン間のマッピングが表示されます。 接続線 (エッジ) の横にある [... ] を選択すると、詳細が表示されます。
次のステップ
- 詳細については、「Defender for Cloud の
DevOps セキュリティ」を参照してください。 - 詳細については、コードからランタイムへの推奨事項を参照してください。