Bloquear recursos para prevenir alterações inesperadasLock resources to prevent unexpected changes

Como administrador, pode precisar de bloquear uma subscrição, um grupo de recursos ou recursos, para impedir que outros utilizadores na sua organização eliminem ou modifiquem acidentalmente recursos importantes.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. Pode definir o nível do bloqueio para CanNotDelete ou ReadOnly.You can set the lock level to CanNotDelete or ReadOnly. No portal, as fechaduras são chamadas de Delete e Read-only, respectivamente.In the portal, the locks are called Delete and Read-only respectively.

  • CanNotDelete significa que os utilizadores autorizados ainda podem ler e modificar um recurso, mas não podem eliminar o recurso.CanNotDelete means authorized users can still read and modify a resource, but they can't delete the resource.
  • ReadOnly significa que os utilizadores autorizados podem ler um recurso, mas não podem eliminar ou atualizar o recurso.ReadOnly means authorized users can read a resource, but they can't delete or update the resource. A aplicação deste bloqueio é semelhante a restringir todos os utilizadores autorizados às permissões concedidas pela função Reader.Applying this lock is similar to restricting all authorized users to the permissions granted by the Reader role.

Como os bloqueios são aplicadosHow locks are applied

Quando se aplica uma fechadura no âmbito dos pais, todos os recursos dentro desse âmbito herdam a mesma fechadura.When you apply a lock at a parent scope, all resources within that scope inherit the same lock. Até os recursos que adicionas mais tarde herda a fechadura do progenitor.Even resources you add later inherit the lock from the parent. O bloqueio mais restritivo na herança tem precedência.The most restrictive lock in the inheritance takes precedence.

Ao contrário do controlo de acesso baseado em funções, pode utilizar a gestão de bloqueios para aplicar uma restrição a todos os utilizadores e a todas as funções.Unlike role-based access control, you use management locks to apply a restriction across all users and roles. Para saber mais sobre a definição de permissões para utilizadores e funções, consulte o controlo de acesso baseado em funções Azure (Azure RBAC).To learn about setting permissions for users and roles, see Azure role-based access control (Azure RBAC).

Os bloqueios do Resource Manager aplicam-se apenas a operações que ocorrem no painel de gestão, o que consiste em operações enviadas para 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. Os bloqueios não restringem a forma como os recursos desempenham as suas próprias funções.The locks don't restrict how resources perform their own functions. As alterações dos recursos são restritas, mas as operações dos recursos não o são.Resource changes are restricted, but resource operations aren't restricted. Por exemplo, um bloqueio ReadOnly num servidor lógico SQL Database impede-o de eliminar ou modificar o servidor.For example, a ReadOnly lock on a SQL Database logical server prevents you from deleting or modifying the server. Não o impede de criar, atualizar ou eliminar dados nas bases de dados desse servidor.It doesn't prevent you from creating, updating, or deleting data in the databases on that server. As transações de dados são permitidas porque essas operações não são enviadas para https://management.azure.com.Data transactions are permitted because those operations aren't sent to https://management.azure.com.

Considerações antes de aplicar fechadurasConsiderations before applying locks

A aplicação de bloqueios pode levar a resultados inesperados porque algumas operações que não parecem modificar o recurso requerem realmente ações que são bloqueadas pelo bloqueio.Applying locks 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. Alguns exemplos comuns das operações que são bloqueadas por fechaduras são:Some common examples of the operations that are blocked by locks are:

  • Um bloqueio apenas de leitura numa conta de armazenamento impede todos os utilizadores de listar as chaves.A read-only lock on a storage account prevents all users from listing the keys. A operação de listar chaves é processada através de um pedido POST porque as chaves devolvidas estão disponíveis para operações de escrita.The list keys operation is handled through a POST request because the returned keys are available for write operations.

  • Um bloqueio apenas de leitura num recurso do Serviço de Aplicações impede o Visual Studio Server Explorer de exibir ficheiros para o recurso porque essa interação requer acesso de escrita.A read-only lock on an App Service resource prevents Visual Studio Server Explorer from displaying files for the resource because that interaction requires write access.

  • Um bloqueio apenas de leitura num grupo de recursos que contenha uma máquina virtual impede todos os utilizadores de iniciar ou reiniciar a máquina virtual.A read-only lock on a resource group that contains a virtual machine prevents all users from starting or restarting the virtual machine. Estas operações requerem um pedido de CORREIO.These operations require a POST request.

  • Um bloqueio não pode eliminar um grupo de recursos impede o Gestor de Recursos Azure de eliminar automaticamente as implementações na história.A cannot-delete lock on a resource group prevents Azure Resource Manager from automatically deleting deployments in the history. Se atingir 800 destacamentos na história, as suas implementações falharão.If you reach 800 deployments in the history, your deployments will fail.

  • Um bloqueio não pode eliminar o grupo de recursos criado pelo Azure Backup Service faz com que as cópias de segurança falhem.A cannot-delete lock on the resource group created by Azure Backup Service causes backups to fail. O serviço suporta um máximo de 18 pontos de restauro.The service supports a maximum of 18 restore points. Quando bloqueado, o serviço de reserva não pode limpar pontos de restauro.When locked, the backup service can't clean up restore points. Para obter mais informações, consulte Perguntas Frequentes-Back up Azure VMs.For more information, see Frequently asked questions-Back up Azure VMs.

  • Um bloqueio de leitura numa subscrição impede o Azure Advisor de funcionar corretamente.A read-only lock on a subscription prevents Azure Advisor from working correctly. O consultor não consegue armazenar os resultados das suas consultas.Advisor is unable to store the results of its queries.

