Blokowanie zasobów w celu ochrony infrastruktury

Jako administrator możesz zablokować subskrypcję platformy Azure, grupę zasobów lub zasób, aby chronić je przed przypadkowymi usunięciami i modyfikacjami użytkowników. Blokada przesłania wszystkie uprawnienia użytkownika.

Możesz ustawiać blokady, które zapobiegają usunięciom lub modyfikacjom. W portalu te blokady są nazywane usuwaniem i tylko do odczytu. W wierszu polecenia te blokady mają nazwy CanNotDelete i ReadOnly.

  • CanNotDelete oznacza, że użytkownicy autoryzowani mogą odczytywać i modyfikować zasób, ale nie mogą go usunąć.
  • ReadOnly oznacza, że autoryzowani użytkownicy mogą odczytywać zasób, ale nie mogą go usunąć ani zaktualizować. Zastosowanie tej blokady jest podobne do ograniczenia wszystkich autoryzowanych użytkowników do uprawnień zapewnianych przez rolę Czytelnik .

W przeciwieństwie do kontroli dostępu opartej na rolach (RBAC) blokady zarządzania są stosowane w celu zastosowania ograniczeń dla wszystkich użytkowników i ról. Aby dowiedzieć się więcej o ustawianiu uprawnień dla użytkowników i ról, zobacz Kontrola dostępu oparta na rolach platformy Azure.

Blokowanie dziedziczenia

Po zastosowaniu blokady w zakresie nadrzędnym wszystkie zasoby w tym zakresie dziedziczą tę samą blokadę. Nawet dodane później zasoby dziedziczą tę samą blokadę nadrzędną. Najbardziej restrykcyjna blokada w dziedziczeniu ma pierwszeństwo.

Zasoby rozszerzenia dziedziczą blokady z zasobu, do którego są stosowane. Na przykład firma Microsoft. Szczegółowe informacje/diagnostyka Ustawienia jest typem zasobu rozszerzenia. Jeśli zastosujesz ustawienie diagnostyczne do obiektu blob magazynu i zablokujesz konto magazynu, nie możesz usunąć ustawienia diagnostycznego. To dziedziczenie ma sens, ponieważ pełny identyfikator zasobu ustawienia diagnostycznego to:

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

Który odpowiada zakresowi identyfikatora zasobu zablokowanego zasobu:

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

Jeśli masz blokadę Usuń dla zasobu i spróbujesz usunąć grupę zasobów, funkcja blokuje całą operację usuwania. Nawet jeśli grupa zasobów lub inne zasoby w grupie zasobów zostaną odblokowane, usunięcie nie nastąpi. Nigdy nie masz częściowego usunięcia.

Po anulowaniu subskrypcji platformy Azure:

  • Blokada zasobu nie blokuje anulowania subskrypcji.
  • Platforma Azure zachowuje zasoby, dezaktywując je zamiast natychmiast je usuwać.
  • Platforma Azure usuwa zasoby tylko trwale po okresie oczekiwania.

Omówienie zakresu blokad

Uwaga

Blokady dotyczą tylko operacji płaszczyzny sterowania platformy Azure, a nie operacji płaszczyzny danych.

Operacje płaszczyzny sterowania platformy Azure przejdź do strony https://management.azure.com. Operacje płaszczyzny danych platformy Azure przechodzą do wystąpienia usługi, takiego jak https://myaccount.blob.core.windows.net/. Zobacz Płaszczyzna sterowania i płaszczyzna danych platformy Azure. Aby dowiedzieć się, które operacje używają adresu URL płaszczyzny sterowania, zobacz interfejs API REST platformy Azure.

Rozróżnienie oznacza, że blokady chronią zasób przed zmianami, ale nie ograniczają sposobu działania zasobu. Blokada ReadOnly, na przykład na serwerze logicznym usługi SQL Database, chroni ją przed usunięciem lub modyfikacjami. Umożliwia tworzenie, aktualizowanie lub usuwanie danych w bazie danych serwera. Operacje płaszczyzny danych umożliwiają transakcje danych. Te żądania nie przechodzą do strony https://management.azure.com.

