使用策略来强制执行标准

已完成

你在资源组中更好地组织资源,并且已将标记应用于资源,以便在结算报告和监控解决方案中使用它们。 资源分组和标记对现有资源产生了影响,但如何确保新资源遵循规则? 我们来看看策略可以如何帮助你在 Azure 环境中强制执行标准。

什么是 Azure Policy?

Azure Policy 是一项服务,可用于创建、分配和管理策略。 这些策略应用并强制执行资源需要遵循的规则。 这些策略可以在创建资源时强制执行这些规则,并且你可针对现有资源评估这些策略,来提供有关合规性的见解。

策略可强制执行某些规则,例如仅允许创建特定类型的资源,或者仅允许特定 Azure 区域中的资源。 在 Azure 环境中,可以强制执行命名约定。 还可以强制将特定标记应用于资源。 让我们看一看策略的工作原理。

创建策略

你要确保所有资源都具有与其关联的“部门”标记;如果没有此标记,则阻止创建。 需要创建新的策略定义并将其分配给范围;在本例中,范围为 msftlearn-core-infrastructure-rg 资源组。 可以通过 Azure 门户、Azure PowerShell 或 Azure CLI 创建和分配策略。 本练习介绍在门户中创建策略的过程。

创建策略定义

  1. 如果尚未打开 Azure 门户,请在 Web 浏览器中导航至 Azure 门户。 在顶部导航栏的搜索框中,请搜索“策略”并选择“策略”服务。

  2. 在左侧菜单的“创作”部分中,选择“定义”窗格。

  3. 应看到可以使用的内置策略列表。 在本例中,你将创建自己的自定义策略。 选择顶部菜单中的“+ 策略定义”。

  4. 此按钮将调出“新建策略定义”对话框。 若要设置“定义位置”,选择蓝色“启动范围选择器(...)”。选择要存储策略的订阅,该订阅应与资源组的订阅相同。 选择“选择”按钮 。

  5. 返回“新建策略定义”对话框,在“名称”字段中输入“强制标记资源”。

  6. 对于“说明”,输入“此策略强制对资源使用标记”。

  7. 对于“类别”,选择“使用现有项”,然后选择“常规”类别。

  8. 对于“策略规则”,请删除文本框中的所有文本并粘贴以下 JSON:

    {
      "mode": "Indexed",
      "policyRule": {
        "if": {
          "field": "[concat('tags[', parameters('tagName'), ']')]",
          "exists": "false"
        },
        "then": {
          "effect": "deny"
        }
      },
      "parameters": {
        "tagName": {
          "type": "String",
          "metadata": {
            "displayName": "Tag Name",
            "description": "Name of the tag, such as 'environment'"
          }
        }
      }
    }
    

    策略定义应如以下示例所示。 选择“保存”以保存策略定义。

    Screenshot of Azure portal showing the new policy definition dialog.

创建策略分配

你已创建策略,但实际上尚未将其付诸实施。 若要启用该策略,需要创建分配。 在本例中,你将其分配到 msftlearn-core-infrastructure-rg 资源组的范围,以便它应用到该资源组中的所有内容。

  1. 在策略窗格的左侧的“创作”部分中,选择“分配”。

  2. 选择顶部的“分配策略”。

  3. 在“分配策略”窗格中,将策略分配给资源组。 对于“范围”,请选择蓝色的“启动范围选择器(...)”。选择你的订阅和 msftlearn-core-infrastructure-rg 资源组,然后选中“选择”按钮。

  4. 对于“策略定义”,请选择蓝色的“启动策略定义选取器(...)”。在“类型”下拉列表中,请选择“自定义”、选择所创建的“强制标记资源”策略,然后选择“添加”按钮。

  5. 选择屏幕顶部的“参数”选项卡。

  6. 在“参数”窗格上,输入“部门”用作标记名称。

  7. 选择“查看 + 创建”,然后选择“创建”来创建分配。

测试策略

现在,你已将策略分配到资源组,任何不使用“部门”标记创建资源的尝试都将失败。

重要

请注意,策略分配最多可能需要 30 分钟才能生效。 由于此延迟,在以下步骤中,策略验证可能会成功,但部署仍将失败。 如果发生这种情况,请留出更多时间并重试部署。

  1. 在 Azure 门户菜单上或在“主页”中,选择“创建资源”。

  2. 搜索“存储帐户”,然后选择“存储帐户”。 在结果中,选择“创建”。

  3. 选择你的订阅,然后选择“msftlearn-core-infrastructure-rg”资源组。

  4. 对于“存储帐户名称”,请为其指定你选择的名称,但请注意,该名称必须是全局唯一名称。

  5. 将其余选项保留为默认值,然后选择“审阅”。

    由于没有将“部门”标记应用于资源,对资源创建的验证将失败。 如果策略未导致验证失败,可能需要等待几分钟时间,然后才能启用该策略。

    Screenshot of Azure portal showing a policy validation failure on a new storage account without a tag.

    修复违规行为,以便可以成功部署存储帐户。

  6. 选择“创建存储帐户”窗格顶部的“标记”。

  7. 将“Department:Finance”标记添加到列表。

    Screenshot of Azure portal showing a new Department tag to add during creation.

  8. 现在,单击“审阅”。 现在应通过验证,如果选择“创建”,将创建存储帐户。

使用策略来强制执行标准

你已了解如何使用策略来确保资源具有组织资源的标记。 可还通过其他方式使用策略来为我们提供帮助。

可以使用策略来限制可将资源部署到哪些 Azure 区域。 对于受到严格监管或对数据驻留位置具有法律或法规限制的组织,策略有助于确保不会在违反这些要求的地理区域中预配资源。

可以使用策略来限制可部署哪些类型的虚拟机大小。 你可能希望在生产订阅中允许大型的 VM 大小,并确保在开发订阅中将成本降到最低。 在开发订阅中通过策略拒绝大型的 VM 大小,可以确保它们不会部署在这些环境中。

还可以使用策略来强制执行命名约定。 如果组织已对特定命名约定进行了标准化,则使用策略来强制执行这些约定有助于在 Azure 资源中保持一致的命名标准。