Beklenmeyen değişiklikleri önlemek için kaynakları kilitleme

Yönetici olarak kuruluşunuzdaki diğer kullanıcıların yanlışlıkla silmesini veya kritik kaynakları değiştirmesini önlemek için belirli bir aboneliği, kaynak grubunu veya kaynağı kilitleyebilirsiniz. Kilit, kullanıcının sahip olabileceği tim izinleri geçersiz kılar.

Kilit düzeyini CanNotDelete veya ReadOnly olarak ayarlayabilirsiniz. Portalda kilitler sırasıyla Silme ve Salt Okuma olarak adlandırılır.

  • Cannotdelete , yetkili kullanıcıların bir kaynağı hala okuyabilecekleri ve değiştirebilecekleri anlamına gelir, ancak kaynakları silemez.
  • ReadOnly , yetkili kullanıcıların bir kaynağı okuyabilecekleri anlamına gelir, ancak kaynakları silemez veya güncelleştiremez. Bu kilidi uygulamak, tüm yetkili kullanıcıları okuyucu rolü tarafından verilen izinlerle kısıtlamak için benzerdir.

Rol tabanlı erişim denetiminin aksine, yönetim kilitlerini tüm kullanıcılar ve rollere kısıtlama getirmek için kullanırsınız. Kullanıcılar ve roller için izinleri ayarlama hakkında bilgi edinmek için bkz. Azure rol tabanlı erişim denetimi (Azure RBAC).

Devralmayı kilitle

Üst kapsamda bir kilit uyguladığınızda, bu kapsamdaki tüm kaynaklar aynı kilidi alır. Daha sonra eklediğiniz kaynaklar bile kilidi üst öğeden alır. Devralmada en kısıtlayıcı kilit öncelik kazanır.

Kilitlerin kapsamını anlama

Not

Kilitlerin tüm işlem türleri için uygulanmaması gerektiğini anlamak önemlidir. Azure işlemleri, denetim düzlemi ve veri düzlemi olmak üzere iki kategoriye ayrılabilir. Kilitler yalnızca denetim düzlemi işlemleri için geçerlidir.

Denetim düzlemi işlemlerine gönderilen işlemler https://management.azure.com . Veri düzlemi işlemleri, gibi bir hizmetin örneğine gönderilen işlemlerdir https://myaccount.blob.core.windows.net/ . Daha fazla bilgi için bkz. Azure denetim düzlemi ve veri düzlemi. Denetim düzlemi URL 'sini hangi işlemlerin kullanacağınızı saptamak için bkz. Azure REST API.

Bu ayrım, kilitlerin kaynak üzerinde değişiklik yapılmasını engellediğini gösterir, ancak kaynakların kendi işlevlerini nasıl gerçekleştireceğini kısıtlamaz. örneğin, SQL Veritabanı bir mantıksal sunucu üzerinde salt okunur bir kilit, sunucuyu silmenizi veya değiştirmenizi önler. Bu, sunucusundaki veritabanlarında veri oluşturmanızı, güncelleştirmenizi veya silmenizi engellemez. Bu işlemler https://management.azure.com hedefine gönderilmediğinden veri işlemlerine izin verilir.

Denetim ve veri düzlemi işlemleri arasındaki farklılıklara ilişkin daha fazla örnek, sonraki bölümde açıklanmaktadır.

Kilitleri uygulamadan önce dikkat edilecek noktalar

