> ## Content Index
> Fetch the complete content index at: https://www.azurebrasil.cloud/llms.txt
> Use this file to discover other available public pages before exploring further.

# Protegendo seus recursos de nuvem contra ações de delete acidentais
- URL: https://www.azurebrasil.cloud/blog/protegendo-seus-recursos-de-nuvem-com-o-lock/
- Published: 2023-11-01T12:47:45.000Z
- Updated: 2023-11-01T12:47:45.000Z
- Author: Talles Valiatti

Fala galera, no post de hoje vamos falar sobre como podemos proteger nossos recursos de nuvem contra ações de *delete* ou *updade* acidentais, utilizando o [*lock*](https://learn.microsoft.com/en-ie/azure/azure-resource-manager/management/lock-resources?tabs=json&ref=azurebrasil.cloud).

Existem dois tipos de *locks* na Azure:

- *CanNotDelete*: Usuários podem ler ou fazer modificações no recurso, mas não podem deletá-lo;
- *ReadOnly*: Usuários não podem fazer modificações ou deletar o recurso de nuvem.

Além disso, o *lock* pode ser aplicado a *[subscriptions](https://learn.microsoft.com/en-us/microsoft-365/enterprise/subscriptions-licenses-accounts-and-tenants-for-microsoft-cloud-offerings?view=o365-worldwide&ref=azurebrasil.cloud), [resource group](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-portal?ref=azurebrasil.cloud),* ou um recurso específico. Vale comentar que existe o conceito de [herança](https://learn.microsoft.com/en-ie/azure/azure-resource-manager/management/lock-resources?tabs=json&ref=azurebrasil.cloud#lock-inheritance) do *lock*: c*aso* um *lock* seja aplicado, por exemplo ao grupo de recursos, todos os recursos presentes nesse grupo de recursos herdarão o mesmo *lock.*

Para esse post, vamos criar alguns *locks* em grupos de recursos e fazer alguns testes!

Primeiramente, iremos criar um *lock* diretamente pelo portal:

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/10/Group-1149-1.png)

Na aba de *locks,* vamos criar um do tipo *Delete.*

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/10/Group-1150.png)

Com o lock criado, vamos tentar [deletar](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/delete-resource-group?tabs=azure-powershell&ref=azurebrasil.cloud) o grupo de recursos criado.

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/10/Group-1151.png)

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/10/Group-1152.png)

Podemos ver que a ação de *delete* não foi executada devido ao *lock!*

Outra forma bem legal de implementar o *lock* é através do [*bicep*](https://learn.microsoft.com/pt-br/azure/azure-resource-manager/bicep/?ref=azurebrasil.cloud). Vamos criar um [*bicep module*](https://learn.microsoft.com/pt-br/azure/azure-resource-manager/bicep/modules?ref=azurebrasil.cloud) que criar um *lock.*

````
resource createRgLock 'Microsoft.Authorization/locks@2016-09-01' = {
  name: 'rgLock'
  properties: {
    level: 'CanNotDelete'
    notes: 'Resource group lock via bicep'
  }
}
```

Agora já podemos criar um grupo de recurso e aplicar o *module* criado anteriormente, passando como [*scope*](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/scope-extension-resources?ref=azurebrasil.cloud#apply-at-deployment-scope), o grupo de recursos definido. 

````
targetScope='subscription'

var rgName = 'rg-lock-bicep-eastus-prod'
var rgLocation = 'eastus'

resource resourceGroup 'Microsoft.Resources/resourceGroups@2022-09-01' = {
  name: rgName
  location: rgLocation
}

module rgLockModule './lockModule.bicep' = {
  name: 'lockDeployment'
  scope: az.resourceGroup(resourceGroup.name)
}
  
```

Nesse exemplo, vou fazer o [*deploy*](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deploy-cli?ref=azurebrasil.cloud) dos arquivos *bicep* via [VS code](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/quickstart-create-bicep-use-visual-studio-code?tabs=CLI&ref=azurebrasil.cloud).

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/10/Screen-Shot-2023-10-30-at-15.11.51.png)

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/10/Screen-Shot-2023-10-30-at-15.13.32.png)

Podemos ver que o grupo de recursos foi criado corretamente, juntamente com o *lock.*

Você já pode baixar o projeto por esse [](https://github.com/TallesValiatti/EntityFrameworkCoreJsonColumns?ref=azurebrasil.cloud)[link](https://github.com/TallesValiatti/AzureLocks?ref=azurebrasil.cloud), e não esquece de me seguir no [LinkedIn](https://www.linkedin.com/in/tallesvaliatti/?ref=azurebrasil.cloud)!

Até a próxima, abraços!