Поделиться через


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

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

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

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

  • Среда Azure DevOps или GitHub , подключенная к Microsoft Defender, автоматически предоставляется и устанавливается во всех подключенных организациях 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 Explorer:

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

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

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

    Снимок экрана, на котором показано, как найти базовое сопоставление контейнеров.

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

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

    Снимок экрана: расширенный запрос к результатам сопоставления контейнеров.

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

Снимок экрана: основные результаты сопоставления контейнеров.

Примечание.

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

Сопоставление образа контейнера из рабочих процессов GitHub с реестром контейнеров

  1. Убедитесь, что соединитель GitHub подключен к Defender для облака.

  2. Выполните следующий рабочий процесс 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. 
    # The example below is for Azure Container Registry. Amazon Elastic Container Registry and Google Artifact Registry are also supported. 
   - 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

После создания образа контейнера в рабочем процессе GitHub и отправке его в реестр см. в сопоставлении с помощью Cloud Security Explorer:

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

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

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

    Снимок экрана: базовое сопоставление контейнеров.

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

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

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

Снимок экрана: основные результаты сопоставления контейнеров.

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