Sperren von Ressourcen zum Schutz Ihrer Infrastruktur

Als Administrator können Sie ein Azure-Abonnement, eine Ressourcengruppe oder eine Ressource sperren, um sie vor versehentlichen Löschungen und Änderungen durch Benutzer zu schützen. Die Sperre setzt jegliche Benutzerberechtigungen außer Kraft.

Sie können Sperren festlegen, die entweder Löschungen oder Änderungen verhindern. Im Portal heißen die Sperren Löschen und Schreibgeschützt. In der Befehlszeile tragen diese Sperren die Namen CanNotDelete und ReadOnly.

  • CanNotDelete bedeutet, dass autorisierte Benutzer eine Ressource lesen und ändern, aber nicht löschen können.
  • ReadOnly bedeutet, dass autorisierte Benutzer eine Ressource zwar lesen, aber nicht löschen oder aktualisieren können. Das Anwenden einer solchen Sperre ist vergleichbar mit der Beschränkung aller autorisierten Benutzer auf die Berechtigungen, die mit der Rolle Leser bereitgestellt werden.

Im Gegensatz zur rollenbasierten Zugriffssteuerung (RBAC) verwenden Sie Verwaltungssperren, um eine Einschränkung für alle Benutzer und Rollen zu aktivieren. Informationen zum Festlegen von Benutzer- und Rollenberechtigungen finden Sie unter Azure RBAC.

Vererbung von Sperren

Wenn Sie eine Sperre in einem übergeordneten Bereich anwenden, erben alle Ressourcen in diesem Bereich die entsprechende Sperre. Selbst Ressourcen, die Sie später hinzufügen, erben die gleiche übergeordnete Sperre. Die restriktivste Sperre in der Vererbung hat Vorrang.

Erweiterungsressourcen erben Sperrungen von der Ressource, auf die sie angewendet werden. Ein Erweiterungsressourcentyp ist beispielsweise Microsoft.Insights/diagnosticSettings. Wenn Sie eine Diagnoseeinstellung auf einen Speicher-Blob anwenden und das Speicherkonto sperren, können Sie die Diagnoseeinstellung nicht löschen. Diese Vererbung ist sinnvoll, da die vollständige Ressourcen-ID der Diagnoseeinstellung wie folgt lautet:

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

Dies entspricht dem Bereich der Ressourcen-ID der gesperrten Ressource:

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

Wenn eine Löschen-Sperre für eine Ressource vorhanden ist und Sie versuchen, die zugehörige Ressourcengruppe zu löschen, blockiert die Funktion den gesamten Löschvorgang. Selbst wenn die Ressourcengruppe oder andere Ressourcen in der Ressourcengruppe entsperrt werden, wird die Löschung nicht durchgeführt. Es kommt nie zu einer Teillöschung.

Im Falle einer Kündigung eines Azure-Abonnements:

  • Eine Ressourcensperre blockiert nicht die Kündigung des Abonnements.
  • Azure behält Ihre Ressourcen bei, indem es sie deaktiviert, anstatt sie sofort zu löschen.
  • Ihre Ressourcen werden von Azure erst nach einer Wartezeit endgültig gelöscht.

Grundlegendes zum Umfang von Sperren

Hinweis

Sperren gelten nur für Vorgänge auf der Steuerungsebene von Azure und nicht für Vorgänge auf der Datenebene.

Vorgänge auf der Steuerungsebene von Azure gehen an https://management.azure.com. Vorgänge auf der Datenebene von Azure gehen an Ihre Dienstinstanz, z. B. https://myaccount.blob.core.windows.net/. Siehe Azure-Steuerungsebene und -Datenebene. Informationen dazu, welche Vorgänge die URL der Steuerungsebene verwenden, finden Sie unter Azure REST-API.

Durch diese Unterscheidung schützen Sperren eine Ressource vor Änderungen, aber sie schränken nicht ein, wie eine Ressource ihre Funktionen ausführt. So schützt z. B. eine ReadOnly-Sperre für einen logischen SQL-Datenbank-Server diesen vor Löschungen oder Änderungen. Die Sperre erlaubt Ihnen das Erstellen, Aktualisieren oder Löschen von Daten in der Serverdatenbank. Vorgänge auf der Datenebene lassen Datentransaktionen zu. Diese Anforderungen gehen nicht an https://management.azure.com.

Überlegungen vor der Anwendung von Sperren

