很多客户一直在想提高其Azure订阅的安全性。想保护一些资源免遭意外删除,比如,NSG的规则不会被意外的更改。为了实现这一点,我们一般会推荐他们使用Azure管理锁。Azure管理锁有两种不同的级别,分别为“Read-Only”和“Delete”。

CanNotDelete(Delete): 是指授权用户仍然具有对资源的读取和修改访问权限,但无法删除资源。(这取决于用户的角色)

Read-Only(Read-Only):指授权用户只能读取资源。他们将不能修改或删除资源。此锁类似于将所有授权用户限制为Reader角色。

我们可以在订阅级别、资源组级别或单个资源上应用锁。如果在订阅级别设置了锁,订阅中的所有资源(包括稍后添加的资源)都继承相同的锁。资源组级别也是如此。

说到这里可能就会有朋友要问什么角色可以创建或删除资源锁:要创建或删除管理锁,我们必须具有访问权限Microsoft.Authorization/*或Microsoft.Authorization/locks/*操作权限。在内置角色中,只有所有者和用户访问管理员被授予这些操作。


创建资源锁的方式有很多,可以在使用ARM模板创建资源时创建锁,也可以使用Azure 门户或PowerShell创建锁。下面我将向大家展示Portal方法和PowerShell方法。

使用Azure Portal创建资源锁:

导航到要添加锁定的资源,资源组或订阅。在“设置”刀片下点击“锁”:

使用管理锁管理Azure资源_第1张图片

点击“添加”:

使用管理锁管理Azure资源_第2张图片

键入“锁定名”称并选择锁定级别(删除或只读),输入说明。然后单击确定。

使用管理锁管理Azure资源_第3张图片

创建完成以后如下图所示:

使用管理锁管理Azure资源_第4张图片

如果要删除锁定,可以单击省略号“...”并单击选项中的“删除”:

使用管理锁管理Azure资源_第5张图片

使用PowerShell创建资源锁

要锁定资源组,可以使用以下cmdlet。只要确保您更改顶部的变量以匹配资源即可。我们还可以将Lock Level更改为Read-Only

$LockName = "DemoLock"

$RGName ="PBI-RG"

New-AzureRmResourceLock -LockName $LockName -LockLevel CanNotDelete -ResourceGroupName $RGName

使用管理锁管理Azure资源_第6张图片

使用管理锁管理Azure资源_第7张图片

可以使用以下cmdlet删除资源组上的锁。

使用管理锁管理Azure资源_第8张图片

聊了这么多相信大家已经知道了什么是资源锁,以及如何使用PowerShell和门户创建和删除它们。通过使用锁,我们可以设置额外的防护,以防止意外或恶意更改/删除Azure资源。