Как использовать команду docker scout policy для оценки политик образов

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как использовать команду docker scout policy для оценки политик образов. Вы рассмотрите различные сценарии оценки политик, включая оценку политик для конкретного образа, оценку политик для конкретной организации, оценку политик для образа с определенной платформой и сравнение результатов политики для репозитория в определенной среде.

Путем выполнения практических упражнений вы получите практический опыт использования команды docker scout policy для оценки соответствия и безопасности ваших Docker-образов на основе определенных политик.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/pull -.-> lab-555208{{"Как использовать команду docker scout policy для оценки политик образов"}} docker/images -.-> lab-555208{{"Как использовать команду docker scout policy для оценки политик образов"}} end

Оценка политик для конкретного образа

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

Сначала давайте загрузим образ-пример, который мы будем использовать для оценки. Мы будем использовать образ hello-world с Docker Hub. Это очень маленький образ, который просто выводит "Hello from Docker!" и завершает работу.

docker pull hello-world

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

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Теперь, когда у нас есть образ, мы можем оценить политики для него. Конкретная команда и инструмент для оценки политики будут зависеть от используемого вами механизма политики. В рамках этого практического занятия (лабораторной работы) мы предполагаем, что вы используете гипотетический инструмент для оценки политики под названием policy-eval.

Для оценки политик для образа hello-world вы обычно запустите команду, похожую на следующую:

## Это гипотетическая команда и она не будет работать в этой среде.
## Она приведена здесь только для иллюстрации.
## policy-eval evaluate --image hello-world:latest

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

Чтобы проверить, присутствует ли образ hello-world в вашей системе, вы можете использовать команду docker images и отфильтровать вывод.

docker images | grep hello-world

Если образ был успешно загружен, вы должны увидеть вывод, похожий на следующий, показывающий репозиторий, тег, идентификатор образа, время создания и размер образа hello-world.

hello-world   latest    <image_id>   <creation_time>   <size>

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

Оценка политик для образа конкретной организации

На этом этапе вы узнаете, как оценивать политики для Docker-образа, принадлежащего конкретной организации. В контексте Docker Hub и других реестров контейнеров образы часто организованы в рамках пространств имен пользователей или организаций. Это позволяет лучше управлять и контролировать доступ.

Для демонстрации этого мы загрузим образ из конкретной организации на Docker Hub. Используем образ ubuntu, который поддерживается организацией library (официальные образы).

docker pull ubuntu

Вы должны увидеть вывод, показывающий прогресс загрузки.

Using default tag: latest
latest: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Обратите внимание, что имя образа - ubuntu, но при загрузке его часто называют library/ubuntu. Часть library представляет собой организацию. При оценке политик для образов конкретной организации обычно нужно указать полное имя образа, включая имя организации.

Как и на предыдущем этапе, точная команда для оценки политики будет зависеть от вашего механизма политики. Гипотетическая команда может выглядеть так:

## Это гипотетическая команда и она не будет работать в этой среде.
## Она приведена здесь только для иллюстрации.
## policy-eval evaluate --image library/ubuntu:latest --organization library

Снова, так как у нас нет конкретного инструмента для оценки политики, мы проверим, что образ ubuntu от организации library присутствует локально.

Используйте команду docker images и отфильтруйте по ubuntu.

docker images | grep ubuntu

Вы должны увидеть вывод, похожий на следующий, подтверждающий наличие образа ubuntu.

ubuntu        latest    <image_id>   <creation_time>   <size>

Это показывает, что образ от организации library доступен для оценки политики. Оценка политик на основе организации является важной для соблюдения специфических требований безопасности и соответствия организации.

Оценка политик для образа с определенной платформой

На этом этапе вы узнаете, как оценивать политики для Docker-образа, созданного для определенной платформы. Docker-образы могут быть созданы для различных архитектур и операционных систем (платформ), таких как linux/amd64, linux/arm64, windows/amd64 и т.д. При оценке политик важно учитывать целевую платформу образа, так как уязвимости и требования к соответствию могут различаться в зависимости от платформы.

