Azure Local离线模式Azure Policy(系列篇十五)
特别说明由于Azure Local离线模式OEM商用版还未发布微软也对一些技术未正式公开新发布的时候技术上会有一些出入到时作者交会更新博客不准确的描述。Azure Local 离线版的OEM商业正式版预估在2026年年底或2027年年初发布。0. 关键事实Azure Local Disconnected Operations 的 Azure Policy 与 Azure 公有云 Policy不是同一套完整实现——主要差异维度Azure 公有云 PolicyAzure Local Disconnected Policy范围全 Azure Resource Provider仅 Arc-enabled Kubernetes Arc-enabled Servers内置 Policy 数数千当前仅数十Tags AKS Guest Configuration自定义 Policy Definition✔❌ 不支持官方未说明Compliance Dashboard✔❌ 不支持Remediation Actions✔❌ 不支持Policy Exemptions✔❌ 不支持Policy 评估周期默认 24h官方未说明⚠️ 上表中❌ 不支持项均直接引用 Microsoft Learn 当前文档——这不是推测。1. Policy 范围✅ 官方要求Microsoft Learn 原文In Azure Local disconnected operations, policy enforcement supports Arc-enabled Kubernetes and Arc-enabled servers.✔ 仅生效于Arc-enabled Kubernetes✔ 仅生效于Arc-enabled Servers❌不生效于原生 Azure 服务Storage、Compute 等大部分 技术分析虽然原文未明确说明 Policy Engine 的内部架构但从整体设计可推断Azure Policy Engine并不是完整 Azure 公有云 Policy是 Azure Local Offline Control Plane 中集成的一部分 Policy Runtime仅支持目前列出的资源类型Arc-enabled 资源Azure Local 没有 Azure Storage Account、Azure VM、Azure SQL 等 Azure Resource Provider。 因此 Azure 公有云中大量针对 Compute / Storage / Networking Resource Provider 的 Policy Definition 不适用于离线模式。 企业最佳实践不要把公有云 Policy Definition 直接套用到 disconnected 环境关注内置 Policy 列表时只看 Tag / AKS / Guest Configuration三个类别不要假设公用 Policy Definition 通过 manifest 也能导入——官方未说明2. 内置 Policy Definition✅ 官方要求离线模式部署自带一批内置 Policy Definition。Microsoft Learn 原文关于 built-in policies 章节 The following table summarizes the built-in policies supported for Azure Local disconnected operations.Microsoft Learn 文档明确归类的三个 Category2.1 Category: Tags16 项子组Policy关键行为Add or replaceAdd or replace a tag on resources创建/更新时增/改 tag可触发 remediation不动 RGAdd or replace a tag on resource groups创建/更新 RG 时增/改 tagAdd or replace a tag on subscriptions通过 remediation 增/改订阅 tagAddAdd a tag to resources仅对缺失该 tag 的资源新增存在但值不同则不改Add a tag to resource groups同上仅对 RGAdd a tag to subscriptions通过 remediation 新增订阅 tagInherit (replace)Inherit a tag from the resource group从 RG 继承可触发 remediationInherit (if missing)Inherit a tag from the subscription if missing缺失时从 subscription 继承Inherit a tag from the resource group if missing缺失时从 RG 继承AppendAppend a tag and its value from the resource group追加 tag不修改已有 tag 的值Append a tag and its value to resources追加不影响 RGAppend a tag and its value to resource groups追加到 RGRequireRequire a tag and its value on resources强制 tag 值Require a tag on resources强制存在性Require a tag and its value on resource groups强制 RG tag 值Require a tag on resource groups强制 RG 存在性⚠️重要上述表格中所有提到remediation task / can be remediated的描述直接沿用 Azure 公有云 Policy 描述——但 Azure Local Disconnected 明确将 Remediation Actions 列为Unsupported Features详见 §5。因此这些描述不能用来推断离线模式支持 Remediation。2.2 Category: Azure Kubernetes Service3 项Policy说明Kubernetes cluster containers CPU and memory resource limits shouldnt exceed the specified limits限制容器 CPU/内存上限GA for AKSPreview for Arc K8sKubernetes cluster containers should only use allowed images仅允许可信镜像Kubernetes cluster pod hostPath volumes should only use allowed host paths限制 hostPath 挂载2.3 Category: Guest configuration6 项Policy说明Configure Linux Server to disable local users创建 Guest Configuration assignment禁用本地用户Configure secure communication protocols (TLS 1.2/1.3) on Windows serversWindows TLS 协议配置Configure time zone on Windows machinesWindows 时区配置Requires resources to not have a specific tag反向 tag 约束Inherit a tag from the subscription从 subscription 继承 tagWindows web servers should be configured to use secure communication protocolsWindows Web Server TLS 配置⚠️不再有Allowed Locations / Allowed SKUs 类别——官方最新文档2602已无此分类。也不要假设内置 Policy 列表是封闭的——发布版本可能新增。 技术分析内置 Policy 共16 3 6 25 项截至 2606实际数量可能随 Azure Local 后续 release 调整全部由 Azure Local Disconnecteddeployment 自带——不需要额外安装 企业最佳实践直接使用这 25 项内置 Policy 即可覆盖大多数治理诉求Tag 治理是首要落地场景合规、分账、追踪AKS 治理是 K8s 场景的强制项resource limits allowed images hostPathGuest Configuration适合 OS 加固场景Linux 禁用本地用户、Windows TLS / 时区3. 启用 Policy 流程示例强制 RG tag✅ 官方要求Microsoft Learn 原文步骤3.1 Set up the basics本地 portal →PolicyAuthoring→Assignments→ Assign policy填Scope/Policy definition/Assignment namePolicy enforcementEnabledParameters进入下一步3.2 Set the parametersTag name 必填选 tag 名字 →Review create结果任何没带该 tag 的资源组都无法创建。 技术分析与 Azure 公有云的 Assignment model底层类似区别在于 enforcement 后的动作——详见 §5 企业最佳实践从 RG 强制 tag 入手——这是最低风险、最高收益的起点Scope 选择先用 Subscription 根 scope再逐步收窄到 RGEnforcement 模式Enabled强制 阻止不合规创建Disabledaudit 仅记录不合规——用于先观察再强制4. 前置条件✅ 官方要求条件说明已部署 Azure Local disconnected operations必须已查看 Supported built-in policies 列表推荐选定要 assignment 的 Policy Definition必须 企业最佳实践先做 Tag 治理所有 RG 必须带CostCenter/Environment/Owner再做 AKS 治理开启 resource limits allowed images最后做 Guest ConfigurationOS 加固是质量更高的运营动作优先级排在后5. ⚠️ Unsupported Features最关键的一节Microsoft Learn 原文Latest 2602Unsupported featuresThe compliance dashboard, remediation actions, and policy exemptions arent supported.官方明文不支持的功能功能状态说明Compliance Dashboard❌不支持不提供合规性可视化仪表板Remediation Actions❌不支持不提供自动修复即使 Built-in 描述沿用了can be remediated的措辞Policy Exemptions❌不支持不提供豁免机制 技术分析关键判定很多 Built-in Policy 描述中保留了Existing resources can be remediated by triggering a remediation task.这是因为 Built-in Policy直接引用 Azure 公有云 Policy 描述不能凭此推断 Azure Local Disconnected 支持 Remediation✔ 准确表述虽然 Built-in Policy 描述沿用了 Azure Policy 的 Remediation 能力但 Azure Local Disconnected 当前版本明确将 Remediation Actions 列为 Unsupported Features因此目前无法自动执行 Remediation Task。 企业最佳实践不要依赖Remediation Action不要设计先部署、不合规再自动修复的流程改走先 enforcement / 阻止创建 手动对齐的路径Compliance 缺口缺失 Compliance Dashboard → 用本地脚本聚合CLI 周期性 export替代Exemption 缺口缺失 Policy Exemptions → 用单独 Group / Scope 隔离替代——把已知不合规资源放在独立 scope不要通过 Policy 自身豁免6. 已知开放问题官方未明示——本研究工程推断⚠️ 以下项目官方文档未说明——仅供企业部署时参考不要替微软做未来承诺。6.1 自定义 Policy DefinitionCustom Policy Definition❌官方完全未提支持 Import Custom PolicyAzure 公有云通过Microsoft.Authorization/policyDefinitions支持自定义 Policy DefinitionAzure Local Disconnected Operations 是否开放官方没有任何文档说明❌不能推测支持✔ 准确表述官方尚未说明是否支持导入自定义 Policy Definition目前文档仅说明支持内置 Policy。6.2 Policy Evaluation评估周期公有云默认 24h 评估周期Azure Local Disconnected Operations 是否一致官方没有说明可能模式Event Driven / Local Scheduler / Resource Change Trigger不能推测✔ 准确表述官方尚未公开离线模式下的 Policy Evaluation 调度机制。6.3 Assignment 数量上限官方未提供任何关于 Assignment 数量的数据不要猜测每 scope 几十到几百✔ 准确表述官方未公布 Assignment 数量上限。6.4 Portal 已知问题来自 Known Issues 文档Policy portal 存在已知问题推荐使用CLI / PowerShell替代。6.5 未 Arc 化资源是否被纳管官方明确支持Arc-enabled Kubernetes Arc-enabled Servers❓官方未说明未 Arc 化的 Azure Local 基础设施资源是否纳入 Policy 管理范围不替代微软做推断✔ 准确表述当前官方仅声明支持 Arc-enabled Kubernetes 与 Arc-enabled Servers尚未说明未 Arc 化的 Azure Local 基础设施资源是否纳入 Azure Policy 管理范围。7. 官方要求 vs 企业建议 对照表维度官方要求企业建议非微软强制Policy 范围Arc-enabled Kubernetes Arc-enabled Servers不要把公有云 Policy Definition 直接套用内置 Policy25 项Tags / AKS / Guest Configuration不要假设Allowed Locations / SKUs 等类别仍然支持启用流程Portal Policy → Assignments → Assign policy永远配 ACLTag → AKS → Guest Configuration 三阶段Remediation Actions❌ 不支持不要设计先创建不合规、再 remediation的流程改走enforcement 手动对齐Compliance Dashboard❌ 不支持本地脚本聚合 compliance 状态作为替代Policy Exemptions❌ 不支持用独立 scope隔离已知不合规资源不靠 Policy 自身豁免Custom Policy Definition官方未说明不替微软承诺支持按仅 25 项内置规划Evaluation 周期官方未说明不假设24h按 event-driven 或在测试集群观察Assignment 数量官方未公布不假设数量上限按业务需求走未 Arc 化资源官方未说明先 Arc 化再纳管为最稳路径8. 关键 takeawayAzure Local Disconnected Operations 的 Azure Policy✔ 是 Azure Policy 的子集✔ 偏向创建时策略控制Enforcement✔ 适合配置一致性约束Governance❌不是 Azure 公有云中的完整 Policy 合规治理平台无 Compliance Dashboard / Remediation / Exemptions因此企业级落地路径优先用 Tag 治理最低风险、最高 ROIAKS / K8s 治理用 K8s 专用 PolicyGuest ConfigurationOS 加固路径最长Compliance 跟踪改走本地脚本聚合 周期性报告——不依赖Azure Dashboard不要假设 Remediation / Exemptions——所有自动修复 / 豁免路径改为预防 手动