Azure只读策略的创建与应用

32次阅读
没有评论

问题描述

在Azure中希望创建一个策略,以防止特定用户排除某组资源,但是他已经尝试了一些方法,似乎没有起作用,他想知道问题出在哪里。以下代码是他在命令行中执行的操作。

创建资源组

az group create --name demoResourceGroup --location eastus

创建策略

az policy definition create --name escrever --subscription "Azure subscription 1" --rules "{ \"if\": \    { \"field\": \"type\", \"equals\": \"Microsoft.Resources/resourceGroups/write\" }, \        \"then\": { \"effect\": \"deny\" } }"az policy definition create --name deletar --subscription "Azure subscription 1" --rules "{ \"if\": \    { \"field\": \"type\", \"equals\": \"Microsoft.Resources/resourceGroups/delete\" }, \        \"then\": { \"effect\": \"deny\" } }"

将策略分配给资源组

az policy assignment create --name myPolicy1 --policy escrever --policy deletar -g demoResourceGroup

解决方案

请注意以下操作注意版本差异及修改前做好备份。

步骤1:创建策略定义

首先,我们需要创建两个策略定义,一个用于阻止对资源组的写入操作,另一个用于阻止资源组的删除操作。我们可以使用Azure CLI来执行此操作。

阻止资源组的写入操作

az policy definition create --name bloquear-escrever --subscription "Azure subscription 1" --rules "{ \"if\": { \"field\": \"type\", \"equals\": \"Microsoft.Resources/resourceGroups/write\" }, \"then\": { \"effect\": \"deny\" } }"

阻止资源组的删除操作

az policy definition create --name bloquear-deletar --subscription "Azure subscription 1" --rules "{ \"if\": { \"field\": \"type\", \"equals\": \"Microsoft.Resources/resourceGroups/delete\" }, \"then\": { \"effect\": \"deny\" } }"

步骤2:将策略分配给资源组

现在,我们已经创建了策略定义,接下来将这些策略分配给目标资源组。

az policy assignment create --name myPolicy1 --policy bloquear-escrever --policy bloquear-deletar -g demoResourceGroup

现在,策略已经分配给了资源组,并且应该会阻止指定用户对该资源组的写入和删除操作。请注意,这些策略需要一定时间才能生效,因此可能需要等待一段时间才能验证其效果。

步骤3:验证策略

等待一段时间后,验证策略是否生效。尝试执行以下操作:
1. 尝试对资源组执行写入操作,例如创建一个新的资源或修改资源组属性。如果策略生效,这些操作应该被拒绝。
2. 尝试删除资源组。如果策略生效,应该会拒绝删除操作。

请确保使用与目标用户相同的订阅和权限进行验证。如果策略未生效或出现其他问题,请确保策略定义名称、订阅和资源组名称正确,并检查Azure CLI中是否有任何错误消息。

备注

如果你的策略未生效,可以考虑以下几点:
1. 策略定义的名称是否与分配时使用的名称一致。
2. 检查目标资源组的名称和位置是否正确。
3. 等待一段时间以确保策略在Azure中生效。有时策略需要一些时间才能在所有相关资源上生效。

以上就是在Azure中创建并应用只读策略的步骤。希望这些步骤对你有所帮助!

正文完