Azure şemaları 'nda kaynak kilitlemeyi anlama

Ölçekteki tutarlı ortamların oluşturulması, bu tutarlılığı sürdürmek için bir mekanizma varsa gerçek anlamda değerlidir. Bu makalede, Azure şemaları 'nda kaynak kilitleme 'nin nasıl çalıştığı açıklanmaktadır. Kaynak kilitleme ve reddetme atamalarından oluşan bir örnek görmek için bkz. yeni kaynakları koruma öğreticisi.

Not

Azure şemaları tarafından dağıtılan kaynak kilitleri yalnızca şema atama tarafından dağıtılan uzantı olmayan kaynaklara uygulanır. Zaten var olan kaynak gruplarında olanlar gibi mevcut kaynaklar bunlara kilit eklenmez.

Kilitleme modları ve durumlar

Kilitleme modu, şema ataması için geçerlidir ve üç seçeneğe sahiptir: kilitleme, salt okuma veya silme. Kilitleme modu, bir şema ataması sırasında yapıt dağıtımı sırasında yapılandırılır. Şema ataması güncelleştirilerek farklı bir kilitleme modu ayarlanabilir. Ancak, kilitleme modları Azure şemaları dışında değiştirilemez.

Şema atamasında yapıtlar tarafından oluşturulan kaynakların dört durumu vardır: kilitli değil, salt okunurdur, düzenleme/silme yapılamaz veya silinemez. Her yapıt türü kilitli değil durumunda olabilir. Aşağıdaki tablo bir kaynağın durumunu belirlemede kullanılabilir:

Mod Yapıt kaynak türü Durum Açıklama
Kilitleme * Kilitlenmedi Kaynaklar Azure şemaları tarafından korunmuyor. Bu durum, bir salt okunurdur veya bir şema atamasının dışında kaynak grubu yapıtı silme ' ya eklenen kaynaklar için de kullanılır.
Salt Okunur Kaynak grubu Düzenleme/silme yapılamıyor Kaynak grubu salt okunurdur ve kaynak grubundaki Etiketler değiştirilemez. Kilitli kaynaklar bu kaynak grubundan eklenebilir, taşınabilir, değiştirilebilir veya silinebilir.
Salt Okunur Kaynak olmayan Grup Salt Okunur Kaynak hiçbir şekilde değiştirilemez. Değişiklik yok ve silinemez.
Silme * Silinemiyor Kaynaklar değiştirilebilir, ancak silinemez. Kilitli kaynaklar bu kaynak grubundan eklenebilir, taşınabilir, değiştirilebilir veya silinebilir.

Kilitleme durumlarını geçersiz kılma

Genellikle abonelikte, ' sahip ' rolü gibi uygun Azure rol tabanlı erişim denetimi (Azure RBAC) ile herhangi bir kaynağı değiştirme veya silme izni verilmesi olasıdır. Bu erişim, Azure şemaları, dağıtılan bir atamanın parçası olarak kilitlemeyi uygularken durum değildir. Atama salt okuma veya silme seçeneği ile ayarlandıysa, abonelik sahibi korumalı kaynak üzerinde engellenmiş eylemi gerçekleştirebilir.

Bu güvenlik ölçüsü, tanımlanan şema 'in ve yanlışlıkla ya da programlı silme veya değiştirme işleminden oluşturmakta tasarlanan ortamın tutarlılığını korur.

Yönetim grubuna ata

Abonelik sahiplerinin bir şema atamasını kaldırmasını engelleyen tek seçenek, şema 'i bir yönetim grubuna atacaktır. Bu senaryoda, BLUEPRINT atamasını kaldırmak için gerekli izinlere sahip yalnızca yönetim grubunun sahipleri vardır.

Şemayı bir abonelik yerine bir yönetim grubuna atamak için, REST API çağrısı şuna benzer şekilde değişir:

PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{assignmentMG}/providers/Microsoft.Blueprint/blueprintAssignments/{assignmentName}?api-version=2018-11-01-preview

Tarafından tanımlanan yönetim grubu, {assignmentMG} Yönetim grubu hiyerarşisinde olmalıdır ya da şema tanımının kaydedildiği yönetim grubu aynı olmalıdır.

Şema atamasının istek gövdesi şöyle görünür:

{
    "identity": {
        "type": "SystemAssigned"
    },
    "location": "eastus",
    "properties": {
        "description": "enforce pre-defined simpleBlueprint to this XXXXXXXX subscription.",
        "blueprintId": "/providers/Microsoft.Management/managementGroups/{blueprintMG}/providers/Microsoft.Blueprint/blueprints/simpleBlueprint",
        "scope": "/subscriptions/{targetSubscriptionId}",
        "parameters": {
            "storageAccountType": {
                "value": "Standard_LRS"
            },
            "costCenter": {
                "value": "Contoso/Online/Shopping/Production"
            },
            "owners": {
                "value": [
                    "johnDoe@contoso.com",
                    "johnsteam@contoso.com"
                ]
            }
        },
        "resourceGroups": {
            "storageRG": {
                "name": "defaultRG",
                "location": "eastus"
            }
        }
    }
}

Bu istek gövdesinde ve bir aboneliğe atanmakta olan anahtar farkı properties.scope özelliktir. Bu gerekli özellik, şema atamasının uygulandığı aboneliğe ayarlanmalıdır. Abonelik, şema atamasının depolandığı yönetim grubu hiyerarşisinin doğrudan bir alt öğesi olmalıdır.

