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.
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, resource group, ou um recurso específico. Vale comentar que existe o conceito de herança do lock: caso 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:
Na aba de locks, vamos criar um do tipo Delete.
Com o lock criado, vamos tentar deletar o grupo de recursos criado.
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. Vamos criar um bicep module 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, 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 dos arquivos bicep via VS code.
Podemos ver que o grupo de recursos foi criado corretamente, juntamente com o lock.
Você já pode baixar o projeto por esse link, e não esquece de me seguir no LinkedIn!
Até a próxima, abraços!