הגדרת Azure Container Registry: ACR עם Managed Identity ו-RBAC

כאשר צוות מריץ עשרות מיקרוסרוויסים, היעדר רישום תמונות פרטי מסכן בדליפת קוד ובבקשות משיכה איטיות. אנו מגדירים את Azure Container Registry עם managed identity, RBAC ומדיניות שמירה, ומספקים פרויקט turnkey מבדיקת נאותות ועד תמיכה. הצוות שלנו מבטיח פעילות יציבה ותמיכה מתמשכת כך שהרישום גדל עם העסק שלכם.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

הגדרת Azure Container Registry: ACR עם Managed Identity ו-RBAC

כאשר צוות פיתוח מריץ עשרות מיקרוסרוויסים ב-AKS, הסתמכות על רישומים ציבוריים גורמת לבעיות: תלות ברישומים ציבוריים, סיכונים לדליפת קוד קנייני, ובקשות משיכה איטיות. Azure Container Registry (ACR) פותר את这些问题, אך תצורה סטנדרטית ללא מדיניות שמירה (retention policy) ו-RBAC מובילה לגלישת אחסון ולפרצות אבטחה. אנו מגדירים ACR עם managed identity, ניקוי תמונות אוטומטי, ו-geo-replication לפריסות מרובות אזורים. במשך למעלה מ-5 שנים, השלמנו יותר מ-30 פרויקטים עם ACR, כולל אינטגרציה עם AKS ו-CI/CD. עלויות האחסון ב-Standard הן כ-$0.04 ל-GB לחודש, וב-Premium $0.10, אך geo-replication יכול לחסוך מעל $200 לחודש על תעבורה.

למה לבחור ב-ACR לאחסון תמונות?

ACR עולה על Docker Hub בביצועים: משיכת תמונות מ-AKS מהירה בממוצע ב-40%. ACR תומך ב-managed identity, RBAC, ואינטגרציה עם Azure DevOps. לפי תיעוד Microsoft, יש להשתמש ב-managed identity ולבטל את חשבון האדמין.

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 # используем managed identity, не admin

  network_rule_set {
    default_action = "Allow"
  }

  retention_policy {
    days    = 30
    enabled = true
  }

  trust_policy {
    enabled = false # включить если нужен content trust
  }
}

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 # используем managed identity, не admin network_rule_set { default_action = "Allow" } retention_policy { days = 30 enabled = true } trust_policy { enabled = false # включить если нужен content trust } } הוא חובה. חשבון האדמין מספק גישה מלאה לרישום עם זוג שם משתמש/סיסמה יחיד. Managed identity עם RBAC הוא מאובטח משמעותית יותר.

תכונות עיקריות ו-SKUs

ACR מציע שלושה SKUs: Basic, Standard, ו-Premium. לייצור, יש צורך לפחות ב-Standard: 100 GB אחסון, webhooks, content trust. Premium מוסיף geo-replication, private endpoints, ו-dedicated data endpoints — הכרחי אם ACR משמש מאזורים מרובים או נדרשת בידוד רשת.

השוואת SKUs של ACR

SKU אחסון Webhooks Content Trust Geo-replication Private Endpoint
Basic 10 GB לא לא לא לא
Standard 100 GB כן כן לא לא
Premium 1 TB כן כן כן (עד 30 אזורים) כן

איך עובד Geo-replication ב-ACR?

Geo-replication זמין רק ב-Premium SKU. הוא משכפל תמונות לעד 30 אזורים. בקשות משיכה מופנות לעותק הקרוב ביותר, ומפחיתות את זמן האחזור ב-30–50% עבור אשכולות מרוחקים. השכפול הוא אסינכרוני (עקביות בסופו של דבר). אנו מגדירים שכפול עבור כל אזור שבו פועלים אשכולות AKS. זה מאיץ פריסות ומשפר את סובלנות התקלות.

הגדרת אבטחה ואימות

ביטול חשבון האדמין

חשבון האדמין יוצר נקודת כשל אחת. כאשר הוא מופעל, הסיסמה היא סטטית ויכולה להיירט. Managed identity מקושר לישות Azure ספציפית (למשל, kubelet ב-AKS) והתעודה מתחלפת אוטומטית. RBAC מאפשר להעניק הרשאות מינימליות — רק AcrPull לקריאת תמונות. עם חשבון האדמין, שליטה כזו בלתי אפשרית.

השוואת שיטות אימות

שיטה אבטחה ניהול סיבוב מפתחות
חשבון אדמין נמוכה ידני אין
Managed identity גבוהה אוטומטי (Azure) אוטומטי
Service principal בינונית עדכוני סודות ידניים ידני

איך להגדיר Private Endpoint לבידוד רשת?

כדי לבודד את ACR מהאינטרנט הציבורי, צור private endpoint ברשת הווירטואלית שלך. לאחר מכן, ACR הופך לנגיש רק מתוך הרשת. ההגדרה כוללת יצירת Private Link, רשומות DNS, וכללי רשת. זה מקטין את שטח התקיפה ונדרש בסביבות רגולטוריות.

אימות AKS דרך Managed Identity

# Привязываем ACR к AKS через az aks attach — это создаёт role assignment
az aks update \
    --name my-aks-cluster \
    --resource-group my-rg \
    --attach-acr myappacr

