Altyapınızı korumak için kaynaklarınızı kilitleyin

Yönetici olarak, bir Azure aboneliğini, kaynak grubunu veya kaynağı yanlışlıkla kullanıcı silme ve değişikliklerinden korumak için kilitleyebilirsiniz. Kilit, tüm kullanıcı izinlerini geçersiz kılar.

Silmeleri veya değişiklikleri önleyen kilitler ayarlayabilirsiniz. Portalda bu kilitler Delete ve Read-only olarak adlandırılır. Komut satırında, bu kilitler CanNotDelete ve ReadOnly olarak adlandırılır.

  • CanNotDelete, yetkili kullanıcıların bir kaynağı okuyup değiştirebileceği ancak silemeyeceği anlamına gelir.
  • ReadOnly, yetkili kullanıcıların bir kaynağı okuyabileceği ancak silemeyeceği ve güncelleştiremeyeceği anlamına gelir. Bu kilidi uygulamak, tüm yetkili kullanıcıları Okuyucu rolünün sağladığı izinlerle kısıtlamaya benzer.

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

Devralmayı kilitle

Bir üst kapsama kilit uyguladığınızda, bu kapsamdaki tüm kaynaklar aynı kilidi devralır. Daha sonra eklediğiniz kaynaklar bile aynı üst kilidi devralır. Devralmadaki en kısıtlayıcı kilit önceliklidir.

Uzantı kaynakları , kilitleri uygulandıkları kaynaktan devralır. Örneğin, Microsoft.Insights/diagnosticSettings bir uzantı kaynak türüdür. Bir depolama blobuna tanılama ayarı uygular ve depolama hesabını kilitlerseniz tanılama ayarını silemezsiniz. Tanılama ayarının tam kaynak kimliği şu olduğundan bu devralma mantıklıdır:

/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-name}/blobServices/default/providers/microsoft.insights/diagnosticSettings/{setting-name}"

Bu, kilitli kaynağın kaynak kimliğinin kapsamıyla eşleşir:

/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-name}

Bir kaynakta Delete kilidi varsa ve kaynak grubunu silmeye çalışırsanız, özellik silme işleminin tamamını engeller. Kaynak grubunun veya kaynak grubundaki diğer kaynakların kilidi açık olsa bile silme işlemi gerçekleşmez. Hiçbir zaman kısmi silme işleminiz olmaz.

Bir Azure aboneliğini iptal ettiğinizde:

  • Kaynak kilidi abonelik iptalini engellemez.
  • Azure, kaynaklarınızı hemen silmek yerine devre dışı bırakarak korur.
  • Azure, kaynaklarınızı yalnızca bir bekleme süresi sonunda kalıcı olarak siler.

Kilitlerin kapsamını anlama

Not

Kilitler yalnızca denetim düzlemi Azure işlemleri için geçerlidir, veri düzlemi işlemleri için geçerli değildir.

Azure denetim düzlemi işlemleri adresine https://management.azure.comgider. Azure veri düzlemi işlemleri gibi https://myaccount.blob.core.windows.net/hizmet örneğinize gider. Bkz. Azure denetim düzlemi ve veri düzlemi. Hangi işlemlerin denetim düzlemi URL'sini kullandığını bulmak için bkz. Azure REST API.

Ayrım, kilitlerin bir kaynağı değişikliklerden koruduğu, ancak bir kaynağın işlevlerini nasıl gerçekleştireceklerini kısıtlamadıkları anlamına gelir. Örneğin, SQL Veritabanı bir mantıksal sunucuda ReadOnly kilidi, onu silme veya değişikliklerden korur. Sunucu veritabanında veri oluşturmanıza, güncelleştirmenize veya silmenize olanak tanır. Veri düzlemi işlemleri, veri işlemlerine izin verir. Bu istekler adresine https://management.azure.comgitmez.

Kilitlerinizi uygulamadan önce dikkat edilmesi gerekenler

