A common theme in cloud environments today is the ability to define templates, policies, and procedures. These templates then dictate what can be done and verify that what does exist is correct. A service from Microsoft called Azure Policy is a great way to make that happen.
在这篇文章中,您将学习Azure Policy的工作原理,然后看到如何创建各种策略和补救措施。
创建 Azure Policy
有许多创建策略的方式,例如通过 Azure 门户、PowerShell、Azure CLI 和 ARM 模板。
Azure 门户
如果您喜欢使用 GUI 路线或正在探索选项,从这里开始是对策略的一个很好的介绍。界面简单,让您一目了然地看到选项。
- 在Azure 门户内,搜索策略。
- 点击分配在编写部分下
- 点击分配策略
- 点击范围下的省略号以选择要应用的订阅,以及可选的资源组
- 点击策略定义下的省略号以选择要定义的策略
- 要么使用分配 name 下生成的默认名称,要么输入一个来唯一标识您的策略
- 根据所选择的策略,填写任何必要的参数
- 最后创建一个托管标识 and 如果需要,定义其位置

PowerShell
幸运的是,PowerShell 让将 Azure 策略定义分配给策略分配变得快速简便。有两个先决条件,即需要安装最新版本的 Azure PowerShell 并注册 Azure Policy Insights 资源提供程序。
Azure CLI
如果 PowerShell 不可用或不受欢迎,那么使用 Azure CLI 也可以实现很多相同的功能。如果您无法在所有操作系统上使用 PowerShell,则这也可能在跨平台场景中非常有帮助。
Azure 策略模板
Azure 资源管理器模板是另一种创建和分配策略到资源的方式。以下是一个起始模板,您可以使用它来选择要分配给资源组的策略作为示例。
Azure 策略分配的工作原理
在选择或创建要应用的策略定义之后,将这些定义分配到影响特定范围的地方。范围仅仅定义了策略分配将应用到的内容,比如管理或资源组。需要注意的是,策略分配会被所有子资源继承,但如果需要,您确实可以排除子范围。
示例 Azure 策略
有很多策略定义,并且很难决定何时应用最佳。那么有哪些选择,何时可能使用它们以及为什么呢?
- 需要标签及其值 – 这可用于任何数量的方式,但一个可能性是用于成本代码,或用于识别分布在多个资源组中的许多不同资源。
- 允许的资源类型 – 如果您只想允许特定资源怎么办?这可以强制执行,比如只能创建存储资源。
- 使用审计来检查 Windows 虚拟机是否有待处理的重新启动 – 或许您想知道哪些 Windows 虚拟机需要重新启动,以确保它们不被遗漏?使用此策略可以按计划查找并可能纠正那些情况。
- 审计诊断设置 – 如果未启用诊断设置,则此策略将查找不符合规定的设置。
- 应关闭虚拟机的管理端口 – 验证虚拟机的管理端口是否关闭,这是一个适用于注重安全的绝佳策略。
- 应从订阅中删除已弃用的帐户 – 对于在目录中被阻止登录的所有帐户,查找可能需要纠正的帐户。虽然这里有很多,而且每天都有更多的被创建,但您还可以通过使用简单的查询定义模式,非常强大地创建自己的自定义策略定义。使用简单的查询定义模式,您可以创建强大的 if-then 构造,定义要将策略应用于什么情况。
如何使 Azure 策略更具复用性
参数
定义参数是其中一个最有用的工具,可用于策略中。如果必须为策略中的每个变体定义唯一的策略,您可能最终会有数百个策略。解决此问题的一个很好的方法是将策略参数化。使用此功能,您可以在分配时自定义策略,并使一个策略定义适用于许多不同的用例。
倡议
下一个逻辑步骤是将多个定义收集到一个集合中。这样可以将所有这些不同的定义分配到一个范围内,而不必一遍又一遍地分配每一个。
初始参数
最后,您可以向倡议添加参数,这些参数可以继承到各个单独的策略中。这意味着您不必为包含在倡议中的每个策略单独分配参数。这样做可以节省大量时间,因为您只需定义一些倡议,然后根据所选择的参数以多种不同的方式应用许多不同的策略。
修复任务
那么当您有一个评估但发现资源不符合规定的策略时,您该怎么办?在那时,您可以启动一个修复任务来修复问题。这可能非常强大,但如果设置不正确,也可能非常危险。再次,有几种方法可以定义这些任务,可以通过 Azure 门户、PowerShell 或通过 Azure CLI。
Azure 门户
与以前一样,您可以使用 Azure 门户来探索创建修复任务。如果发现没有列出策略,请确保您既有 deployIfNotExists 策略,也有已评估为 不符合规定 的策略,否则它们将不会显示。
- 在 Azure 门户中,搜索 策略
- 点击左侧的 修复
- 点击一个类型为 deployIfNotExists 且具有 不符合规定 资源的策略
- 将要在新的整改任务页面上重新整理的资源进行筛选,以限制任务适用范围
- 点击整改开始任务本身
PowerShell
通过PowerShell创建整改任务非常简单。需要记住的主要事项是您必须使用deployIfNotExists策略。
Azure CLI
您也可以使用Azure CLI启动整改任务,而不是使用PowerShell。对于这一点,与PowerShell任务相同。
总结
使用Azure策略的强大之处在于,对于任何Azure订阅,您都可以定义任意数量的灵活策略来帮助您管理环境。此外,通过花费时间、精力和思考来构建策略、计划和参数的结构,您可以创建一个定义明确且易于整改的设置。
考虑到Azure策略对于任何Azure订阅都是免费的,花时间实施所需内容是非常有意义的。考虑到创建和部署这些定义和策略的灵活性,它几乎可以应用于任何场景,并帮助您控制环境!