# Эквивалент вручную:
ACR_ID=$(az acr show --name myappacr --query id --output tsv)
KUBELET_ID=$(az aks show --name my-aks-cluster --resource-group my-rg \
    --query identityProfile.kubeletidentity.objectId --output tsv)
az role assignment create \
    --assignee $KUBELET_ID \
    --role AcrPull \
    --scope $ACR_ID

לאחר מכן, pods ב-AKS מושכים תמונות מ-ACR ללא admin_enabled = false — ה-kubelet משתמש ב-managed identity. זה מאיץ פריסות ומשפר את האבטחה.

ניהול מחזור חיים של תמונות

איך להגדיר ניקוי תמונות אוטומטי?

ללא מדיניות שמירה, הרישום גדל ללא הגבלה. אנו מגדירים ניקוי אוטומטי באמצעות # Привязываем ACR к AKS через az aks attach — это создаёт role assignment az aks update \ --name my-aks-cluster \ --resource-group my-rg \ --attach-acr myappacr # Эквивалент вручную: ACR_ID=$(az acr show --name myappacr --query id --output tsv) KUBELET_ID=$(az aks show --name my-aks-cluster --resource-group my-rg \ --query identityProfile.kubeletidentity.objectId --output tsv) az role assignment create \ --assignee $KUBELET_ID \ --role AcrPull \ --scope $ACR_ID :

# Удалять untagged манифесты старше 7 дней
az acr task create \
  --registry myappacr \
  --name cleanup-untagged \
  --cmd "acr purge --filter 'myapp:.*' --untagged --ago 7d" \
  --schedule "0 1 * * *" \
  --context /dev/null

# Удалять tagged образы (кроме latest) старше 30 дней
az acr task create \
  --registry myappacr \
  --name cleanup-old-tags \
  --cmd "acr purge --filter 'myapp:[0-9a-f]{7}' --ago 30d" \
  --schedule "0 2 * * 0" \
  --context /dev/null

אנו גם מגדירים התראות על שימוש באחסון דרך Azure Monitor. מדיניות אופטימלית היא לשמור לא יותר מ-20 תגיות לכל יישום.

אינטגרציה עם CI/CD ו-AKS

הגדרת ACR שלב אחר שלב

  1. קבע את ה-SKU והמיקום עבור הרישום.
  2. צור קבוצת משאבים ו-ACR באמצעות Terraform או Azure CLI.
  3. הגדר כללי רשת: אפשר גישה רק מ-IPs נדרשים או VNet.
  4. הפעל מדיניות שמירה וקבע את תקופת השמירה (למשל, 30 ימים).
  5. בטל את חשבון האדמין (imagePullSecrets).
  6. הגדר managed identity עבור AKS: az acr task.
  7. (אופציונלי) הגדר geo-replication.
  8. (אופציונלי) הגדר private endpoint.

מה כלול בעבודה

  • ניתוח התשתית הקיימת ודרישות אחסון התמונות
  • פריסת ACR עם ה-SKU המתאים, כללי רשת, private endpoints (אם נדרש)
  • הגדרת RBAC: AcrPull, AcrPush, AcrDelete עבור שירותים שונים
  • אינטגרציה עם AKS דרך managed identity (ללא imagePullSecrets)
  • הגדרת מדיניות שמירה עם purge auto-task
  • אינטגרציה עם Azure DevOps CI/CD (דוגמה: משימת Docker push עם managed identity)
  • תיעוד התהליך ו-runbook לאירועים
  • הדרכת צוות על עבודה עם ACR

כמה זמן לוקחת ההגדרה?

ACR בסיסי עם מדיניות שמירה — מ-4 שעות עד יום אחד. אם נדרשים geo-replication, private endpoints, אינטגרציה עם AKS ו-CI/CD — עד יומיים. לוחות הזמנים תלויים במספר האינטגרציות ובאישורי המדיניות.

טעויות נפוצות בהגדרת ACR

  • שימוש בחשבון האדמין — שכחה לבטל אותו. אנו תמיד מגדירים # Удалять untagged манифесты старше 7 дней az acr task create \ --registry myappacr \ --name cleanup-untagged \ --cmd "acr purge --filter 'myapp:.*' --untagged --ago 7d" \ --schedule "0 1 * * *" \ --context /dev/null # Удалять tagged образы (кроме latest) старше 30 дней az acr task create \ --registry myappacr \ --name cleanup-old-tags \ --cmd "acr purge --filter 'myapp:[0-9a-f]{7}' --ago 30d" \ --schedule "0 2 * * 0" \ --context /dev/null .
  • אין מדיניות שמירה — הרישום מתמלא. אנו מתזמנים ניקוי תקופתי.
  • RBAC שגוי — הענקת AcrPush במקום AcrPull. עקרון ההרשאות המינימליות.
  • אין כללי רשת — ACR נגיש מהאינטרנט. אם נדרשת בידוד, אנו מגדירים private endpoints.

צור קשר לייעוץ — המהנדסים שלנו יפרוסו ACR turnkey, ישלבו עם CI/CD ו-AKS, ויאמנו את הצוות שלך בעבודה עם הרישום. קבל אחסון תמונות אמין ללא כאבי ראש. הזמן הגדרת ACR היום.