Kilitlerin uygulanması beklenmeyen sonuçlara yol açabilir. Bir kaynağı değiştirmiyor gibi görünen bazı işlemler için engellenen eylemler gerekir. Kilitler POST yönteminin Azure Resource Manager (ARM) API'sine veri göndermesini engeller. Engellenen işlemlere bazı yaygın örnekler şunlardır:

  • Depolama hesabındaki salt okunur kilit, kullanıcıların hesap anahtarlarını listelemesini engeller. POST isteği, hesap anahtarlarına erişimi korumak için Azure Depolama Listesi Anahtarları işlemini işler. Hesap anahtarları, depolama hesabındaki verilere tam erişim sağlar. Depolama hesabı için salt okunur bir kilit yapılandırıldığında, hesap anahtarları olmayan kullanıcıların blob veya kuyruk verilerine erişmek için Azure AD kimlik bilgilerini kullanması gerekir. Salt okunur kilit, kapsamı depolama hesabı veya veri kapsayıcısı (blob kapsayıcısı veya kuyruk) olan Azure RBAC rollerinin atanmasını da engeller.

  • Depolama hesabındaki salt okunur kilit, depolama hesabı veya veri kapsayıcısı (blob kapsayıcısı veya kuyruk) için kapsamı belirlenmiş RBAC atamalarını korur.

  • Depolama hesabındaki salt okunur kilit, blob kapsayıcısının oluşturulmasını engeller.

  • Depolama hesabındaki salt okunur veya silinemeyen kilit, verilerinin silinmesini veya değiştirilmesini engellemez. Ayrıca blob, kuyruk, tablo veya dosyadaki verileri korumaz.

  • Depolama Hesabı API'si , veri düzlemi ve denetim düzlemi işlemlerini kullanıma sunar. bir istek veri düzlemi işlemlerini kullanıyorsa, depolama hesabındaki kilit bu depolama hesabındaki blob, kuyruk, tablo veya dosya verilerini korumaz. Ancak istek denetim düzlemi işlemlerini kullanıyorsa kilit bu kaynakları korur.

    Örneğin, bir istek bir denetim düzlemi işlemi olan Dosya Paylaşımları - Silme'yi kullanıyorsa silme işlemi başarısız olur. İstek bir veri düzlemi işlemi olan Paylaşımı Sil'i kullanıyorsa silme işlemi başarılı olur. Kontrol düzlemi işlemi kullanmanızı öneririz.

  • bir App Service kaynağındaki salt okunur kilit, etkileşim yazma erişimi gerektirdiğinden Visual Studio Server Gezgini'nin kaynak dosyalarını görüntülemesini engeller.

  • App Service planı içeren bir kaynak grubundaki salt okunur kilit, planın ölçeğini artırmanızı veya genişletmenizi engeller.

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

  • Otomasyon hesabı içeren bir kaynak grubundaki salt okunur kilit, tüm runbook'ların başlatılmasını engeller. Bu işlemler bir POST yöntemi isteği gerektirir.

  • Bir kaynak grubundaki silinemiyor kilidi, Azure Resource Manager'ın geçmişteki dağıtımları otomatik olarak 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 kilit silinemiyor, yedeklemelerin başarısız olmasına neden oluyor. Hizmet en fazla 18 geri yükleme noktası destekler. Yedekleme hizmeti kilitli olduğunda geri yükleme noktalarını temizleyemez. Daha fazla bilgi için bkz. Sık sorulan sorular-Azure VM'lerini yedekleme.

  • Azure Machine Learning çalışma alanlarını içeren bir kaynak grubundaki kilit silinemiyor, Azure Machine Learning işlem kümelerinin otomatik ölçeklendirmesinin düzgün çalışmasını engeller. Kilitle, otomatik ölçeklendirme kullanılmayan düğümleri kaldıramaz. Çözümünüz, iş yükü için gerekenden daha fazla kaynak kullanıyor.

  • Log Analytics çalışma alanındaki salt okunur kilit, Kullanıcı ve Varlık Davranış Analizi'nin (UEBA) etkinleştirilmesini engeller.

  • Log Analytics çalışma alanında silinemez kilidi, veri temizleme işlemlerini engellemez, bunun yerine kullanıcıdan veri temizleme rolünü kaldırın.

  • Abonelikte salt okunur kilit, Azure Danışmanı'nın düzgün çalışmasını engeller. Danışman, sorgularının sonuçlarını depolayamıyor.

  • bir Application Gateway salt okunur kilit, uygulama ağ geçidinin arka uç durumunu almanızı engeller. Bu işlem salt okunur kilit blokları olan post yöntemini kullanır.

  • Azure Kubernetes Service (AKS) kümesindeki salt okunur kilit, portal üzerinden küme kaynaklarına nasıl erişebileceğinizi sınırlar. Salt okunur kilit, küme kaynağı seçmek için Azure portal AKS kümesinin Kubernetes kaynakları bölümünü kullanmanızı engeller. Bu işlemler kimlik doğrulaması için post yöntemi isteği gerektirir.

  • Site Recovery tarafından korunan bir Sanal Makinedeki kilit silinemiyor, korumayı kaldırdığınızda veya çoğaltmayı devre dışı bırakdığınızda Site Recovery ile ilgili bazı kaynak bağlantılarının düzgün bir şekilde kaldırılmasını önler. VM'yi daha sonra yeniden korumayı planlıyorsanız, korumayı devre dışı bırakmadan önce kilidi kaldırmanız gerekir. Kilidi kaldırmazsanız, VM'yi korumadan önce eski bağlantıları temizlemek için bazı adımları izlemeniz gerekir. Daha fazla bilgi için bkz. Azure VM çoğaltma sorunlarını giderme.