Для демонстрации этого мы попытаемся загрузить образ для определенной платформы. Мы будем использовать образ alpine, который представляет собой легковесное дистрибутив Linux, и укажем платформу linux/arm64.

docker pull --platform linux/arm64 alpine

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

Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

Даже если вы указали linux/arm64, Docker может загрузить образ для архитектуры вашего хоста, если доступен многоархитектурный образ и для указанной платформы нет конкретного манифеста. Однако эта команда демонстрирует, как можно попытаться загрузить образ для определенной платформы.

При оценке политик для определенной платформы ваш инструмент для оценки политик обычно имеет возможность указать целевую платформу. Гипотетическая команда может выглядеть так:

## This is a hypothetical command and will not work in this environment.
## It is shown here for illustrative purposes only.
## policy-eval evaluate --image alpine:latest --platform linux/arm64

Чтобы проверить, что у вас есть локально доступный образ alpine (независимо от конкретной архитектуры, которую загрузил Docker), вы можете использовать команду docker images и отфильтровать по alpine.

docker images | grep alpine

Вы должны увидеть вывод, похожий на следующий, подтверждающий наличие образа alpine.

alpine        latest    <image_id>   <creation_time>   <size>

Оценка политик на основе платформы образа является важной для обеспечения соответствия и безопасности ваших образов в конкретных средах, где они будут развертываться. Различные платформы могут иметь разные системные библиотеки и настройки, что приводит к платформ - специфическим уязвимостям.

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

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

В Docker "репозиторий" (repository) представляет собой набор связанных образов, часто с разными тегами (например, latest, 1.0, dev и т.д.). Например, репозиторий ubuntu на Docker Hub содержит различные версии образа Ubuntu.

Сравнение результатов политики для репозитория в определенной среде обычно включает:

  1. Оценку политики для нескольких образов в этом репозитории.
  2. Учет среды, в которой будут развертываться образы (например, разработка, тестирование, производство). Различные среды могут иметь разные требования к политике.
  3. Анализ и сравнение отчетов по оценке политики для образов в контексте целевой среды.

Для имитации наличия нескольких образов из репозитория давайте загрузим другой тег образа ubuntu. Мы загрузим тег 20.04.

docker pull ubuntu:20.04

Вы должны увидеть вывод, указывающий на загрузку образа ubuntu:20.04.

20.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

Теперь у вас есть два образа из репозитория ubuntu: ubuntu:latest (который мы загрузили на предыдущем этапе) и ubuntu:20.04.

Чтобы увидеть оба образа, вы можете вывести список всех образов ubuntu:

docker images | grep ubuntu

Вы должны увидеть вывод, похожий на следующий, показывающий оба тега:

ubuntu        latest    <image_id_latest>   <creation_time_latest>   <size_latest>
ubuntu        20.04     <image_id_20.04>    <creation_time_20.04>    <size_20.04>

В реальной ситуации сравнения политики вы бы оценили политики как для ubuntu:latest, так и для ubuntu:20.04. Инструмент оценки политики сгенерировал бы отчеты для каждого образа. Затем вы бы сравнили эти отчеты, возможно, отфильтровав или проанализировав результаты на основе требований определенной среды (например, "политики для продакшн - среды").

Гипотетическая команда для сравнения результатов политики может выглядеть так:

## This is a hypothetical command and will not work in this environment.
## It is shown here for illustrative purposes only.
## policy-eval compare --repository ubuntu --environment production

Поскольку мы не можем провести фактическое сравнение, проверка на этом этапе будет сосредоточена на том, чтобы убедиться, что у вас локально доступны как образ ubuntu:latest, так и образ ubuntu:20.04, которые являются необходимыми образами для такого сравнения.

Резюме

В этом практическом занятии мы изучили основной процесс оценки политик для конкретного Docker-образа. Мы начали с загрузки образца образа hello-world, чтобы продемонстрировать необходимость наличия образа локально перед оценкой политики. Затем мы смоделировали процесс оценки политики, проверив наличие образа с помощью команды docker images. Этот первый шаг заложил основу для понимания того, как нацелиться на конкретный образ для проверки политики.

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