Zagadnienia dotyczące stosowania blokad

Stosowanie blokad może prowadzić do nieoczekiwanych wyników. Niektóre operacje, które nie wydają się modyfikować zasobu, wymagają zablokowanych akcji. Blokady uniemożliwiają metodę POST wysyłanie danych do interfejsu API usługi Azure Resource Manager (ARM). Oto kilka typowych przykładów zablokowanych operacji:

  • Blokada tylko do odczytu na koncie magazynu uniemożliwia użytkownikom wyświetlanie listy kluczy konta. Żądanie POST obsługuje operację Klucze listy usługi Azure Storage w celu ochrony dostępu do kluczy konta. Klucze konta zapewniają pełny dostęp do danych na koncie magazynu. Po skonfigurowaniu blokady tylko do odczytu dla konta magazynu użytkownicy, którzy nie mają kluczy konta, muszą używać poświadczeń usługi Microsoft Entra w celu uzyskania dostępu do danych obiektów blob lub kolejek. Blokada tylko do odczytu uniemożliwia również przypisanie ról RBAC platformy Azure, które są ograniczone do konta magazynu lub do kontenera danych (kontener obiektów blob lub kolejki).

  • Blokada tylko do odczytu na koncie magazynu chroni przypisania RBAC w zakresie konta magazynu lub kontenera danych (kontener obiektów blob lub kolejki).

  • Blokada tylko do odczytu na koncie magazynu uniemożliwia utworzenie kontenera obiektów blob.

  • Blokada tylko do odczytu lub nie można usunąć blokady na koncie magazynu nie uniemożliwia usunięcia ani modyfikacji danych. Nie chroni również danych w obiekcie blob, kolejce, tabeli ani pliku.

  • Interfejs API konta magazynu uwidacznia operacje płaszczyzny danych i płaszczyzny sterowania. Jeśli żądanie używa operacji płaszczyzny danych, blokada na koncie magazynu nie chroni obiektów blob, kolejek, tabel ani danych plików na tym koncie magazynu. Jeśli jednak żądanie używa operacji płaszczyzny sterowania, blokada chroni te zasoby.

    Jeśli na przykład żądanie używa udziałów plików — usuń, czyli operacji płaszczyzny sterowania, usunięcie zakończy się niepowodzeniem. Jeśli żądanie używa operacji Usuń udział, czyli operacji płaszczyzny danych, usunięcie zakończy się pomyślnie. Zalecamy użycie operacji płaszczyzny sterowania.

  • Blokada tylko do odczytu w sieciowej grupie zabezpieczeń uniemożliwia utworzenie odpowiedniego dziennika przepływu sieciowej grupy zabezpieczeń . Blokada nie można usunąć w sieciowej grupie zabezpieczeń nie uniemożliwia tworzenia ani modyfikowania odpowiedniego dziennika przepływu sieciowej grupy zabezpieczeń .

  • Blokada tylko do odczytu w zasobie usługi App Service uniemożliwia eksploratorowi programu Visual Studio Server wyświetlanie plików dla zasobu, ponieważ ta interakcja wymaga dostępu do zapisu.

  • Blokada tylko do odczytu w grupie zasobów, która zawiera plan usługi App Service, uniemożliwia skalowanie w górę lub poza planem.

  • Blokada tylko do odczytu w grupie zasobów, która zawiera maszynę wirtualną, uniemożliwia wszystkim użytkownikom uruchamianie lub ponowne uruchamianie maszyny wirtualnej. Te operacje wymagają żądania metody POST.

  • Blokada tylko do odczytu w grupie zasobów uniemożliwia przenoszenie istniejących zasobów do lub z grupy zasobów.

  • Blokada tylko do odczytu w grupie zasobów, która zawiera konto usługi Automation, uniemożliwia uruchamianie wszystkich elementów Runbook. Te operacje wymagają żądania metody POST.

  • Blokada nie można usunąć zasobu lub grupy zasobów uniemożliwia usunięcie przypisań RBAC platformy Azure.

  • Blokada nie można usunąć w grupie zasobów uniemożliwia usłudze Azure Resource Manager automatyczne usuwanie wdrożeń w historii. Jeśli osiągniesz 800 wdrożeń w historii, wdrożenia kończą się niepowodzeniem.

  • Nie można usunąć blokady w grupie zasobów utworzonej przez usługę Azure Backup, co powoduje niepowodzenie tworzenia kopii zapasowych. Usługa obsługuje maksymalnie 18 punktów przywracania. Po zablokowaniu usługa kopii zapasowej nie może wyczyścić punktów przywracania. Aby uzyskać więcej informacji, zobacz Często zadawane pytania — tworzenie kopii zapasowych maszyn wirtualnych platformy Azure.

  • Blokada nie może zostać usunięta w grupie zasobów zawierającej obszary robocze usługi Azure Machine Edukacja uniemożliwia poprawne działanie automatycznego skalowania klastrów obliczeniowych usługi Azure Machine Edukacja. Dzięki blokadzie skalowanie automatyczne nie może usunąć nieużywanych węzłów. Rozwiązanie zużywa więcej zasobów niż są wymagane dla obciążenia.

  • Blokada tylko do odczytu w obszarze roboczym usługi Log Analytics uniemożliwia włączanie analizy zachowań użytkowników i jednostek (UEBA).

  • Blokada nie można usunąć w obszarze roboczym usługi Log Analytics nie zapobiega operacjom przeczyszczania danych, usuwa zamiast tego rolę przeczyszczania danych z użytkownika.

  • Blokada tylko do odczytu w subskrypcji uniemożliwia poprawne działanie usługi Azure Advisor . Usługa Advisor nie może przechowywać wyników zapytań.

  • Blokada tylko do odczytu w usłudze Application Gateway uniemożliwia uzyskanie kondycji zaplecza bramy aplikacji. Ta operacja używa metody POST, która blokuje tylko do odczytu.

  • Blokada tylko do odczytu w klastrze usługi Azure Kubernetes Service (AKS) ogranicza dostęp do zasobów klastra za pośrednictwem portalu. Blokada tylko do odczytu uniemożliwia korzystanie z sekcji zasobów Kubernetes klastra AKS w witrynie Azure Portal w celu wybrania zasobu klastra. Te operacje wymagają żądania metody POST na potrzeby uwierzytelniania.

  • Blokada nie można usunąć na maszynie wirtualnej chronionej przez usługę Site Recovery uniemożliwia prawidłowe usunięcie niektórych łączy zasobów związanych z usługą Site Recovery po usunięciu ochrony lub wyłączeniu replikacji. Jeśli planujesz ponownie chronić maszynę wirtualną później, musisz usunąć blokadę przed wyłączeniem ochrony. Jeśli blokada nie zostanie usunięta, musisz wykonać pewne kroki, aby wyczyścić nieaktualne linki, zanim będzie można chronić maszynę wirtualną. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z replikacją maszyny wirtualnej platformy Azure.