Kilitleri kim oluşturabilir veya silebilir?

Yönetim kilitlerini oluşturmak veya silmek için veya Microsoft.Authorization/locks/* eylemlerine Microsoft.Authorization/* erişmeniz gerekir. Yönetim kilitlerini yalnızca Sahip ve Kullanıcı Erişimi Yöneticisi yerleşik rolleri oluşturabilir ve silebilir. Gerekli izinlerle özel bir rol oluşturabilirsiniz.

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. Bunlardan biri, hizmete genel bakış içeren kilitli olmayan bir kaynak grubudur. Diğeri ise hizmet altyapısını içeren kilitli bir kaynak grubudur.

Altyapı kaynak grubunu silmeye çalışırsanız, kaynak grubunun kilitli olduğunu belirten bir hata alırsınız. Altyapı kaynak grubunun kilidini silmeye çalışırsanız, sistem uygulaması sahip olduğundan kilidin silinemediğini belirten bir hata alırsınız.

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

Yönetilen uygulamalar için dağıtmış olduğunuz hizmeti seçin.

Hizmet seç

Hizmetin Yönetilen Kaynak Grubu için bir bağlantı içerdiğine dikkat edin. Bu kaynak grubu altyapıyı barındırıyor ve kilitli. Yalnızca dolaylı olarak silebilirsiniz.

Yönetilen grubu göster

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

Hizmeti silme

Kilitleri yapılandırma

Portal

Sol gezinti panelinde abonelik kilidi özelliğinin adı Kaynak kilitleri, kaynak grubu kilidi özelliğinin adı ise Kilitler'dir.

  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 kilit oluşturmak istiyorsanız üst öğeyi seçin. Seçili durumdaki kaynak, kilidi üst öğeden devralır. Örneğin, tüm kaynaklarına kilit uygulamak için kaynak grubunu kilitleyebilirsiniz.

    Kilit ekle'yi seçin.

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

    Kilidi ayarlayın.

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

    Kilidi silme.

Şablon

Bir kilidi dağıtmak için ARM şablonu veya Bicep dosyası kullanırken, dağıtım kapsamıyla kilit kapsamının birlikte nasıl çalıştığını anlamak iyi olur. Bir kaynak grubunu veya aboneliği kilitleme gibi dağıtım kapsamına kilit uygulamak için kapsam özelliğinin ayarını kaldırmayı bırakın. Bir kaynağı kilitlerken, dağıtım kapsamında, kilit üzerinde kapsam özelliğini ayarlayın.

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

{
  "$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şturup 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 grubundaki bir kaynağa kilit uygularken kapsam özelliğini ekleyin. Kapsamı kilitecek kaynağın adı olarak ayarlayın.

Aşağıdaki örnekte app service planı, web sitesi ve web sitesinde kilit oluşturan bir şablon gösterilmektedir. 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

New-AzResourceLock komutunu kullanarak dağıtılan kaynakları Azure PowerShell ile kilitleyebilirsiniz.

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

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

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

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

Kilit hakkında bilgi almak için Get-AzResourceLock kullanın. Aboneliğinizdeki tüm kilitleri almak için şunu kullanın:

Get-AzResourceLock

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

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

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

Get-AzResourceLock -ResourceGroupName exampleresourcegroup

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

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

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

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

Azure CLI

Azure CLI ile dağıtılan kaynakları az lock create komutunu kullanarak kilitleyebilirsiniz .

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

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ı belirtin.

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

Kilit hakkında bilgi almak için az lock list komutunu kullanın. Aboneliğinizdeki tüm kilitleri almak için şunu kullanın:

az lock list

Bir kaynağın tüm kilitlerini almak için şunu 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 şunu kullanın:

az lock list --resource-group exampleresourcegroup

Bir kaynağın kilidini silmek için şunu 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 şunu kullanın:

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

REST API

Yönetim kilitleri için dağıtılan kaynakları REST API ile kilitleyebilirsiniz. REST API, kilit oluşturup silmenize ve mevcut kilitlerle ilgili bilgileri almanıza olanak tanır.

Kilit oluşturmak için şunu ç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ı, istediğiniz ad olabilir. API sürümü için 2016-09-01 kullanın.

İstekte, kilit özelliklerini belirten bir JSON nesnesi ekleyin.

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

Sonraki adımlar