Блокировка ресурсов для предотвращения непредвиденных измененийLock resources to prevent unexpected changes

Администратору иногда требуется заблокировать подписку, ресурс или группу ресурсов, чтобы другие пользователи в организации не могли случайно удалить или изменить критически важные ресурсы.As an administrator, you may need to lock a subscription, resource group, or resource to prevent other users in your organization from accidentally deleting or modifying critical resources. Можно установить уровень блокировки CanNotDelete или ReadOnly.You can set the lock level to CanNotDelete or ReadOnly. На портале блокировки называются Удаление и Только для чтения, соответственно.In the portal, the locks are called Delete and Read-only respectively.

  • CanNotDelete означает, что авторизованные пользователи смогут читать и изменять ресурс, но не смогут его удалить.CanNotDelete means authorized users can still read and modify a resource, but they can't delete the resource.
  • ReadOnly означает, что авторизованные пользователи смогут читать ресурс, но не смогут его удалить или обновить.ReadOnly means authorized users can read a resource, but they can't delete or update the resource. Применение этой блокировки подобно ограничению авторизованных пользователей с помощью разрешений, предоставляемых для роли Читатель.Applying this lock is similar to restricting all authorized users to the permissions granted by the Reader role.

Примечание

Эта статья была изменена и теперь содержит сведения о новом модуле Az для Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Вы по-прежнему можете использовать модуль AzureRM, исправления ошибок для которого будут продолжать выпускаться как минимум до декабря 2020 г.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Дополнительные сведения о совместимости модуля Az с AzureRM см. в статье Introducing the new Azure PowerShell Az module (Знакомство с новым модулем Az для Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Инструкции по установке модуля Az см. в статье об установке Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Применение блокировокHow locks are applied

При применении блокировки к родительской области все ресурсы в этой области наследуют ту же блокировку.When you apply a lock at a parent scope, all resources within that scope inherit the same lock. Даже ресурсы, добавляемые позже, наследуют блокировку от родительского ресурса.Even resources you add later inherit the lock from the parent. Приоритет имеет наиболее строгая блокировка.The most restrictive lock in the inheritance takes precedence.

В отличие от управления доступом на основе ролей блокировки управления используются для применения ограничения для всех пользователей и ролей.Unlike role-based access control, you use management locks to apply a restriction across all users and roles. Сведения о настройке разрешений для пользователей и ролей см. в статье Использование назначений ролей для управления доступом к ресурсам в подписке Azure.To learn about setting permissions for users and roles, see Azure Role-based Access Control.

Блокировки Resource Manager применяются только к операциям, выполняемым в плоскости управления, которая включает в себя операции, передаваемые на https://management.azure.com.Resource Manager locks apply only to operations that happen in the management plane, which consists of operations sent to https://management.azure.com. Эти блокировки не мешают ресурсам осуществлять свои собственные операции.The locks don't restrict how resources perform their own functions. Ограничиваются изменения ресурсов, но не операции с ними.Resource changes are restricted, but resource operations aren't restricted. Например, блокировка ReadOnly в Базе данных SQL не позволит вам удалить или изменить базу данных.For example, a ReadOnly lock on a SQL Database prevents you from deleting or modifying the database. При этом она не мешает создавать, обновлять и удалять данные в базе данных.It doesn't prevent you from creating, updating, or deleting data in the database. Транзакции с данными разрешены, так как эти операции не отправляются в https://management.azure.com.Data transactions are permitted because those operations aren't sent to https://management.azure.com.

Применение ReadOnly может привести к непредвиденным результатам, так как некоторые операции, которые не могут изменить ресурс, фактически нуждаются в действиях, заблокированных блокировкой.Applying ReadOnly can lead to unexpected results because some operations that don't seem to modify the resource actually require actions that are blocked by the lock. Блокировку только для чтения можно применить к ресурсу или к группе ресурсов, содержащей ресурс.The ReadOnly lock can be applied to the resource or to the resource group containing the resource. Ниже приведены некоторые распространенные примеры операций, блокируемых блокировкой только для чтения .Some common examples of the operations that are blocked by a ReadOnly lock are:

  • Блокировка только для чтения в учетной записи хранения запрещает всем пользователям перечисление ключей.A ReadOnly lock on a storage account prevents all users from listing the keys. Операция отображения списка ключей обрабатывается с помощью запроса POST, поскольку возвращаемые ключи могут быть доступны для операций записи.The list keys operation is handled through a POST request because the returned keys are available for write operations.

  • Кроме того, применение блокировки ReadOnly к ресурсу службы приложений не позволит обозревателю сервера Visual Studio отображать файлы для ресурса, так как для их взаимодействия требуется доступ на запись.A ReadOnly lock on an App Service resource prevents Visual Studio Server Explorer from displaying files for the resource because that interaction requires write access.

  • Блокировка только для чтения в группе ресурсов, содержащей виртуальную машину, не позволяет всем пользователям запускать или перезапускать виртуальную машину.A ReadOnly lock on a resource group that contains a virtual machine prevents all users from starting or restarting the virtual machine. Для этих операций требуется запрос POST.These operations require a POST request.

Кто может создавать или удалять блокировкиWho can create or delete locks

Для создания или удаления блокировок управления необходим доступ к действию Microsoft.Authorization/* или Microsoft.Authorization/locks/*.To create or delete management locks, you must have access to Microsoft.Authorization/* or Microsoft.Authorization/locks/* actions. Из встроенных ролей эти действия предоставляются только владельцу и администратору доступа пользователей.Of the built-in roles, only Owner and User Access Administrator are granted those actions.

Управляемые приложения и блокировкиManaged Applications and locks

Некоторые службы Azure, такие как Azure Databricks, используют управляемые приложения для реализации службы.Some Azure services, such as Azure Databricks, use managed applications to implement the service. В этом случае служба создает две группы ресурсов.In that case, the service creates two resource groups. Одна группа ресурсов содержит общие сведения о службе и не заблокирована.One resource group contains an overview of the service and isn't locked. Другая группа ресурсов содержит инфраструктуру для службы и заблокирована.The other resource group contains the infrastructure for the service and is locked.

При попытке удалить группу ресурсов инфраструктуры появляется сообщение об ошибке, указывающее, что группа ресурсов заблокирована.If you try to delete the infrastructure resource group, you get an error stating that the resource group is locked. Если вы попытаетесь удалить блокировку для группы ресурсов инфраструктуры, появится сообщение об ошибке, сообщающее, что блокировка не может быть удалена, так как она принадлежит системному приложению.If you try to delete the lock for the infrastructure resource group, you get an error stating that the lock can't be deleted because it's owned by a system application.

Вместо этого удалите службу, которая также удаляет группу ресурсов инфраструктуры.Instead, delete the service, which also deletes the infrastructure resource group.

Для управляемых приложений выберите развернутую службу.For managed applications, select the service you deployed.

Выбор службы

Обратите внимание, что служба содержит ссылку на управляемую группу ресурсов.Notice the service includes a link for a Managed Resource Group. Эта группа ресурсов содержит инфраструктуру и заблокирована.That resource group holds the infrastructure and is locked. Его нельзя удалить напрямую.It can't be directly deleted.

Отображение управляемой группы

Чтобы удалить все для службы, включая группу ресурсов заблокированной инфраструктуры, выберите Удалить для службы.To delete everything for the service, including the locked infrastructure resource group, select Delete for the service.

Удаление службы

ПорталPortal

  1. В колонке параметров для ресурса, группы ресурсов или подписки, которые необходимо заблокировать, выберите Блокировки.In the Settings blade for the resource, resource group, or subscription that you wish to lock, select Locks.

    выбор блокировки

  2. Чтобы добавить блокировку, выберите Добавить.To add a lock, select Add. Если вы хотите создать блокировку на родительском уровне, выберите родительский ресурс.If you want to create a lock at a parent level, select the parent. Выбранный ресурс наследует блокировку от родительского ресурса.The currently selected resource inherits the lock from the parent. Например, можно заблокировать группу ресурсов, чтобы применить блокировку ко всем ее ресурсам.For example, you could lock the resource group to apply a lock to all its resources.

    добавление блокировки

  3. Присвойте блокировке имя и уровень блокировки.Give the lock a name and lock level. При необходимости можно добавить примечания, описывающие блокировку.Optionally, you can add notes that describe the lock.

    установка блокировки

  4. Чтобы удалить блокировку, нажмите кнопку с многоточием (...) и из списка доступных вариантов выберите Удалить .To delete the lock, select the ellipsis and Delete from the available options.

    удаление блокировки

шаблонаTemplate

При использовании шаблона диспетчер ресурсов для развертывания блокировки используются разные значения имени и типа в зависимости от области блокировки.When using a Resource Manager template to deploy a lock, you use different values for the name and type depending on the scope of the lock.

При применении блокировки к ресурсуиспользуйте следующие форматы:When applying a lock to a resource, use the following formats:

  • имя — {resourceName}/Microsoft.Authorization/{lockName}name - {resourceName}/Microsoft.Authorization/{lockName}
  • Тип — {resourceProviderNamespace}/{resourceType}/providers/lockstype - {resourceProviderNamespace}/{resourceType}/providers/locks

При применении блокировки к группе ресурсов или подпискеиспользуйте следующие форматы:When applying a lock to a resource group or subscription, use the following formats:

  • имя — {lockName}name - {lockName}
  • Тип — Microsoft.Authorization/lockstype - Microsoft.Authorization/locks

В следующем примере показан шаблон, который позволяет создать план обслуживания приложений, веб-сайт и блокировку на веб-сайте.The following example shows a template that creates an app service plan, a web site, and a lock on the web site. Блокировка — это тип ресурса для блокировки и /providers/locks.The resource type of the lock is the resource type of the resource to lock and /providers/locks. Имя блокировки состоит из имени ресурса, суффикса /Microsoft.Authorization/ и имени самой блокировки.The name of the lock is created by concatenating the resource name with /Microsoft.Authorization/ and the name of the lock.

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

Пример настройки блокировки для группы ресурсов см. в разделе Создание группы ресурсов и ее блокировка.For an example of setting a lock on a resource group, see Create a resource group and lock it.

PowerShellPowerShell

Вы можете заблокировать развернутые ресурсы с помощью Azure PowerShell, выполнив команду New-AzResourceLock.You lock deployed resources with Azure PowerShell by using the New-AzResourceLock command.

Чтобы заблокировать ресурс, укажите имя и тип ресурса, а также имя группы ресурсов.To lock a resource, provide the name of the resource, its resource type, and its resource group name.

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

Чтобы заблокировать группу ресурсов, укажите ее имя.To lock a resource group, provide the name of the resource group.

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

Чтобы получить сведения о блокировке, используйте Get-азресаурцелокк.To get information about a lock, use Get-AzResourceLock. Чтобы получить все блокировки в подписке, выполните следующую команду:To get all the locks in your subscription, use:

Get-AzResourceLock

Чтобы получить все блокировки для ресурса, выполните следующую команду:To get all locks for a resource, use:

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

Чтобы получить все блокировки для группы ресурсов, выполните следующую команду:To get all locks for a resource group, use:

Get-AzResourceLock -ResourceGroupName exampleresourcegroup

Чтобы удалить блокировку, используйте эту команду:To delete a lock, use:

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

Интерфейс командной строки AzureAzure CLI

Вы можете заблокировать развернутые ресурсы с помощью Azure CLI, выполнив команду az lock create.You lock deployed resources with Azure CLI by using the az lock create command.

Чтобы заблокировать ресурс, укажите имя и тип ресурса, а также имя группы ресурсов.To lock a resource, provide the name of the resource, its resource type, and its resource group name.

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

Чтобы заблокировать группу ресурсов, укажите ее имя.To lock a resource group, provide the name of the resource group.

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

Чтобы получить сведения о блокировке, выполните команду az lock list.To get information about a lock, use az lock list. Чтобы получить все блокировки в подписке, выполните следующую команду:To get all the locks in your subscription, use:

az lock list

Чтобы получить все блокировки для ресурса, выполните следующую команду:To get all locks for a resource, use:

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

Чтобы получить все блокировки для группы ресурсов, выполните следующую команду:To get all locks for a resource group, use:

az lock list --resource-group exampleresourcegroup

Чтобы удалить блокировку, используйте эту команду:To delete a lock, use:

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

Интерфейс REST APIREST API

Вы можете заблокировать развернутые ресурсы с помощью REST API для блокировок управления.You can lock deployed resources with the REST API for management locks. REST API позволяет создавать и удалять блокировки и получать информацию о существующих блокировках.The REST API enables you to create and delete locks, and retrieve information about existing locks.

Чтобы создать блокировку, выполните следующую команду:To create a lock, run:

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

Областью может быть подписка, группа ресурсов или ресурс.The scope could be a subscription, resource group, or resource. Вы можете назначить блокировке любое имя.The lock-name is whatever you want to call the lock. Для API-Version используйте 2016-09-01.For api-version, use 2016-09-01.

В запросе включите объект JSON, который задает свойства блокировки.In the request, include a JSON object that specifies the properties for the lock.

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

Дополнительная информацияNext steps