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


Настройка непрерывного исправления в реестре контейнеров Azure

В этой статье вы узнаете, как установить, включить и настроить непрерывное исправление. Непрерывное исправление, при включении функции в реестре контейнеров, автоматически обнаруживает и исправляет уязвимости уровня операционной системы для образов контейнеров.

Предпосылки

  • Azure Cloud Shell или локальную установку Azure CLI можно использовать с минимальной версией 2.15.0 или более поздней.
  • У вас есть группа ресурсов с реестром контейнеров Azure (ACR).
  • У вас есть реестр контейнеров Azure с включенными задачами ACR (задачи ACR не поддерживаются на бесплатном уровне ACR).

Установка рабочего процесса непрерывного патчинга

Выполните следующую команду, чтобы установить расширение CLI:

    az extension add -n acrcssc

Включение рабочего процесса непрерывного исправления

  1. Войдите в Azure CLI с помощью az login.
az login
  1. Войдите в ACR.
az acr login -n <myRegistry>
  1. Выполните следующую команду, чтобы создать файл с именем continuouspatching.json, содержащий JSON непрерывного исправления. Имя ФАЙЛА JSON является гибким.
cat <<EOF > continuouspatching.json
{
    "version": "v1",
    "tag-convention" : "<incremental|floating>",
    "repositories": [{
        "repository": "<Repository Name>",
        "tags": ["<comma-separated-tags>"],   
        "enabled": <true|false>
    }] 
}
EOF

Схема обрабатывает определенные репозитории и теги в формате массива. Каждая переменная определена здесь:

  • version позволяет команде ACR отслеживать, на какой версии схемы вы находитесь. Не изменяйте эту переменную, если не указано.

  • tag-convention является необязательным полем. Допустимые значения — "инкрементный" или "плавающий". Дополнительную информацию можно найти в разделе Основные понятия непрерывного исправления.

  • repositories — это массив, состоящий из подробных сведений о репозитории и тегах

    • repository ссылается на имя репозитория
    • tags — это массив тегов, разделенных запятыми. Подстановочный знак * можно использовать для обозначения всех тегов в этом репозитории.
    • enabled — логическое значение true или false, определяющее, включен ли указанный репозиторий.

Ниже приведен пример конфигурации для клиента, который хочет исправить все теги (используя символ *) в репозитории python, а также конкретно исправить теги jammy-20240111 и jammy-20240125 в репозитории ubuntu.

Пример JSON

{
"version": "v1",
"tag-convention" : "incremental",
"repositories": [{
        "repository": "python",
        "tags": ["*"],
        "enabled": true
    },
    {
        "repository": "ubuntu",
        "tags": ["jammy-20240111", "jammy-20240125"],
        "enabled": true, 
    }]
}
  1. После создания файла конфигурации рекомендуется сначала выполнить пробный запуск, чтобы убедиться, что выбранные объекты соответствуют условиям JSON. Для проверочного запуска требуется параметр, называемый schedule, который определяет частоту выполнения непрерывного процесса исправления. Флаг расписания измеряется в днях с минимальным значением одного дня и максимальным значением 30 дней. Например, если вы хотите, чтобы изображение было исправлено ежедневно, можно указать расписание как 1dили 1 день. Если вы хотите еженедельное исправление (один раз в неделю), вы заполните расписание как 7d или 7 дней.

Схема команд:

az acr supply-chain workflow create -r <registryname> -g <resourcegroupname> -t continuouspatchv1 --config <JSONfilepath> --schedule <number of days> --dry-run 

Пример команды:

az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --dry-run   

Флаг --dry-run обеспечивает вывод всех артефактов, указанных в конфигурации JSON-файла. Клиенты могут убедиться, что выбраны правильные артефакты. В примере конфигурации ubuntu следующие результаты должны отображаться в виде выходных данных.

Ubuntu: jammy-20240111
Ubuntu: jammy-20240125

Команда помощи для отображения всех обязательных или необязательных флагов:

az acr supply-chain workflow create --help
  1. После того как вы удовлетворены результатами пробного запуска, выполните команду create еще раз без флага --dry-run, чтобы официально создать процесс непрерывного исправления.

Замечание

