Share via


コンテナー イメージをコードからクラウドにマップする

コンテナー レジストリに格納されているか、Kubernetes クラスターで実行されているコンテナー イメージで脆弱性が特定された場合、最初にコンテナー イメージを構築してから開発者の修復所有者を特定する CI/CD パイプラインをセキュリティ業務従事者がトレースするのが難しい場合があります。 Microsoft Defender クラウド セキュリティ態勢管理 (CSPM) の DevOps セキュリティ機能を使用すると、クラウドネイティブ アプリケーションをコードからクラウドにマップして、開発者の修復ワークフローを簡単に開始し、コンテナー イメージの脆弱性の修復にかかる時間を短縮できます。

前提条件

  • Defender for Cloud がオンボードされている Azure アカウント。 まだ Azure アカウントを持っていない場合は、無料で作成します。

  • Microsoft Defender for Cloud にオンボードされた Azure DevOps または GitHub 環境。

    • Azure DevOps 環境が Microsoft Defender For Cloud にオンボードされると、Microsoft Defender for DevOps のコンテナー マッピングが自動的に共有され、接続されているすべての Azure DevOps 組織にインストールされます。 これにより、すべての Azure Pipelines にタスクが自動的に挿入され、コンテナー マッピング用のデータが収集されます。
  • Azure DevOps の場合、Azure DevOps 組織にインストールされた Microsoft Security DevOps (MSDO) 拡張機能

  • GitHub の場合、GitHub リポジトリで構成された Microsoft Security DevOps (MSDO) アクション。 さらに、GitHub ワークフローには、Defender for Cloud とのフェデレーションのための "id-token: write" アクセス許可が必要です。 例については、この YAMLを参照してください。

  • Defender CSPM が有効になっていること。

  • コンテナー イメージは Docker を使用してビルドする必要があります。Docker クライアントはビルド中、Docker サーバーにアクセスできなければなりません。

コンテナー イメージを Azure DevOps パイプラインからコンテナー レジストリにマップする

Azure DevOps CI/CD パイプラインでコンテナー イメージを構築し、レジストリにプッシュした後、クラウド セキュリティ エクスプローラーを使用してマッピングを確認します。

  1. Azure portal にサインインします。

  2. [Microsoft Defender for Cloud]>[クラウド セキュリティ エクスプローラー] の順に移動します。 クラウド セキュリティ エクスプローラーにコンテナー イメージ マッピングが表示されるまでに最大 4 時間かかることがあります。

  3. 基本的なマッピングを表示するには、[コンテナー イメージ]>+>[プッシュの実行者: コード リポジトリ] の順に選択します。

    Screenshot that shows how to find basic mapping of containers.

  4. (省略可能) [コンテナー イメージ] の横にある [+] を選択し、クエリにその他のフィルター ([脆弱性あり] など) を追加して、CVE のあるコンテナー イメージのみをフィルター処理します。

  5. クエリを実行すると、コンテナー レジストリと Azure DevOps パイプラインの間のマッピングが表示されます。 エッジの横にある [...] を選択して、Azure DevOps パイプラインが実行された場所の詳細を表示します。

    Screenshot that shows an advanced query for container mapping results.

コンテナー イメージ マッピングを利用する高度なクエリの例を次に示します。 インターネットに公開されている Kubernetes ワークロードから開始して、重大度の高い CVE を持つすべてのコンテナー イメージをトレースして、コンテナー イメージが構築された Azure DevOps パイプラインに戻り、セキュリティ業務従事者が開発者の修復ワークフローを開始できるようします。

Screenshot that shows basic container mapping results.

Note

Azure DevOps 組織が 2023 年 11 月 15 日より前に Azure DevOps コネクタを作成している場合、[組織の設定][拡張機能 > 共有] の順に移動し、コンテナー イメージ マッピング デコレーターをインストールしてください。 組織と共有されている拡張機能が表示されない場合は、次のフォームに入力します。

コンテナー イメージを GitHub ワークフローからコンテナー レジストリにマップする

  1. コンテナー イメージ マッピング ツールを MSDO ワークフローに追加します。
name: Build and Map Container Image

on: [push, workflow_dispatch]

jobs:
  build:
    runs-on: ubuntu-latest
    # Set Permissions
    permissions:
      contents: read
      id-token: write
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.8' 
    # Set Authentication to Container Registry of Choice
   - name: Azure Container Registry Login 
        uses: Azure/docker-login@v1 
        with:
        login-server: <containerRegistryLoginServer>
        username: ${{ secrets.ACR_USERNAME }}
        password: ${{ secrets.ACR_PASSWORD }}
    # Build and Push Image
    - name: Build and Push the Docker image 
        uses: docker/build-push-action@v2
        with:
          push: true
          tags: ${{ secrets.IMAGE_TAG }}
          file: Dockerfile
     # Run Mapping Tool in MSDO
    - name: Run Microsoft Security DevOps Analysis
      uses: microsoft/security-devops-action@latest
      id: msdo
      with:
        include-tools: container-mapping

GitHub ワークフローでコンテナー イメージを構築し、レジストリにプッシュした後、クラウド セキュリティ エクスプローラーを使用してマッピングを確認します。

  1. Azure portal にサインインします。

  2. [Microsoft Defender for Cloud]>[クラウド セキュリティ エクスプローラー] の順に移動します。 クラウド セキュリティ エクスプローラーにコンテナー イメージ マッピングが表示されるまでに最大 4 時間かかることがあります。

  3. 基本的なマッピングを表示するには、[コンテナー イメージ]>+>[プッシュの実行者: コード リポジトリ] の順に選択します。

    Screenshot that shows basic container mapping.

  4. (省略可能) [コンテナー イメージ] の横にある [+] を選択し、クエリにその他のフィルター ([脆弱性あり] など) を追加して、CVE のあるコンテナー イメージのみをフィルター処理します。

  5. クエリを実行すると、コンテナー レジストリと GitHub ワークフローの間のマッピングが表示されます。 エッジの横にある [...] を選択して、GitHub ワークフローが実行された場所の詳細を表示します。

コンテナー イメージ マッピングを利用する高度なクエリの例を次に示します。 インターネットに公開されている Kubernetes ワークロードから開始して、重大度の高い CVE を持つすべてのコンテナー イメージをトレースして、コンテナー イメージが構築された GitHub ワークフローに戻り、セキュリティ業務従事者が開発者の修復ワークフローを開始できるようします。

Screenshot that shows basic container mapping results.

次のステップ