Azure Policy 概念和定义

Azure Policy 是一项重要的 Azure 服务,它允许你创建、分配和管理策略,以强制执行组织标准并评估资源合规性。简单来说,它就像一个“规则检查器”和“规则执行器”,确保你的 Azure 环境始终符合预设的治理要求。

核心概念:

  1. 定义 (Definition):

    • 策略定义 (Policy Definition): 描述了要评估的条件以及满足这些条件时要执行的效果。

      • 规则: 策略的核心。它包含了逻辑表达式,用于判断资源是否符合要求。例如:“所有存储账户必须启用 HTTPS”。
      • 效果 (Effect): 定义了当规则条件满足时会发生什么。常见的效应包括:
        • Audit (审计): 记录不合规的资源,但不会阻止操作。这是最常用的评估效应,用于了解当前环境的合规性状况。
        • Deny (拒绝): 阻止创建或更新不合规的资源。这是最严格的效应,用于强制执行关键标准。
        • Disabled (禁用): 暂时禁用策略。
        • DeployIfNotExists (如果不存在则部署): 当满足条件时,自动部署一个资源或模板。例如,如果资源组中没有特定的 Log Analytics 工作区,则自动部署它。
        • Modify (修改): 允许你修改现有资源的属性。例如,为所有虚拟机强制添加特定标签。
        • Append (追加): 在资源创建或更新时,为资源追加指定的字段(例如,添加标签)。
        • AuditIfNotExists (如果不存在则审计): 当满足条件时,审计不满足要求的相关资源。
    • 计划定义 (Initiative Definition) 或 策略集 (Policy Set): 是一组相关的策略定义。它允许你将多个策略作为一个单一的单元进行分配。例如,一个“成本管理计划”可能包含“所有虚拟机必须有成本中心标签”、“所有存储账户必须使用热存储层”等多个策略。

  2. 分配 (Assignment):

    • 将策略定义或计划定义应用到特定的作用域(Scope)。
    • 作用域: 可以是管理组、订阅、资源组或单个资源。策略会继承到所有子级作用域。
    • 参数: 某些策略定义可能包含参数,允许你在分配时定制策略行为。例如,一个策略定义可以接受一个参数来指定允许的区域列表,这样你在不同订阅分配时可以设置不同的区域限制。
  3. 合规性 (Compliance):

    • 一旦策略被分配,Azure Policy 会持续评估你的资源,以确定它们是否符合策略。
    • 你可以在 Azure 门户中查看合规性仪表板,了解哪些资源不合规,以及不合规的原因。
    • 对于 Audit 效应的策略,不合规的资源会被标记出来,但不会阻止其操作。
    • 对于 Deny 效应的策略,不合规的操作会被直接阻止。

使用场景/优势:

  • 强制执行标准:

    • 安全性: 强制所有虚拟机都必须加密;要求所有存储账户都启用安全的网络访问;限制只有批准的 VM 镜像才能使用。
    • 成本管理: 强制所有资源都必须有“成本中心”和“项目”标签;限制只能在特定区域创建资源;要求使用特定 SKU 的资源。
    • 合规性: 确保所有资源都符合行业法规(如 GDPR、HIPAA)或内部治理要求。
    • 资源一致性: 确保所有资源都有相同的命名约定或标签。
  • 自动化部署和配置:

    • 使用 DeployIfNotExists 效应,可以自动部署诊断设置到所有新创建的资源,或者确保所有资源都连接到特定的 Log Analytics 工作区。
    • 使用 Modify 效应,可以自动修复不合规的标签或设置。
  • 提高可见性:

    • 通过审计效应,你可以清楚地了解当前环境的合规性状况,识别出需要改进的区域。

如何使用 Azure Policy (以 Azure 门户为例):

  1. 创建或选择策略定义:

    • 在 Azure 门户搜索“Policy”,进入“Policy”服务。
    • 在左侧菜单选择“定义 (Definitions)”。
    • 你可以选择一个内置定义(Azure 提供了数百个内置定义),或者点击“+ 策略定义”来创建自定义定义(使用 JSON 格式编写)。
    • 如果需要管理多个相关策略,可以创建“计划定义 (Initiative Definition)”。
  2. 分配策略或计划:

    • 在左侧菜单选择“分配 (Assignments)”。
    • 点击“分配策略 (Assign policy)”或“分配计划 (Assign initiative)”。
    • 选择作用域: 选择要应用策略的管理组、订阅或资源组。
    • 选择策略定义: 找到你之前选择或创建的策略或计划定义。
    • 配置参数: 如果策略定义有参数,在此处填写。
    • 配置修复任务 (可选): 对于 DeployIfNotExistsModify 效应的策略,你可以选择创建修复任务来自动修复现有不合规的资源。
    • 指定排除项 (可选): 如果某些特定的资源或资源组应该豁免于此策略,可以在此处添加。
    • 点击“创建 (Create)”。
  3. 查看合规性:

    • 策略分配后,Azure Policy 会在短时间内(通常是 15-30 分钟)开始评估资源。
    • 在左侧菜单选择“合规性 (Compliance)”。
    • 你可以看到已分配策略的列表,以及每个策略的合规性百分比。点击策略可以深入查看不合规的资源详情。

总结:

Azure Policy 是 Azure 治理的核心组件,它通过定义规则、强制执行标准和评估合规性,帮助组织构建一个结构良好、安全合规且成本优化的云环境。它是实现“策略即代码”和持续合规性的关键工具。