Not

Yönetim grubu kapsamına atanan bir şema, hala abonelik düzeyinde bir şema ataması olarak çalışır. Tek fark, abonelik sahiplerinin atamayı ve ilişkili kilitleri kaldırmasını engellemek için şema atamasının depolandığı yerdir.

Kilitleme durumları kaldırılıyor

Atama tarafından korunan bir kaynağı değiştirmek veya silmek için gerekli hale gelirse, bunu iki şekilde yapabilirsiniz.

  • Şema atamasını kilitleme moduna yükseltme
  • Şema atamasını silme

Atama kaldırıldığında, Azure şemaları tarafından oluşturulan kilitler kaldırılır. Ancak, kaynak arka planda bırakılır ve normal yollarla silinmelidir.

Şema kilitleri nasıl çalışır?

Atama salt okuma veya silme seçeneği belirlenmişse, bir şema atama sırasında yapıt kaynaklarına bir Azure RBAC reddetme ataması reddetme eylemi uygulanır. Reddetme eylemi, BLUEPRINT atamasının yönetilen kimliği tarafından eklenir ve yalnızca aynı yönetilen kimliğe göre yapıt kaynaklarından kaldırılabilir. Bu güvenlik ölçüsü, kilitleme mekanizmasını zorlar ve Azure şemaları dışında şema kilidinin kaldırılmasını engeller.

Bir kaynak grubu için erişim denetimi (I M) sayfasının ve atamaları reddetme sekmesinin ekran görüntüsü.

Her modun reddetme atama özellikleri aşağıdaki gibidir:

Mod İzinler. eylemler Permissions. NotActions Sorumlular [i]. Türüyle Excludesorumlularını [i]. Numarasını DoNotApplyToChildScopes
Salt Okunur **** _ _ *
/Microsoft. Authorization/kilitleri oku/Sil/
Microsoft. Network/virtualNetwork/alt ağları/JOIN/Action
*
SystemDefined (herkes) Excludedsorumlularını içinde şema atama ve Kullanıcı tanımlı Kaynak grubu- true; Kaynak- yanlış
Silme */Delete Microsoft. Authorization/kilitleri/silme
Microsoft. Network/virtualNetwork/alt ağlar/JOIN/Action
SystemDefined (herkes) Excludedsorumlularını içinde şema atama ve Kullanıcı tanımlı Kaynak grubu- true; Kaynak- yanlış

Önemli

Azure Resource Manager, rol atama ayrıntılarını 30 dakikaya kadar önbelleğe alır. Sonuç olarak, şemayı reddetme, şema kaynaklarını reddetme eylemini reddetme işlemleri hemen etkili olmayabilir. Bu süre boyunca, BLUEPRINT kilitleri tarafından korunması amaçlanan bir kaynağı silmek mümkün olabilir.

Bir sorumluyu reddetme atamasından dışlama

Bazı tasarım veya güvenlik senaryolarında, şema atamasının oluşturduğu reddetme atamasından bir sorumluyu dışlamak gerekebilir. Bu adım, atamayı oluştururken kilitler özelliğindeki excludedsorumlularını dizisine en fazla beş değer eklenerek REST API yapılır. Aşağıdaki atama tanımı, Excludedsorumlularını içeren bir istek gövdesi örneğidir:

{
  "identity": {
    "type": "SystemAssigned"
  },
  "location": "eastus",
  "properties": {
    "description": "enforce pre-defined simpleBlueprint to this XXXXXXXX subscription.",
    "blueprintId": "/providers/Microsoft.Management/managementGroups/{mgId}/providers/Microsoft.Blueprint/blueprints/simpleBlueprint",
    "locks": {
        "mode": "AllResourcesDoNotDelete",
        "excludedPrincipals": [
            "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
            "38833b56-194d-420b-90ce-cff578296714"
        ]
    },
    "parameters": {
      "storageAccountType": {
        "value": "Standard_LRS"
      },
      "costCenter": {
        "value": "Contoso/Online/Shopping/Production"
      },
      "owners": {
        "value": [
          "johnDoe@contoso.com",
          "johnsteam@contoso.com"
        ]
      }
    },
    "resourceGroups": {
      "storageRG": {
        "name": "defaultRG",
        "location": "eastus"
      }
    }
  }
}

Reddetme atamasından bir eylemi hariç tutma

Bir şema atamasında bir reddetme atamasında sorumluyu dışlamama benzer şekilde, belirli Azure Kaynak sağlayıcısı işlemlerinidışarıda bırakabilirsiniz. Properties. kilitleri bloğunda, excludedsorumlularını aynı yerde, bir excludedadıctions eklenebilir:

"locks": {
    "mode": "AllResourcesDoNotDelete",
    "excludedPrincipals": [
        "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
        "38833b56-194d-420b-90ce-cff578296714"
    ],
    "excludedActions": [
        "Microsoft.ContainerRegistry/registries/push/write",
        "Microsoft.Authorization/*/read"
    ]
},

Excludedsorumlularını açık olmalıdır, excludedadctions girişleri, * kaynak sağlayıcısı işlemlerinin joker karakter eşleştirmesinin kullanımını kullanabilirler.

Sonraki adımlar