Практичний посібник: ACR з managed identity, RBAC та retention policy

Коли команда запускає десятки мікросервісів, без приватного реєстру образів виникають ризики витоку коду та повільні pull-запити. Ми налаштовуємо Azure Container Registry з managed identity, RBAC та retention policy, реалізуючи проєкт під ключ — від аудиту до супроводу. Наша команда забезпечує стабільну роботу та подальшу підтримку, щоб реєстр масштабувався разом із вашим бізнесом.
Часті запитання

Практичний посібник: ACR з managed identity, RBAC та retention policy

Огляд ACR та його переваги

Коли команда розробки запускає десятки мікросервісів в AKS, без приватного реєстру образів виникають проблеми: залежність від публічних registry, ризики витоку пропрієтарного коду, повільні pull-запити. Azure Container Registry (ACR) вирішує ці завдання. Ми налаштовуємо ACR з managed identity, автоматичним очищенням образів та geo-replication для мультирегіональних деплоїв. За 5 років ми реалізували понад 30 проектів з ACR, включаючи інтеграцію з AKS та CI/CD.

ACR виграє у Docker Hub за продуктивністю: pull-образів з AKS в середньому на 40% швидше, а з geo-replication — до 2 разів швидше для віддалених регіонів. Вартість зберігання в Standard — близько $0.04 за ГБ на місяць, в Premium — $0.10, але за рахунок geo-replication економія на трафіку може перевищувати $500 на місяць для великих проектів. За рекомендацією Microsoft (документація ACR), слід використовувати managed identity та вимикати admin account.

resource "azurerm_container_registry" "acr" {
  name                = "myappacr"
  resource_group_name = azurerm_resource_group.main.name
  location            = azurerm_resource_group.main.location
  sku                 = "Standard"
  admin_enabled       = false

  network_rule_set {
    default_action = "Allow"
  }

  retention_policy {
    days    = 30
    enabled = true
  }

  trust_policy {
    enabled = false
  }
}

Порівняння SKU ACR

SKU Сховище Webhooks Content Trust Geo-replication Private Endpoint Ціна ($/міс)
Basic 10 ГБ Ні Ні Ні Ні ~$5
Standard 100 ГБ Так Так Ні Ні ~$25
Premium 1 ТБ Так Так Так (до 30 регіонів) Так ~$100

Налаштування безпеки та автентифікації

Відмова від admin account

Admin account створює єдину точку компрометації. Managed identity прив'язується до конкретної Azure-сутності і сертифікат ротується автоматично. RBAC дозволяє видати мінімальні права — лише AcrPull для читання образів. Ми, як сертифіковані Azure інженери, гарантуємо, що кожне налаштування виконується з мінімумом прав.

Порівняння методів автентифікації

Метод Безпека Управління Ротація ключів
Admin account Низька Вручну Ні
Managed identity Висока Автоматично Автоматична
Service principal Середня Ручне оновлення Вручну

Для ізоляції ACR від публічного інтернету створюють private endpoint у віртуальній мережі. Це знижує поверхню атаки і необхідно в regulated середовищах. Наш 5-річний досвід підтверджує, що private endpoint з managed identity — найбезпечніше рішення.

Автентифікація AKS через managed identity

az aks update \ --name my-aks-cluster \ --resource-group my-rg \ --attach-acr myappacr 

Після цього поди в AKS тягнуть образи з ACR без imagePullSecrets — kubelet використовує managed identity.

Управління життєвим циклом образів

Без retention policy реєстр зростає безмежно. Налаштовуємо автоматичне очищення через az acr task. Наприклад, видаляти untagged маніфести старші 7 днів або tagged образи (крім latest) старші 30 днів. Ми також налаштовуємо алерти по використанню сховища через Azure Monitor. Оптимальна політика — зберігати не більше 20 тегів на додаток.

az acr task create \
  --registry myappacr \
  --name cleanup-untagged \
  --cmd "acr purge --filter 'myapp:.*' --untagged --ago 7d" \
  --schedule "0 1 * * *" \
  --context /dev/null
Детальніше про retention policy Retention policy в ACR дозволяє автоматично видаляти маніфести після заданої кількості днів. Вона працює на рівні реєстру, але для більш тонкого контролю використовуйте az acr task.

Інтеграція з CI/CD та AKS

Покрокове налаштування ACR

  1. Визначте SKU та location для реєстру.
  2. Створіть resource group та ACR через Terraform або Azure CLI.
  3. Налаштуйте network rules: дозвольте доступ лише з потрібних IP або VNet.
  4. Увімкніть retention policy та задайте термін зберігання (30 днів).
  5. Вимкніть admin account (admin_enabled = false).
  6. Налаштуйте managed identity для AKS: az aks update --attach-acr <acr>.
  7. (Опціонально) Налаштуйте geo-replication.
  8. (Опціонально) Налаштуйте private endpoint.

Що входить в роботу та типові помилки

Аналіз поточної інфраструктури, розгортання ACR з потрібним SKU, network rules, private endpoints (якщо потрібно), налаштування RBAC (AcrPull, AcrPush, AcrDelete), інтеграція з AKS через managed identity, налаштування retention policy з автозадачею purge, інтеграція з Azure DevOps CI/CD, документація та навчання команди. Типові помилки: використання admin account, відсутність retention policy, неправильні RBAC (AcrPush замість AcrPull), відсутність network rules. Наш досвід показує, що ці помилки легко уникнути при правильному проектуванні.

Базовий ACR з retention policy — від 4 годин до 1 дня. Якщо потрібні geo-replication, private endpoints, інтеграція з AKS та CI/CD — до 2 днів. Терміни залежать від кількості інтеграцій та узгодження політик.

Зв'яжіться з нами для консультації — наші сертифіковані інженери розгорнуть ACR під ключ, інтегрують з CI/CD та AKS, навчать працювати з registry. Гарантія якості та післяпродажна підтримка. Отримайте надійне зберігання образів без головного болю.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142