Параметр --schedule использует множитель, основанный на фиксированном дне, начиная с первого дня месяца. Это означает:

  • Если вы укажете --schedule 7d и выполните команду 3-го числа, следующий запланированный запуск будет выполнен 7-го, так как 7 является первым кратным 7 (дней) после 3-го, начиная с 1-го числа месяца.
  • Если --schedule является 3d, и сегодня 7 число, то следующий запланированный запуск будет 9-го, так как 9 — это следующее кратное 3, которое следует за 7.
  • При добавлении флага --run-immediatelyвы активируете немедленный запуск исправления. Последующий запланированный запуск по-прежнему будет выравниваться с ближайшему дню, кратному первому числу месяца, на основании вашего значения --schedule.
  • Счетчик расписания сбрасывается каждый месяц. Независимо от указанного расписания рабочий процесс будет выполняться в первом из каждого месяца, а затем следуйте указанному значению расписания в течение оставшегося месяца. Если мои исправления выполняются 28 января, и мое расписание составляет 7 дней, следующее исправление будет выполняться первого февраля, затем восьмого, и продолжит каждые 7 дней.

Схема команд:

az acr supply-chain workflow create -r <registryname> -g <resourcegroupname> -t continuouspatchv1 --config <JSONfilename> --schedule <number of days> --run-immediately

Пример команды:

az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --run-immediately

После успешной команды (независимо от того, включаете ли вы --run-immediately или нет), вы увидите следующее:

  • Сообщение об успехе, подтверждающее, что задачи вашего рабочего процесса поставлены в очередь.

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

Команда помощи для обязательных и необязательных флагов.

az acr supply-chain workflow create --help

Использование портала Azure для просмотра задач рабочего процесса

  1. После успешного выполнения рабочего процесса перейдите на портал Azure, чтобы просмотреть выполняемые задачи. В меню службы в разделе "Службы" выберите **Репозитории. Вы увидите новый репозиторий с именем csscpolicies/patchpolicy. Этот репозиторий размещает артефакт конфигурации JSON, который непрерывно используется для постоянного обновления.

  2. Затем в разделе "Службы" выберите "Задачи". Вы увидите три новых задачи:

Снимок экрана: задачи, созданные для непрерывного исправления.

Задачи:

  • cssc-trigger-workflow — эта задача сканирует файл конфигурации и вызывает задачу сканирования на каждом соответствующем изображении.
  • cssc-scan-image — эта задача сканирует образ для уязвимостей операционной системы. Эта задача активирует задачу исправления, только если обнаружены уязвимости операционной системы.
  • cssc-patch-image — эта задача исправляет изображение. Эти задачи работают совместно с выполнением рабочего процесса непрерывного исправления.
  1. Вы также можете выбрать "Запуски" в представлении "Задачи" для просмотра конкретных запусков задач. Здесь вы можете увидеть информацию о том, была ли задача выполнена успешно или неудачно, а также просмотреть журнал отладки.

Снимок экрана, показывающий задачи, выполняемые для непрерывного обновления.

Использование интерфейса командной строки для просмотра задач рабочего процесса

Вы также можете запустить следующую команду CLI, чтобы просмотреть дополнительные сведения о каждой задаче и общем рабочем процессе. Выходные данные команды:

  • Расписание
  • Дата создания
  • Системные данные, такие как дата последнего изменения, кто и т. д.

Схема команд:

az acr supply-chain workflow show -r <registry> -g <resourceGroup> -t continuouspatchv1   

Пример команды:

az acr supply-chain workflow show -r myRegistry -g myResourceGroup -t continuouspatchv1 

Команда помощи для всех обязательных и необязательных параметров:

az acr supply-chain workflow show --help

Обновление рабочего процесса непрерывного патчинга

В сценариях, в которых требуется внести изменения в рабочий процесс непрерывного исправления, команда обновления — самый простой способ сделать это. Вы можете напрямую обновить расписание или схему конфигурации JSON с помощью команды CLI обновления.

Схема команд:

az acr supply-chain workflow update -r <registry> -g <resourceGroup> -t continuouspatchv1 --config <JSONfilename> --schedule <number of days>

Пример команды:

az acr supply-chain workflow update -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d

Команда помощи для всех обязательных и необязательных параметров:

az acr supply-chain workflow update --help

Чтобы обновить расписание, выполните предыдущую команду с новыми входными данными для расписания. Чтобы обновить конфигурацию JSON, рекомендуется внести изменения в файл, выполнить сухой запуск и выполнить команду обновления.

Удаление процесса непрерывного обновления

Чтобы удалить рабочий процесс непрерывного исправления, выполните следующую команду CLI.

Схема команд:

az acr supply-chain workflow delete -r <registry> -g <resourceGroup> -t continuouspatchv1 

Пример команды:

az acr supply-chain workflow delete -r myregistry -g myresourcegroup -t continuouspatchv1

Команда помощи для всех обязательных и необязательных параметров:

az acr supply-chain workflow delete --help

После успешного удаления рабочего процесса репозиторий "csscpolicies/patchpolicy" будет автоматически удален. Три задачи, запускающие рабочий процесс, также будут удалены вместе с любыми текущими запланированными запусками.