Kilitleri uygulamak, kaynağı değiştirmeyen bazı işlemler gerçekten kilit tarafından engellenen eylemler gerektirdiğinden beklenmedik sonuçlara neden olabilir. Kilitler Azure Resource Manager API 'sine POST isteği gerektiren tüm işlemleri engeller. Kilitlerle engellenen işlemlerin bazı yaygın örnekleri şunlardır:

  • Depolama hesabında salt okunurdur bir kilit, kullanıcıların hesap anahtarlarını listelemesine engel olur. Azure Depolama List keys işlemi, depolama hesabındaki verilere yönelik tüm erişimleri sağlayan hesap anahtarlarına erişimi korumak için bir POST isteği aracılığıyla işlenir. Bir depolama hesabı için salt okunurdur bir kilit yapılandırıldığında, hesap anahtarlarına sahip olmayan kullanıcıların blob veya kuyruk verilerine erişmek için Azure AD kimlik bilgilerini kullanması gerekir. Salt okunurdur bir kilit, depolama hesabı kapsamındaki Azure RBAC rollerinin atanmasını veya bir veri kapsayıcısını (blob kapsayıcısı ya da kuyruğu) engeller.

  • Bir depolama hesabındaki bir Delete kilidi, bu hesabın içindeki verilerin silinmesini veya değiştirilmesini engellemez. Bu tür kilit yalnızca depolama hesabının silinmesini önler. Bir istek veri düzlemi işlemlerinikullanıyorsa, depolama hesabındaki kilit blob, kuyruk, tablo veya bu depolama hesabı içindeki dosya verilerini korumaz. Ancak, istek Denetim düzlemi işlemlerinikullanıyorsa kilit bu kaynakları korur.

    Örneğin, bir istek bir denetim düzlemi işlemi olan dosya paylaşımları-Silkullanıyorsa, silme reddedilir. İstek bir veri düzlemi işlemi olan silme payınıkullanıyorsa, silme işlemi başarılı olur. Denetim düzlemi işlemlerini kullanmanızı öneririz.

  • Bir depolama hesabındaki salt okuma kilidi, söz konusu hesabın içindeki verilerin silinmesini veya değiştirilmesini engellemez. Bu tür kilit yalnızca depolama hesabının silinmesini veya değiştirilmesini önler ve bu depolama hesabı içindeki blob, kuyruk, tablo veya dosya verilerini korumaz.

  • App Service bir kaynaktaki salt okuma kilidi, etkileşim yazma erişimi gerektirdiğinden Visual Studio Sunucu Gezgini kaynak için dosya görüntülemesini engeller.

  • Bir App Service planı içeren bir kaynak grubundaki salt okunurdur bir kilit , planı ölçeklendirmeden veya bir şekilde ölçeklendirmanızaengel olur.

  • Bir sanal makine içeren bir kaynak grubundaki salt okunurdur bir kilit, tüm kullanıcıların sanal makineyi başlatmasını veya yeniden başlatmasını önler. Bu işlemler bir POST isteği gerektirir.

  • Otomasyon hesabı içeren bir kaynak grubunda salt okuma kilidi, tüm runbook 'ların başlamasını engeller. Bu işlemler bir POST isteği gerektirir.

  • Bir kaynak grubundaki bir Delete kilidi, Azure Resource Manager otomatik olarak geçmiş dağıtımlar silmesini engeller. Geçmişte 800 dağıtıma ulaşırsanız, dağıtımlarınız başarısız olur.

  • Azure Backup hizmeti tarafından oluşturulan kaynak grubundaki bir Delete kilidi, yedeklemelerin başarısız olmasına neden olur. Hizmet en fazla 18 geri yükleme noktasını destekler. Kilitlendiğinde, yedekleme hizmeti geri yükleme noktalarını temizleyemiyor. Daha fazla bilgi için bkz. sık sorulan sorular-Azure sanal makinelerini yedekleme.

  • bir kaynak grubundaki delete kilidi, Azure Machine Learning işlem kümelerinin kullanılmayan düğümleri kaldırmasını Azure Machine Learning engeller.

  • Bir abonelikte salt okunurdur bir kilit Azure Advisor 'ın düzgün çalışmasını engeller. Danışman, sorgularının sonuçlarını depolayamadı.

  • Application Gateway bir salt okuma kilidi, uygulama ağ geçidinin arka uç durumunu almanızı önler. Bu işlemsalt okuma kilidi tarafından engellenen Post 'u kullanır.

  • Aks kümesindeki salt okunurdur bir kilit, tüm kullanıcıların, Azure Portal aks kümesi sol tarafı dikey penceresinin Kubernetes kaynakları bölümünden herhangi bir küme kaynağına erişmesini önler. Bu işlemler, kimlik doğrulaması için bir POST isteği gerektirir.

Who, kilitleri oluşturabilir veya silebilir