Das Anwenden von Sperren kann zu unerwarteten Ergebnissen führen. Einige Vorgänge, bei denen eine Ressource scheinbar nicht geändert wird, erfordern blockierte Aktionen. Sperren verhindern, dass die POST-Methode Daten an die Azure Resource Manager-API (ARM) sendet. Einige gängige Beispiele für blockierte Vorgänge sind folgende:

  • Eine Schreibschutzsperre für ein Speicherkonto hindert Benutzer am Auflisten der Kontoschlüssel. Eine POST-Anforderung verarbeitet den Azure Storage-Vorgang List Keys, um den Zugriff auf die Kontoschlüssel zu schützen. Die Kontoschlüssel bieten vollständigen Zugriff auf Daten im Speicherkonto. Wenn eine Schreibschutzsperre für ein Speicherkonto konfiguriert ist, müssen Benutzer ohne Kontoschlüssel Azure AD-Anmeldeinformationen verwenden, um auf Blob- oder Warteschlangendaten zuzugreifen. Eine Schreibschutzsperre verhindert auch die Zuweisung von Azure RBAC-Rollen, die auf das Speicherkonto oder einen Datencontainer (Blobcontainer oder Warteschlange) beschränkt sind.

  • Eine Schreibschutzsperre für ein Speicherkonto schützt RBAC-Zuweisungen, die für ein Speicherkonto oder einen Datencontainer (Blobcontainer oder Warteschlange) gelten.

  • Eine Löschschutzsperre für ein Speicherkonto schützt nicht die Kontodaten vor Löschungen oder Änderungen. Sie schützt nur das Speicherkonto vor einer Löschung. Wenn eine Anforderung Vorgänge auf Datenebene verwendet, schützt die Sperre des Speicherkontos keine Blob-, Warteschlangen-, Tabellen- oder Dateidaten innerhalb dieses Speicherkontos. Wenn die Anforderung jedoch Vorgänge auf Steuerungsebene verwendet, schützt die Sperre diese Ressourcen.

    Wenn eine Anforderung z. B. Dateifreigaben – Löschen verwendet, wobei es sich um einen Vorgang auf Steuerungsebene handelt, führt der Löschvorgang zu einem Fehler. Wenn die Anforderung Freigabe löschen verwendet, was ein Vorgang auf Datenebene ist, ist der Löschvorgang erfolgreich. Es wird empfohlen, einen Vorgang auf Steuerungsebene zu verwenden.

  • Eine Schreibschutzsperre für ein Speicherkonto verhindert nicht, dass die zugehörigen Daten gelöscht oder geändert werden. Sie bietet ebenfalls keinen Schutz für die zugehörigen Blob-, Warteschlangen-, Tabellen- oder Dateidaten.

  • Das Festlegen einer Schreibschutzsperre für eine App Service-Ressource verhindert, dass der Server-Explorer von Visual Studio Dateien für die Ressource anzeigen kann, da für diese Interaktion Schreibzugriff erforderlich ist.

  • Durch eine Schreibschutzsperre für eine Ressourcengruppe, die einen App Service-Plan enthält, können Sie den Plan weder hoch- noch aufskalieren.

  • Eine Schreibschutzsperre für eine Ressourcengruppe, die einen virtuellen Computer enthält, hindert alle Benutzer am Starten bzw. Neustarten der VM. Diese Vorgänge erfordern eine POST-Methodenanforderung.

  • Eine schreibgeschützte Sperre für eine Ressourcengruppe, die ein Automatisierungskonto enthält, verhindert, dass alle Runbooks gestartet werden. Diese Vorgänge erfordern eine POST-Methodenanforderung.

  • Eine Löschschutzsperre für eine Ressourcengruppe verhindert, dass mit Azure Resource Manager automatisch Bereitstellungen aus dem Verlauf gelöscht werden. Wenn im Verlauf 800 Bereitstellungen erreicht werden, treten bei weiteren Bereitstellungen Fehler auf.

  • Eine vom Azure Backup-Dienst erstellte Löschschutzsperre für die Ressourcengruppe führt dazu, dass Sicherungen fehlschlagen. Der Dienst unterstützt maximal 18 Wiederherstellungspunkte. Bei einer Sperrung kann der Sicherungsdienst Wiederherstellungspunkte nicht bereinigen. Weitere Informationen finden Sie unter Häufig gestellte Fragen zum Sichern von Azure-VMs.

  • Eine Nichtlöschsperre für eine Ressourcengruppe, die Azure Machine Learning-Arbeitsbereiche enthält, verhindert, dass die automatische Skalierung von Azure Machine Learning-Computeclustern korrekt funktioniert. Mit der Sperre kann die automatische Skalierung keine nicht verwendeten Knoten entfernen. Ihre Lösung verbraucht mehr Ressourcen, als für die Workload erforderlich sind.

  • Eine schreibgeschützte Sperre für einen Log Analytics-Arbeitsbereich verhindert die Aktivierung der Verhaltensanalysen für Benutzer und Entitäten (User and Entity Behavior Analytics, UEBA).

  • Eine Löschschutzsperre für einen Log Analytics-Arbeitsbereich verhindert keine Datenbereinigungsvorgänge. Entfernen Sie stattdessen die Rolle Datenbereinigung von dem Benutzer.

  • Eine Schreibschutzsperre für ein Abonnement verhindert, dass Azure Advisor ordnungsgemäß funktioniert. Advisor kann die Ergebnisse seiner Abfragen nicht speichern.

  • Eine Schreibschutzsperre für ein Application Gateway verhindert, dass Sie die Back-End-Integrität des Anwendungsgateways abrufen können. Dieser Vorgang verwendet eine POST-Methode, die durch eine Schreibschutzsperre blockiert wird.

  • Eine Schreibschutzsperre für einen Azure Kubernetes Service-Cluster (AKS) schränkt den Zugriff auf Clusterressourcen über das Portal ein. Eine Schreibschutzsperre verhindert, dass Sie den Abschnitt „Kubernetes-Ressourcen“ des AKS-Clusters im Azure-Portal verwenden können, um eine Clusterressource auszuwählen. Diese Vorgänge erfordern eine POST-Methodenanforderung für die Authentifizierung.

  • Eine Löschschutzsperre auf einem virtuellen Computer, der durch Site Recovery geschützt ist, verhindert, dass bestimmte Ressourcenlinks im Zusammenhang mit Site Recovery ordnungsgemäß entfernt werden, wenn Sie den Schutz entfernen oder die Replikation deaktivieren. Wenn Sie den Computer später erneut schützen möchten, müssen Sie die Sperre entfernen, bevor Sie den Schutz deaktivieren. Falls Sie die Sperre nicht entfernt haben, müssen Sie bestimmte Schritte ausführen, um die veralteten Links zu bereinigen, bevor Sie den Computer erneut schützen können. Weitere Informationen finden Sie unter Problembehandlung für die Replikation virtueller Azure-Computer.

