Сопоставление образов контейнеров из кода в облако

Если уязвимость определяется в образе контейнера, хранящейся в реестре контейнеров или работающем в кластере Kubernetes, может быть трудно выполнить трассировку обратно в конвейер CI/CD, который сначала создал образ контейнера и определите владельца исправления разработчика. С помощью возможностей безопасности DevOps в Управление состоянием безопасности облака Microsoft Defender (CSPM) вы можете сопоставить облачные приложения из кода в облако, чтобы легко запустить рабочие процессы исправления разработчиков и сократить время на исправление уязвимостей в образах контейнеров.

Необходимые компоненты

  • Учетная запись Azure с Defender для облака подключена. Если у вас еще нет учетной записи Azure, создайте ее бесплатно.

  • Среда Azure DevOps или GitHub, подключенная к Microsoft Defender для облака.

    • Когда среда Azure DevOps подключена к Microsoft Defender для облака, сопоставление контейнеров Microsoft Defender для DevOps будет автоматически совместно использоваться и установлено во всех подключенных организациях Azure DevOps. Это автоматически внедряет задачи во все Azure Pipelines для сбора данных для сопоставления контейнеров.
  • Для Azure DevOps расширение Microsoft Security DevOps (MSDO), установленное в организации Azure DevOps.

  • Для GitHub действие Microsoft Security DevOps (MSDO), настроенное в репозиториях GitHub. Кроме того, рабочий процесс GitHub должен иметь разрешения "id-token: write" для федерации с Defender для облака. Пример см . в этом YAML.

  • Включен CSPM в Защитнике.

  • Образы контейнеров должны быть созданы с помощью Docker , и клиент Docker должен иметь доступ к серверу Docker во время сборки.

Сопоставление образа контейнера из конвейеров Azure DevOps с реестром контейнеров

После создания образа контейнера в конвейере CI/CD Azure DevOps и отправки его в реестр см. сопоставление с помощью Обозреватель Cloud Security:

  1. Войдите на портал Azure.

  2. Перейдите к Microsoft Defender для облака Cloud Security Обозреватель>. Для отображения сопоставления образов контейнера в Обозреватель Cloud Security может потребоваться не более 4 часов.

  3. Чтобы просмотреть базовое сопоставление, выберите образы+>>контейнеров, отправленные репозиториями кода.

    Screenshot that shows how to find basic mapping of containers.

  4. (Необязательно) Выберите "+ по образам контейнеров", чтобы добавить другие фильтры в запрос, например наличие уязвимостей для фильтрации только образов контейнеров с помощью CVEs.

  5. После выполнения запроса вы увидите сопоставление между реестром контейнеров и конвейером Azure DevOps. Выберите ... рядом с краем, чтобы просмотреть дополнительные сведения о том, где запущен конвейер Azure DevOps.

    Screenshot that shows an advanced query for container mapping results.

Ниже приведен пример расширенного запроса, который использует сопоставление образов контейнеров. Начиная с рабочей нагрузки Kubernetes, которая предоставляется в Интернете, можно отслеживать все образы контейнеров с высоким уровнем серьезности CVEs обратно в конвейер Azure DevOps, где был создан образ контейнера, что позволяет специалисту по безопасности начать рабочий процесс исправления разработчика.

Screenshot that shows basic container mapping results.

Примечание.

Если у вашей организации Azure DevOps есть соединитель Azure DevOps, созданный до 15 ноября 2023 г., перейдите к разделу "Общие расширения параметров>организации" и установите декоратор сопоставления образов > контейнера. Если расширение не отображается в организации, заполните следующую форму.

Сопоставление образа контейнера из рабочих процессов 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 и отправке его в реестр см. сопоставление с помощью Обозреватель Cloud Security:

  1. Войдите на портал Azure.

  2. Перейдите к Microsoft Defender для облака Cloud Security Обозреватель>. Для отображения сопоставления образов контейнера в Обозреватель Cloud Security может потребоваться не более 4 часов.

  3. Чтобы просмотреть базовое сопоставление, выберите образы+>>контейнеров, отправленные репозиториями кода.

    Screenshot that shows basic container mapping.

  4. (Необязательно) Выберите "+ по образам контейнеров", чтобы добавить другие фильтры в запрос, например наличие уязвимостей для фильтрации только образов контейнеров с помощью CVEs.

  5. После выполнения запроса вы увидите сопоставление между реестром контейнеров и рабочим процессом GitHub. Выберите ... рядом с краем, чтобы просмотреть дополнительные сведения о том, где был запущен рабочий процесс GitHub.

Ниже приведен пример расширенного запроса, который использует сопоставление образов контейнеров. Начиная с рабочей нагрузки Kubernetes, которая предоставляется в Интернете, вы можете отслеживать все образы контейнеров с высоким уровнем серьезности CVEs обратно в репозиторий GitHub, где был создан образ контейнера, что позволяет специалисту по безопасности начать рабочий процесс исправления разработчика.

Screenshot that shows basic container mapping results.

Следующие шаги