Yönetim kilitleri oluşturmak veya silmek için, veya eylemlere erişiminizin olması gerekir Microsoft.Authorization/* Microsoft.Authorization/locks/* . Yerleşik rollerden yalnızca Sahip ve Kullanııcı Erişiimi Yöneticisi bu eylemleri kullanabilir.

Yönetilen Uygulamalar ve kilitler

Azure Databricks gibi bazı Azure Hizmetleri, hizmeti uygulamak için yönetilen uygulamalar kullanır. Bu durumda, hizmet iki kaynak grubu oluşturur. Bir kaynak grubu, hizmete genel bir bakış içerir ve kilitlenmez. Diğer kaynak grubu, hizmet altyapısını içerir ve kilitlidir.

Altyapı kaynak grubunu silmeye çalışırsanız, kaynak grubunun kilitli olduğunu belirten bir hata alırsınız. Altyapı kaynak grubu için kilidi silmeye çalışırsanız, kilidin bir sistem uygulamasına ait olduğundan, kilitlenmekte olduğunu belirten bir hata alırsınız.

Bunun yerine, altyapı kaynak grubunu da silen hizmeti silin.

Yönetilen uygulamalar için, dağıttığınız hizmeti seçin.

Hizmet seçin

Hizmetin yönetilen kaynak grubu için bir bağlantı içerdiğine dikkat edin. Bu kaynak grubu altyapıyı barındırır ve kilitlidir. Doğrudan silinemez.

Yönetilen grubu göster

Kilitli altyapı kaynak grubu dahil olmak üzere hizmetin her şeyi silmek için, hizmet için Sil ' i seçin.

Hizmeti Sil

Kilitleri yapılandırma

Portal

  1. Kilitlemek istediğiniz kaynağın, kaynak grubunun veya aboneliğin Ayarlar dikey penceresinde Kilitler'i seçin.

    Kilitle ' yi seçin.

  2. Kilit eklemek için Ekle'yi seçin. Üst düzeyde bir kilit oluşturmak istiyorsanız üst öğeyi seçin. Şu anda seçili olan kaynak kilidi üst öğeden devralır. Örneğin, tüm kaynaklarına bir kilit uygulamak için kaynak grubunu kilitlemeniz gerekebilir.

    Kilit ekleyin.

  3. Kilit için bir ad ve kilit düzeyi verin. İsteğe bağlı olarak kilidi açıklayan notlar ekleyebilirsiniz.

    Kilidi ayarla.

  4. Kilidi silmek için Sil düğmesini seçin.

    Kilidi Sil.

Şablon

Bir kilit dağıtmak için bir Azure Resource Manager şablonu (ARM şablonu) veya Bıcep dosyası kullanırken, kilidin kapsamını ve dağıtımın kapsamını bilmeniz gerekir. Bir kaynak grubunu veya aboneliği kilitlemek gibi dağıtım kapsamında bir kilit uygulamak için kapsam özelliğini ayarlayın. Dağıtım kapsamındaki bir kaynağı kilitlerken Scope özelliğini ayarlayın.

Aşağıdaki şablon, dağıtıldığı kaynak grubuna bir kilit uygular. Kilit kapsamı, dağıtımın kapsamıyla eşleştiğinden kilit kaynağında bir Scope özelliği olmadığına dikkat edin. Bu şablon, kaynak grubu düzeyinde dağıtılır.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/locks",
      "apiVersion": "2016-09-01",
      "name": "rgLock",
      "properties": {
        "level": "CanNotDelete",
        "notes": "Resource group should not be deleted."
      }
    }
  ]
}

Bir kaynak grubu oluşturmak ve kilitlemek için, abonelik düzeyinde aşağıdaki şablonu dağıtın.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "rgName": {
      "type": "string"
    },
    "rgLocation": {
      "type": "string"
    }
  },
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2021-04-01",
      "name": "[parameters('rgName')]",
      "location": "[parameters('rgLocation')]",
      "properties": {}
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2021-04-01",
      "name": "lockDeployment",
      "resourceGroup": "[parameters('rgName')]",
      "dependsOn": [
        "[resourceId('Microsoft.Resources/resourceGroups/', parameters('rgName'))]"
      ],
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {},
          "variables": {},
          "resources": [
            {
              "type": "Microsoft.Authorization/locks",
              "apiVersion": "2016-09-01",
              "name": "rgLock",
              "properties": {
                "level": "CanNotDelete",
                "notes": "Resource group and its resources should not be deleted."
              }
            }
          ],
          "outputs": {}
        }
      }
    }
  ],
  "outputs": {}
}

Kaynak grubu içindeki bir kaynağa kilit uygularken kapsam özelliğini ekleyin. Kapsamı, kilitlen kaynağın adına ayarlayın.

Aşağıdaki örnekte app service planı, web sitesi ve web sitesinde kilit oluşturan bir şablon yer amektedir. Kilidin kapsamı web sitesine ayarlanır.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "hostingPlanName": {
      "type": "string"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "variables": {
    "siteName": "[concat('ExampleSite', uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2020-12-01",
      "name": "[parameters('hostingPlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "tier": "Free",
        "name": "f1",
        "capacity": 0
      },
      "properties": {
        "targetWorkerCount": 1
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2020-12-01",
      "name": "[variables('siteName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]"
      ],
      "properties": {
        "serverFarmId": "[parameters('hostingPlanName')]"
      }
    },
    {
      "type": "Microsoft.Authorization/locks",
      "apiVersion": "2016-09-01",
      "name": "siteLock",
      "scope": "[concat('Microsoft.Web/sites/', variables('siteName'))]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('siteName'))]"
      ],
      "properties": {
        "level": "CanNotDelete",
        "notes": "Site should not be deleted."
      }
    }
  ]
}

Azure PowerShell

Dağıtılan kaynakları New-AzResourceLock Azure PowerShell ile kilitlersiniz.

Bir kaynağı kilitlemek için kaynağın adını, kaynak türünü ve kaynak grubu adını girin.

New-AzResourceLock -LockLevel CanNotDelete -LockName LockSite -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup

Bir kaynak grubunu kilitlemek için kaynak grubunun adını girin.

New-AzResourceLock -LockName LockGroup -LockLevel CanNotDelete -ResourceGroupName exampleresourcegroup

Kilit hakkında bilgi almak için Get-AzResourceLock kullanın. Aboneliğinizin tüm kilitlerini almak için şunları kullanın:

Get-AzResourceLock

Bir kaynağın tüm kilitlerini almak için şunları kullanın:

Get-AzResourceLock -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup

Bir kaynak grubunun tüm kilitlerini almak için şunları kullanın:

Get-AzResourceLock -ResourceGroupName exampleresourcegroup

Bir kaynağın kilidini silmek için şunları kullanın:

$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup -ResourceName examplesite -ResourceType Microsoft.Web/sites).LockId
Remove-AzResourceLock -LockId $lockId

Kaynak grubunun kilidini silmek için şunları kullanın:

$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup).LockId
Remove-AzResourceLock -LockId $lockId

Azure CLI

Dağıtılan kaynakları Azure CLI ile az lock create komutunu kullanarak kilitlersiniz.

Bir kaynağı kilitlemek için kaynağın adını, kaynak türünü ve kaynak grubu adını girin.

az lock create --name LockSite --lock-type CanNotDelete --resource-group exampleresourcegroup --resource-name examplesite --resource-type Microsoft.Web/sites

Bir kaynak grubunu kilitlemek için kaynak grubunun adını girin.

az lock create --name LockGroup --lock-type CanNotDelete --resource-group exampleresourcegroup

Kilit hakkında bilgi almak için az lock list kullanın. Aboneliğinizin tüm kilitlerini almak için şunları kullanın:

az lock list

Bir kaynağın tüm kilitlerini almak için şunları kullanın:

az lock list --resource-group exampleresourcegroup --resource-name examplesite --namespace Microsoft.Web --resource-type sites --parent ""

Bir kaynak grubunun tüm kilitlerini almak için şunları kullanın:

az lock list --resource-group exampleresourcegroup

Bir kaynağın kilidini silmek için şunları kullanın:

lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup --resource-type Microsoft.Web/sites --resource-name examplesite --output tsv --query id)
az lock delete --ids $lockid

Kaynak grubunun kilidini silmek için şunları kullanın:

lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup  --output tsv --query id)
az lock delete --ids $lockid

REST API

Dağıtılan kaynakları yönetim kilitleri için REST API ile kilit edebilirsiniz. Bu REST API kilitleri oluşturmanızı, silmenizi ve mevcut kilitler hakkında bilgi alamanızı sağlar.

Kilit oluşturmak için şu çalıştırın:

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/locks/{lock-name}?api-version={api-version}

Kapsam bir abonelik, kaynak grubu veya kaynak olabilir. Kilit adı, kilidi ne olursa olsun olarak çağırmayı ister. API sürümü için 2016-09-01 kullanın.

İstekte, kilidin özelliklerini belirten bir JSON nesnesi içerir.

{
  "properties": {
  "level": "CanNotDelete",
  "notes": "Optional text notes."
  }
}

Sonraki adımlar