Voraussetzungen für das Erstellen oder Löschen von Sperren

Zum Erstellen oder Löschen von Verwaltungssperren benötigen Sie Zugriff auf Microsoft.Authorization/*- oder Microsoft.Authorization/locks/*-Aktionen. Nur die integrierten Rollen Besitzer und Benutzerzugriffsadministrator können Verwaltungssperren erstellen oder löschen. Sie können eine benutzerdefinierte Rolle mit den benötigten Berechtigungen erstellen.

Verwaltete Anwendungen und Sperren

Einige Azure-Dienste wie Azure Databricks verwenden für die Implementierung des Diensts verwaltete Anwendungen. In diesem Fall erstellt der Dienst zwei Ressourcengruppen. Eine ist eine nicht gesperrte Ressourcengruppe, die eine Dienstübersicht enthält. Die andere ist eine gesperrte Ressourcengruppe, die die Dienstinfrastruktur enthält.

Wenn Sie versuchen, die Infrastrukturressourcengruppe zu löschen, wird eine Fehlermeldung ausgegeben, dass die Ressourcengruppe gesperrt ist. Wenn Sie versuchen, die Sperre für die Infrastrukturressourcengruppe zu löschen, erhalten Sie eine Fehlermeldung. In dieser werden Sie darüber informiert, dass die Sperre nicht gelöscht werden kann, weil sie im Besitz einer Systemanwendung ist.

Löschen Sie stattdessen den Dienst, dann wird auch die Infrastrukturressourcengruppe gelöscht.

Wählen Sie für verwaltete Anwendungen den Dienst aus, den Sie bereitgestellt haben.

Auswählen des Diensts

Beachten Sie, dass der Dienst einen Link für eine verwaltete Ressourcengruppe aufweist. In dieser Ressourcengruppe befindet sich die Infrastruktur, und sie ist gesperrt. Sie können sie nur indirekt löschen.

Anzeigen der verwalteten Gruppe

Um alle Elemente für den Dienst zu löschen, einschließlich der gesperrten Infrastrukturressourcengruppe, wählen Sie Löschen für den Dienst aus.

Suchdienst löschen

Konfigurieren von Sperren

Portal

Im linken Navigationsbereich lautet der Name der Funktion zum Sperren von Abonnements Ressourcensperren, während der Name der Funktion zum Sperren von Ressourcengruppen Sperren lautet.

  1. Wählen Sie im Blatt „Einstellungen“ für die Ressourcen, Ressourcengruppen oder Abonnements, die Sie sperren möchten, die Option Sperren.

    Sperre auswählen.

  2. Wählen Sie zum Hinzufügen einer Sperre Hinzufügen. Wenn Sie eine Sperre auf einer übergeordneten Ebene erstellen möchten, wählen Sie das übergeordnete Element. Die derzeit ausgewählte Ressource erbt die Sperre vom übergeordneten Element. Sie könnten z.B. die Ressourcengruppe sperren, um eine Sperre auf alle ihre Ressourcen anzuwenden.

    Sperre hinzufügen.

  3. Weisen Sie der Sperre einen Namen und eine Ebene zu. Optional können Sie Notizen hinzufügen, die die Sperre beschreiben.

    Sperre festlegen.

  4. Wählen Sie die Schaltfläche Löschen aus, um die ausgewählte Sperre zu löschen.

    Sperre löschen.

Vorlage

Wenn Sie eine ARM-Vorlage oder eine Bicep-Datei für die Bereitstellung einer Sperre verwenden, sollten Sie wissen, wie der Bereitstellungsbereich und der Sperrbereich zusammenarbeiten. Um eine Sperre auf den Bereitstellungsbereich anzuwenden, z. B. das Sperren einer Ressourcengruppe oder eines Abonnements, legen Sie die Eigenschaft „scope“ nicht fest. Wenn Sie eine Ressource innerhalb des Bereitstellungsbereichs sperren, legen Sie den Bereich für die Sperre fest.

Die folgende Vorlage wendet eine Sperre auf die Ressourcengruppe an, in der sie bereitgestellt ist. Beachten Sie, dass für die Sperrressource keine Eigenschaft „scope“vorhanden ist, weil der Bereich der Sperre mit dem Bereich der Bereitstellung übereinstimmt. Stellen Sie diese Vorlage auf Ebene der Ressourcengruppe bereit.

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

Um eine Ressourcengruppe zu erstellen und zu sperren, stellen Sie die folgende Vorlage auf Abonnementebene bereit.

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

Wenn Sie eine Sperre auf eine Ressource in der Ressourcengruppe anwenden, fügen Sie die Eigenschaft „scope“ hinzu. Legen Sie „scope“ auf den Namen der zu sperrenden Ressource fest.

Im folgenden Beispiel wird eine Vorlage gezeigt, die einen App Service-Plan, eine Website und eine Sperre für die Website erstellt. Der Bereich der Sperre wird auf die Website festgelegt.

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

Sie sperren bereitgestellte Ressourcen mit Azure PowerShell über den Befehl New-AzResourceLock.

Geben Sie zum Sperren einer Ressource den Namen der Ressource, ihren Ressourcentyp und ihren Ressourcengruppennamen an.

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

Geben Sie zum Sperren einer Ressourcengruppe ihren Namen an.

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

Rufen Sie Informationen zu einer Sperre mithilfe von Get-AzResourceLock ab. Rufen Sie alle Sperren im Abonnement mit dem folgenden Befehl ab:

Get-AzResourceLock

Rufen Sie alle Sperren für eine Ressource mit dem folgenden Befehl ab:

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

Rufen Sie alle Sperren für eine Ressourcengruppe mit dem folgenden Befehl ab:

Get-AzResourceLock -ResourceGroupName exampleresourcegroup

Mit dem folgenden Befehl können Sie eine Sperre für eine Ressource löschen:

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

Mit dem folgenden Befehl können Sie eine Sperre für eine Ressourcengruppe löschen:

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

Azure CLI

Sperren Sie bereitgestellte Ressourcen mit der Azure CLI, indem Sie den Befehl az lock create verwenden.

Geben Sie zum Sperren einer Ressource den Namen der Ressource, ihren Ressourcentyp und ihren Ressourcengruppennamen an.

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

Geben Sie zum Sperren einer Ressourcengruppe ihren Namen an.

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

Verwenden Sie zum Abrufen von Informationen zu einer Sperre az lock list. Rufen Sie alle Sperren im Abonnement mit dem folgenden Befehl ab:

az lock list

Rufen Sie alle Sperren für eine Ressource mit dem folgenden Befehl ab:

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

Rufen Sie alle Sperren für eine Ressourcengruppe mit dem folgenden Befehl ab:

az lock list --resource-group exampleresourcegroup

Mit dem folgenden Befehl können Sie eine Sperre für eine Ressource löschen:

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

Mit dem folgenden Befehl können Sie eine Sperre für eine Ressourcengruppe löschen:

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

REST-API

Sie können bereitgestellte Ressourcen mit der REST-API für Verwaltungssperren sperren. Die REST-API ermöglicht es Ihnen, Sperren zu erstellen und zu löschen sowie Informationen zu vorhandenen Sperren abzurufen.

Führen Sie zum Erstellen einer Sperre Folgendes durch:

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

Bei dem Bereich kann es sich um ein Abonnement, die Ressourcengruppe oder die Ressource handeln. Geben Sie für die Sperre einen beliebigen Namen an. Verwenden Sie für die API-Version den Wert 2016-09-01.

Schließen Sie in die Anforderung ein JSON-Objekt ein, das die Eigenschaften für die Sperre angibt.

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

Nächste Schritte