Quem pode criar ou apagar fechadurasWho can create or delete locks

Para criar ou eliminar bloqueios de gestão, tem de ter acesso Microsoft.Authorization/* ou Microsoft.Authorization/locks/* ações.To create or delete management locks, you must have access to Microsoft.Authorization/* or Microsoft.Authorization/locks/* actions. Das funções incorporadas, apenas Proprietário e Administrador de Acesso dos Utilizadores têm acesso a essas ações.Of the built-in roles, only Owner and User Access Administrator are granted those actions.

Aplicações e fechaduras geridasManaged Applications and locks

Alguns serviços da Azure, como o Azure Databricks, utilizam aplicações geridas para implementar o serviço.Some Azure services, such as Azure Databricks, use managed applications to implement the service. Nesse caso, o serviço cria dois grupos de recursos.In that case, the service creates two resource groups. Um grupo de recursos contém uma visão geral do serviço e não está bloqueado.One resource group contains an overview of the service and isn't locked. O outro grupo de recursos contém a infraestrutura para o serviço e está bloqueado.The other resource group contains the infrastructure for the service and is locked.

Se tentar eliminar o grupo de recursos de infraestrutura, obtém-se um erro indicando que o grupo de recursos está bloqueado.If you try to delete the infrastructure resource group, you get an error stating that the resource group is locked. Se tentar apagar o bloqueio do grupo de recursos de infraestrutura, obtém-se um erro afirmando que o bloqueio não pode ser eliminado porque é propriedade de uma aplicação do sistema.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.

Em vez disso, elimine o serviço, que também elimina o grupo de recursos de infraestrutura.Instead, delete the service, which also deletes the infrastructure resource group.

Para aplicações geridas, selecione o serviço que implementou.For managed applications, select the service you deployed.

Selecione serviço

Note que o serviço inclui um link para um Grupo de Recursos Geridos.Notice the service includes a link for a Managed Resource Group. Este grupo de recursos detém a infraestrutura e está bloqueado.That resource group holds the infrastructure and is locked. Não pode ser apagado diretamente.It can't be directly deleted.

Mostrar grupo gerido

Para eliminar tudo o que for para o serviço, incluindo o grupo de recursos de infraestrutura bloqueado, selecione Delete para o serviço.To delete everything for the service, including the locked infrastructure resource group, select Delete for the service.

Apagar serviço

Fechaduras de configuraçãoConfigure locks

PortalPortal

  1. No painel Definições do recurso, grupo de recursos ou subscrição que quer bloquear, selecione Bloqueios.In the Settings blade for the resource, resource group, or subscription that you wish to lock, select Locks.

    selecionar bloqueio

  2. Para adicionar um bloqueio, selecione Adicionar.To add a lock, select Add. Se quiser criar uma fechadura a nível dos pais, selecione o progenitor.If you want to create a lock at a parent level, select the parent. O recurso atualmente selecionado herda a fechadura do progenitor.The currently selected resource inherits the lock from the parent. Por exemplo, pode bloquear o grupo de recursos para aplicar um bloqueio a todos os seus recursos.For example, you could lock the resource group to apply a lock to all its resources.

    adicionar bloqueio

  3. Dê ao cadeado um nome e um nível de bloqueio.Give the lock a name and lock level. Opcionalmente, pode adicionar notas para descrever o bloqueio.Optionally, you can add notes that describe the lock.

    bloqueio definido

  4. Para eliminar o bloqueio, selecione a elipse e elimine as opções disponíveis.To delete the lock, select the ellipsis and Delete from the available options.

    apagar bloqueio

Modelo ARMARM template

Ao utilizar um modelo de Gestor de Recursos Azure (modelo ARM) para implementar uma fechadura, é necessário estar atento ao alcance do bloqueio e ao âmbito da implantação.When using an Azure Resource Manager template (ARM template) to deploy a lock, you need to be aware of the scope of the lock and the scope of the deployment. Para aplicar um bloqueio no âmbito de implementação, como bloquear um grupo de recursos ou subscrição, não desabar a propriedade de âmbito.To apply a lock at the deployment scope, such as locking a resource group or subscription, don't set the scope property. Ao bloquear um recurso dentro do âmbito de implantação, desaprova a propriedade de âmbito.When locking a resource within the deployment scope, set the scope property.

O modelo a seguir aplica um bloqueio ao grupo de recursos para o qual é implantado.The following template applies a lock to the resource group it's deployed to. Note que não existe uma propriedade de âmbito no recurso de bloqueio porque o âmbito do bloqueio corresponde ao âmbito de implementação.Notice there isn't a scope property on the lock resource because the scope of the lock matches the scope of deployment. Este modelo é implantado ao nível do grupo de recursos.This template is deployed at the resource group level.

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

Para criar um grupo de recursos e bloqueá-lo, implemente o modelo seguinte ao nível de subscrição.To create a resource group and lock it, deploy the following template at the subscription level.

{
    "$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": "2019-10-01",
            "name": "[parameters('rgName')]",
            "location": "[parameters('rgLocation')]",
            "properties": {}
        },
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2020-06-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": {}
}

Ao aplicar um bloqueio a um recurso dentro do grupo de recursos, adicione a propriedade de âmbito.When applying a lock to a resource within the resource group, add the scope property. Desaprote o âmbito do nome do recurso a bloquear.Set scope to the name of the resource to lock.

O exemplo a seguir mostra um modelo que cria um plano de serviço de aplicações, um web site e um bloqueio no site.The following example shows a template that creates an app service plan, a web site, and a lock on the web site. O âmbito da fechadura está definido para o site.The scope of the lock is set to the web site.

{
  "$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-06-01",
      "name": "[parameters('hostingPlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "tier": "Free",
        "name": "f1",
        "capacity": 0
      },
      "properties": {
        "targetWorkerCount": 1
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2020-06-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 PowerShellAzure PowerShell

Bloqueia os recursos implantados com o Azure PowerShell utilizando o comando New-AzResourceLock.You lock deployed resources with Azure PowerShell by using the New-AzResourceLock command.

Para bloquear um recurso, forneça o nome do recurso, o seu tipo de recurso e o seu nome de grupo de recursos.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

Para bloquear um grupo de recursos, forneça o nome do grupo de recursos.To lock a resource group, provide the name of the resource group.

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

Para obter informações sobre um bloqueio, utilize o Get-AzResourceLock.To get information about a lock, use Get-AzResourceLock. Para obter todas as fechaduras da sua subscrição, utilize:To get all the locks in your subscription, use:

Get-AzResourceLock

Para obter todas as fechaduras para um recurso, use:To get all locks for a resource, use:

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

Para obter todas as fechaduras de um grupo de recursos, utilize:To get all locks for a resource group, use:

Get-AzResourceLock -ResourceGroupName exampleresourcegroup

Para eliminar uma fechadura, utilize:To delete a lock, use:

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

CLI do AzureAzure CLI

Bloqueia os recursos implantados com o Azure CLI utilizando o comando de criação de bloqueio az.You lock deployed resources with Azure CLI by using the az lock create command.

Para bloquear um recurso, forneça o nome do recurso, o seu tipo de recurso e o seu nome de grupo de recursos.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

Para bloquear um grupo de recursos, forneça o nome do grupo de recursos.To lock a resource group, provide the name of the resource group.

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

Para obter informações sobre uma fechadura, utilize a lista de bloqueios az.To get information about a lock, use az lock list. Para obter todas as fechaduras da sua subscrição, utilize:To get all the locks in your subscription, use:

az lock list

Para obter todas as fechaduras para um recurso, use:To get all locks for a resource, use:

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

Para obter todas as fechaduras de um grupo de recursos, utilize:To get all locks for a resource group, use:

az lock list --resource-group exampleresourcegroup

Para eliminar uma fechadura, utilize: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

API RESTREST API

Pode bloquear recursos implantados com a API REST para bloqueios de gestão.You can lock deployed resources with the REST API for management locks. A API REST permite-lhe criar e eliminar fechaduras e recuperar informações sobre fechaduras existentes.The REST API enables you to create and delete locks, and retrieve information about existing locks.

Para criar uma fechadura, corra:To create a lock, run:

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

O âmbito pode ser uma subscrição, grupo de recursos ou recurso.The scope could be a subscription, resource group, or resource. O nome do cadeado é o que quiser chamar de fechadura.The lock-name is whatever you want to call the lock. Para a versão api, utilize 2016-09-01.For api-version, use 2016-09-01.

No pedido, inclua um objeto JSON que especifica as propriedades para o bloqueio.In the request, include a JSON object that specifies the properties for the lock.

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

Passos seguintesNext steps