Блокировка образа контейнера в Реестре контейнеров Azure

В реестре контейнеров Azure можно заблокировать версию образа или репозиторий, чтобы их нельзя было удалить или обновить. Чтобы заблокировать образ или репозиторий, обновите их атрибуты с помощью команды Azure CLI az acr repository update.

При работе с этой статьей требуется запустить Azure CLI в Azure Cloud Shell или локально (рекомендуется версия 2.0.55 или более поздняя). Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Внимание

Эта статья не применяется для блокировки всего реестра, например с помощью параметра Параметры > Блокировки на портале Azure или команд az lock в Azure CLI. Блокировка ресурса реестра не мешает создавать, обновлять или удалять данные в репозиториях. Блокировка реестра влияет только на операции управления, такие как добавление или удаление репликации, а также удаление самого реестра. Дополнительные сведения см. в статье Блокировка ресурсов для предотвращения непредвиденных изменений.

Сценарии

По умолчанию изображение с тегами в реестре контейнеров Azure является изменяемым, поэтому при соответствующих разрешениях можно многократно обновлять и отправлять в реестр образ с тем же тегом. Образы контейнеров также можно Удалить по мере необходимости. Такое поведение полезно при разработке образов и необходимости сохранять размер реестра.

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

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

Используйте команду az acr repository update, чтобы задать атрибуты репозитория и получить следующие возможности.

  • Блокировка версии образа или всего репозитория

  • Защита версии или репозитория образа от удаления, но разрешение обновлений

  • Запрет операции чтения (извлечения) для версии образа или всего репозитория

Дополнительные сведения см. в следующих разделах.

Блокировка образа или репозитория

Отображение текущих атрибутов репозитория

Чтобы просмотреть текущие атрибуты репозитория, выполните следующую команду az acr repository show:

az acr repository show \
    --name myregistry --repository myrepo \
    --output jsonc

Отображение атрибутов текущего образа

Чтобы просмотреть текущие атрибуты тега, выполните следующую команду az acr repository show:

az acr repository show \
    --name myregistry --image myrepo:tag \
    --output jsonc

Блокировка образа по тегу

Чтобы заблокировать образ myrepo:tag в myregistry, выполните следующую команду az acr repository update :

az acr repository update \
    --name myregistry --image myrepo:tag \
    --write-enabled false

Блокировка образа с помощью дайджеста манифеста

Чтобы заблокировать образ myrepo, определяемый дайджестом манифеста (хэш SHA-256, представленный как sha256:...), выполните следующую команду. (Чтобы найти дайджест манифеста, связанный с одним или несколькими тегами образов, выполните команду az acr manifest list-metadata.)

az acr repository update \
    --name myregistry --image myrepo@sha256:123456abcdefg \
    --write-enabled false

Блокировка репозитория

Чтобы заблокировать репозиторий myrepo и все образы в нем, выполните следующую команду:

az acr repository update \
    --name myregistry --repository myrepo \
    --write-enabled false

Вывод списка текущих атрибутов репозитория

Чтобы обновить атрибуты репозитория, чтобы указать список блокировки образа, выполните команду az acr repository update .

az acr repository update \
    --name myregistry --repository myrepo \ 
    --list-enabled false

Отображение атрибутов изображения на блокировке изображения

Чтобы запросить теги на блокировке изображения с --list-enabled false включенным атрибутом, выполните команду az acr repository show .

az acr repository show-manifests \
    --name myregistry --repository myrepo \
    --query "[?listEnabled==null].tags" 
    --output table

Проверьте атрибуты изображения для тега и соответствующего манифеста.

Примечание.

  • Изменяемые атрибуты тегов и манифеста управляются отдельно. То есть параметр атрибута deleteEnabled=false для тега не будет задано одинаково для соответствующего манифеста.
  • Запрос атрибутов с помощью следующего скрипта:
registry="myregistry"
repo="myrepo"
tag="mytag"

az login
az acr repository show -n $registry --repository $repo
az acr manifest show-metadata -r $registry -n "$repo:$tag"
digest=$(az acr manifest show-metadata -r $registry -n "$repo:$tag" --query digest -o tsv)
az acr manifest show-metadata -r $registry -n "$repo@$digest"

Примечание.

Если атрибуты изображения заданы или writeEnabled=false deleteEnabled=falseбудут заблокированы, удаление образа будет блокироваться.

Защита образа или репозитория от удаления

Защита образа от удаления

Чтобы разрешить обновление образа myrepo:tag , но не удалено, выполните следующую команду:

az acr repository update \
    --name myregistry --image myrepo:tag \
    --delete-enabled false --write-enabled true

Защита репозитория от удаления

Следующая команда задает такие характеристики репозиторию myrepo, что его нельзя удалить. Отдельные образы по-прежнему могут обновляться или удаляться.

az acr repository update \
    --name myregistry --repository myrepo \
    --delete-enabled false --write-enabled true

Запрет операций чтения для образа или репозитория

Чтобы предотвратить операции чтения (извлечения) на изображении myrepo:tag , выполните следующую команду:

az acr repository update \
    --name myregistry --image myrepo:tag \
    --read-enabled false

Чтобы запретить операции чтения для всех образов в репозитории myrepo, выполните следующую команду:

az acr repository update \
    --name myregistry --repository myrepo \
    --read-enabled false

Разблокировка образа или репозитория

Чтобы восстановить поведение образа myrepo:tag по умолчанию, чтобы его можно было удалить и обновить, выполните следующую команду:

az acr repository update \
    --name myregistry --image myrepo:tag \
    --delete-enabled true --write-enabled true

Чтобы восстановить поведение репозитория myrepo по умолчанию, чтобы отдельные образы были удалены и обновлены, выполните следующую команду:

az acr repository update \
    --name myregistry --repository myrepo \
    --delete-enabled true --write-enabled true

Однако если в манифесте есть блокировка, необходимо выполнить дополнительную команду, чтобы разблокировать манифест.

az acr repository update \
   --name myregistry --image $repo@$digest \
   --delete-enabled true --write-enabled true

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

В этой статье вы узнали об использовании команды az acr repository update для предотвращения удаления или обновления версий изображений в репозитории. Чтобы задать дополнительные атрибуты, ознакомьтесь со справкой по команде az acr repository update.

Чтобы просмотреть атрибуты, заданные для версии образа или репозитория, используйте команду az acr repository show.

Дополнительные сведения об операциях удаления см. в статье Удаление образов контейнеров в службе "Реестр контейнеров Azure".