KtoTo może tworzyć lub usuwać blokady

Aby móc tworzyć lub usuwać blokady zarządzania, musisz mieć dostęp do działań Microsoft.Authorization/* lub Microsoft.Authorization/locks/*. Tylko role wbudowane właściciela i dostępu użytkowników Administracja istrator mogą tworzyć i usuwać blokady zarządzania. Możesz utworzyć rolę niestandardową z wymaganymi uprawnieniami.

Aplikacje zarządzane i blokady

Niektóre usługi platformy Azure, takie jak Azure Databricks, używają aplikacji zarządzanych do implementowania usługi. W takim przypadku usługa tworzy dwie grupy zasobów. Jedną z nich jest odblokowana grupa zasobów zawierająca przegląd usługi. Druga to zablokowana grupa zasobów zawierająca infrastrukturę usługi.

Jeśli spróbujesz usunąć grupę zasobów infrastruktury, zostanie wyświetlony błąd informujący, że grupa zasobów jest zablokowana. Jeśli spróbujesz usunąć blokadę dla grupy zasobów infrastruktury, zostanie wyświetlony błąd informujący, że nie można usunąć blokady, ponieważ aplikacja systemowa jest jej właścicielem.

Zamiast tego usuń usługę, która również usuwa grupę zasobów infrastruktury.

W przypadku aplikacji zarządzanych wybierz wdrożoną usługę.

Screenshot of the Azure portal with an instance of Azure Databricks selected.

Zwróć uwagę, że usługa zawiera link dla zarządzanej grupy zasobów. Ta grupa zasobów przechowuje infrastrukturę i jest zablokowana. Można je usunąć tylko pośrednio.

Screenshot displaying the Managed Resource Group link in the Azure portal.

Aby usunąć wszystkie elementy usługi, w tym zablokowaną grupę zasobów infrastruktury, wybierz pozycję Usuń dla usługi.

Screenshot of the Azure portal with the Delete option for the selected service.

Konfigurowanie blokad

Portal

W panelu nawigacyjnym po lewej stronie nazwa funkcji blokady subskrypcji to Blokady zasobów, a nazwa funkcji blokady grupy zasobów to Blokady.

  1. W bloku Ustawienia dla zasobu, grupy zasobów lub subskrypcji do zablokowania wybierz pozycję Blokady.

    Select lock.

  2. Aby dodać blokadę, wybierz pozycję Dodaj. Jeśli chcesz utworzyć blokadę na poziomie nadrzędnym, wybierz element nadrzędny. Aktualnie wybrany zasób dziedziczy blokadę z elementu nadrzędnego. Możesz na przykład zablokować grupę zasobów, aby zastosować blokadę do wszystkich jej zasobów.

    Add lock.

  3. Nadaj blokadzie nazwę i poziom blokady. Opcjonalnie możesz dodać notatki opisujące blokadę.

    Set lock.

  4. Aby usunąć blokadę, wybierz przycisk Usuń.

    Delete lock.

Template

W przypadku korzystania z szablonu usługi ARM lub pliku Bicep w celu wdrożenia blokady warto zrozumieć, jak zakres wdrożenia i zakres blokady współpracują ze sobą. Aby zastosować blokadę w zakresie wdrożenia, takim jak blokowanie grupy zasobów lub subskrypcji, pozostaw właściwość zakresu niezastawioną. Podczas blokowania zasobu w zakresie wdrażania ustaw właściwość zakresu na blokadzie.

Poniższy szablon stosuje blokadę do grupy zasobów, do których jest wdrożona. Zwróć uwagę, że w zasobie blokady nie ma właściwości zakresu, ponieważ zakres blokady jest zgodny z zakresem wdrożenia. Wdróż ten szablon na poziomie grupy zasobów.

{
  "$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."
      }
    }
  ]
}

Aby utworzyć grupę zasobów i ją zablokować, wdróż następujący szablon na poziomie subskrypcji.

{
  "$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": {}
}

Podczas stosowania blokady do zasobu w grupie zasobów dodaj właściwość zakresu. Ustaw zakres na nazwę zasobu, aby zablokować.

Poniższy przykład przedstawia szablon, który tworzy plan usługi App Service, witrynę internetową i blokadę w witrynie internetowej. Zakres blokady jest ustawiony na witrynę internetową.

{
  "$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

Wdrożone zasoby są blokowane za pomocą programu Azure PowerShell przy użyciu polecenia New-AzResourceLock .

Aby zablokować zasób, podaj nazwę zasobu, jego typ zasobu i nazwę grupy zasobów.

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

Aby zablokować grupę zasobów, podaj nazwę grupy zasobów.

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

Aby uzyskać informacje o blokadzie, użyj polecenia Get-AzResourceLock. Aby uzyskać wszystkie blokady w subskrypcji, użyj:

Get-AzResourceLock

Aby uzyskać wszystkie blokady zasobu, użyj:

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

Aby uzyskać wszystkie blokady dla grupy zasobów, użyj:

Get-AzResourceLock -ResourceGroupName exampleresourcegroup

Aby usunąć blokadę zasobu, użyj:

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

Aby usunąć blokadę dla grupy zasobów, użyj:

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

Interfejs wiersza polecenia platformy Azure

Wdrożone zasoby są blokowane za pomocą interfejsu wiersza polecenia platformy Azure przy użyciu polecenia az lock create .

Aby zablokować zasób, podaj nazwę zasobu, jego typ zasobu i nazwę grupy zasobów.

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

Aby zablokować grupę zasobów, podaj nazwę grupy zasobów.

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

Aby uzyskać informacje o blokadzie, użyj polecenia az lock list. Aby uzyskać wszystkie blokady w subskrypcji, użyj:

az lock list

Aby uzyskać wszystkie blokady zasobu, użyj:

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

Aby uzyskać wszystkie blokady dla grupy zasobów, użyj:

az lock list --resource-group exampleresourcegroup

Aby usunąć blokadę zasobu, użyj:

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

Aby usunąć blokadę dla grupy zasobów, użyj:

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

Python

Wdrożone zasoby są blokowane przy użyciu języka Python przy użyciu polecenia ManagementLockClient.management_locks.create_or_update_at_resource_group_level .

Aby zablokować zasób, podaj nazwę zasobu, jego typ zasobu i nazwę grupy zasobów.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.create_or_update_at_resource_level(
    "exampleGroup",
    "Microsoft.Web",
    "",
    "sites",
    "examplesite",
    "lockSite",
    {
        "level": "CanNotDelete"
    }
)

Aby zablokować grupę zasobów, podaj nazwę grupy zasobów.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.create_or_update_at_resource_group_level(
    "exampleGroup",
    "lockGroup",
    {
        "level": "CanNotDelete"
    }
)

Aby uzyskać informacje o wszystkich blokadach w subskrypcji, użyj polecenia ManagementLockClient.management_locks.get. Aby uzyskać wszystkie blokady w subskrypcji, użyj:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.list_at_subscription_level()

for lock in lock_result:
    print(f"Lock name: {lock.name}")
    print(f"Lock level: {lock.level}")
    print(f"Lock notes: {lock.notes}")

Aby uzyskać blokadę zasobu, użyj:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.get_at_resource_level(
    "exampleGroup",
    "Microsoft.Web",
    "",
    "sites",
    "examplesite",
    "lockSite"
)

print(f"Lock ID: {lock_result.id}")
print(f"Lock Name: {lock_result.name}")
print(f"Lock Level: {lock_result.level}")

Aby uzyskać blokadę dla grupy zasobów, użyj:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.get_at_resource_group_level(
    "exampleGroup",
    "lockGroup"
)

print(f"Lock ID: {lock_result.id}")
print(f"Lock Level: {lock_result.level}")

Aby usunąć blokadę zasobu, użyj:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_client.management_locks.delete_at_resource_level(
    "exampleGroup",
    "Microsoft.Web",
    "",
    "sites",
    "examplesite",
    "lockSite"
)

Aby usunąć blokadę dla grupy zasobów, użyj:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_client.management_locks.delete_at_resource_group_level("exampleGroup", "lockGroup")

Interfejs API REST

Wdrożone zasoby można zablokować za pomocą interfejsu API REST dla blokad zarządzania. Interfejs API REST umożliwia tworzenie i usuwanie blokad oraz pobieranie informacji o istniejących blokadach.

Aby utworzyć blokadę, uruchom polecenie:

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

Zakres może być subskrypcją, grupą zasobów lub zasobem. Nazwa blokady może być dowolna, którą chcesz wywołać. W przypadku wersji interfejsu API użyj 2016-09-01.

W żądaniu dołącz obiekt JSON określający właściwości blokady.

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

Następne kroki