Разрешить один личный реестр с докером - PullRequest
0 голосов
/ 23 января 2019

Мне нужно заблокировать все реестры и разрешить только одному частному реестру для докера извлекать образы, как это можно сделать непосредственно в докере.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Использование опций RedHat не будет работать на восходящем движке Docker CE или EE, RedHat разветвил механизм докера и добавил свои собственные функции, которые несовместимы. Вы также обнаружите, что / etc / sysconfig / docker - это файл конфигурации только для RedHat, предназначенный для работы с их версией сценариев запуска.

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

Вместо этого подход от Docker состоял в том, чтобы использовать нотариус / Доверие контента для криптографической подписи тега / манифеста изображения, чтобы убедиться, что он исходит из известного источника. Это обрабатывает изображения независимо от того, как они извлекаются, загружаются или собираются на хосте докера. В Docker CE это реализуется с помощью параметров на стороне клиента, и поэтому его можно легко отключить (хотя клиент в Docker CE с прямым доступом к вашему док-сокету может сделать гораздо больше, чем просто запускать общедоступные образы, они фактически являются пользователем root на вашем компьютере. хостов). Существуют инструменты для подключения к интерфейсу authz механизма докера, включая Twistlock и Open Policy Agent, но я не знаю, позволяют ли они применять Доверие к контенту.

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

В дополнение к тому, что я болел за поддержку, я вижу очень мало блокирующих Docker EE с этой опцией по другой причине: это идет вразрез со всеми целями DevOps, позволяющими разработчикам управлять своим набором инструментов без необходимости одобрения со стороны ops. Если они хотят переключиться с Java 8 на Java 9, разработчики должны легко реализовать их, и задача ops должна заключаться в том, есть ли в этом результирующем образе уязвимости, а не базовый образ, использованный для его создания.

0 голосов
/ 23 января 2019

Только что найдено в документах Redhat:

Это можно сделать в конфигурации демона Docker:

/ и т.д. / sysconfig / Докер

BLOCK_REGISTRY='--block-registry=all'
ADD_REGISTRY='--add-registry=registry.access.redhat.com'

и затем сделайте:

systemctl restart docker
...