Azure Policy 0.2.4
Azure Policy Visual Studio Code 扩展:简化 Azure 环境的政策管理和创作
Azure Policy 是一款强大的工具,用于在您的 Azure 环境中执行标准和大规模评估合规性。Azure Policy Visual Studio Code 扩展旨在简化资源管理模式政策定义和分配的管理与创作过程。
概览:
Azure Policy Visual Studio Code 扩展通过将政策定义、分配、倡议以及您的资源以 JSON 格式呈现在便捷的树视图中,简化了查找、理解和创作政策的体验。您可以快速浏览资源及其别名,发现可用的别名,并针对特定资源评估政策合规性。此外,您还可以从约束模板 YAML 文件快速生成 Azure Policy 定义,用于 Azure 启用的 Kubernetes 集群。
注意:Azure Policy Visual Studio Code 扩展仅支持评估资源管理模式政策。某些命名空间还支持资源提供者模式政策,但扩展目前不支持此类政策的评估。我们正在研究支持这种情况的方法。
新功能:
我们推出了一款新工具:从约束模板 YAML 创建 Azure Policy 定义。为 Kubernetes 创作政策可能非常困难,特别是对于来自 Kubernetes 背景的用户。如果您熟悉 Gatekeeper 约束模板,并希望通过 Azure 监控 Kubernetes 集群的合规状态并执行政策,您可以通过从约束模板生成 Azure Policy 来开始。一旦政策生成,只需填写缺失的部分,并像处理任何其他类型的 Azure Policy 一样在 Azure 中创建政策定义。
如何使用 Azure Policy 扩展:
Azure Policy VSCode 扩展是开发政策定义的有用工具。主要有两种使用场景:查看资源或政策对象的 JSON 内容,以及评估政策定义对资源的影响。
查看资源
在左上角的“资源”树视图中,每个订阅下有两个文件夹:“资源提供者”和“资源组”。“资源提供者”下的资源按注册到该订阅的资源提供者(如“Microsoft.Compute”或“Microsoft.Network”)分类。此视图显示所有资源,包括代理资源,按资源提供者命名空间和资源类型层次结构组织。“资源组”下的资源按资源组分类。此视图仅显示跟踪资源(属于资源组的资源)。要查看代理资源,您需要浏览到“资源提供者”文件夹下的资源类型。
选择一个资源会在右侧的编辑器选项卡中显示其 JSON 内容。默认情况下,它将以预览模式打开,这意味着当树视图中选择另一个节点时,新资源的内容将替换前一个内容在同一编辑器选项卡中。如果您希望在导航离开后保持特定资源的选项卡打开,请在树视图中的项目上选择“将此资源固定在选项卡中”命令。如果您想保存和/或编辑资源的副本,请使用“将此资源另存为...”命令。编辑资源是测试不同资源值上的政策合规性评估的快速方法。
查看政策定义、分配和倡议
在中间左侧的“政策”树视图中,每个订阅下有四个文件夹:“分配”、“内置定义”、“自定义定义”和“倡议”。此视图显示给定订阅的所有政策对象,按这些类型分类。
与查看资源类似,选择树视图中的政策项目会在右侧的选项卡中显示其 JSON 内容。政策树视图项目具有类似的命令:“将此政策项目固定在选项卡中”和“将此政策项目另存为...”,用于保持项目在其选项卡中或将其保存到文件以便单独存储或编辑。当您对政策定义的内容满意时,可以将其复制到剪贴板并粘贴到门户中以创建新政策或更新现有政策。
在编辑政策定义时发现别名
以前,您必须具有包含特定属性的给定资源类型的实例才能发现其属性的别名,或从命令行运行 Powershell cmdlet。现在,您可以在编辑政策定义时内联发现别名。只需在“field”: 关键字后开始输入,全完成列表将显示可用的匹配字段,包括政策别名。
查看政策对资源的评估结果
在左下角的“评估”视图中,您将看到当前打开的资源和政策项目列表。该视图内的命令允许您选择政策定义和资源进行评估。如果政策定义需要参数值,您还需要选择分配以提供参数值。如果政策定义效果为 DeployIfNotExists 或 AuditIfNotExists,您还需要选择相关资源进行存在检查。选择这些项目后,在评估窗格右上角运行“评估政策选择对资源选择”命令以获取评估结果。
测试政策定义或资源的本地更改
您可以使用“另存为”命令将任何政策项目或资源保存到本地文件,并继续将其用于政策内循环测试。随着您对政策定义或资源进行更改,您可以立即重新评估资源的合规性,而无需在 Azure 中更新政策并等待 Azure Policy 服务每次执行合规性评估。
这对于尝试不同的参数值特别有帮助。首先将政策分配保存到文件,然后在手动编辑后使用它进行评估以尝试不同的值。这也是一种无需创建新政策分配即可添加和删除参数值的简单方法。
在您对政策定义的操作满意后,可以将其复制粘贴到 Azure Policy 门户中以在 Azure 中更新。
理解评估结果
评估结果包含与真实服务中返回的评估相同的 JSON 信息。主要要查看的是“policyEvaluations”数组,通常包含 0 或 1 个对象。没有政策评估意味着政策不适用于该资源。一个政策评估通常包含“evaluationResult”值为 Compliant 或 NonCompliant 以及有关评估的政策的一些详细信息。“modifiedFields”表示政策将更新哪些字段(如果有的话),而“updatedRequestContent”给出政策更新后的完整资源。消息数组用于内部调试,可以忽略。如果评估失败,消息字段包含有关失败的所有可用信息。
从约束模板生成 Azure Policy 定义
要从约束模板生成 Azure Policy 定义,请在编辑器中打开您的约束模板 YAML 文件,选择“查看” -> “命令面板”,并选择“Azure Policy for Kubernetes: 从约束模板创建政策定义”。将出现一个带有约束模板来源类型的选项的第二面板。如果您希望通过公共 url 引用您的约束模板,请选择“PublicURL”。如果您希望将您的约束模板作为 base 64 编码字符串嵌入到新生成的政策定义 JSON 中,请选择“Base64Encoded”。生成政策定义后,请确保填写所有带有“/ EDIT HERE /”提示的缺失属性。像处理任何其他 Azure Policy 一样创建和分配政策定义。
功能总结:
- 查看资源和政策内容
- 选择树视图节点以在右侧的只读选项卡中查看资源或政策对象的内容。
- 使用“另存为”树视图命令将任何项目保存为可读写的副本到文件中。
- 使用固定树视图命令保持项目在其自己的编辑器选项卡中。
- 测试政策定义对资源的合规性评估
- 评估窗格显示当前打开的项目。
- 选择政策定义和资源进行评估。
- 如果定义需要参数值,还选择政策分配。
- 如果定义的效果为 DeployIfNotExists 或 AuditIfNotExists,还选择相关资源。
- 在 VSCode 中运行评估命令以查看评估结果。
- 快速查看别名
- 悬停在资源属性或值上以发现属性的别名。
- 树视图
- 在订阅级别以层次结构视图查看资源和政策定义、分配和倡议。
- 在命令面板中搜索资源和政策。
- 设置以选择四种不同的资源过滤视图
- 按任何别名过滤:在“资源提供者”下仅显示具有发布的政策别名的命名空间和资源类型。这比按现有资源过滤更快,但包括订阅中没有实例的类型的空文件夹。
- 按现有资源过滤:在“资源”树视图中仅显示实际包含资源的命名空间、资源类型和资源组(没有空文件夹)。当仅启用此设置时,在会话中首次打开“资源提供者”文件夹时,需要查询每个资源类型以查找实例。这可能取决于订阅中存在的资源数量和类型而花费很长时间。
- 两种过滤器结合在一起:这是显示所有具有发布的别名和订阅中实例的命名空间和类型的默认设置。启用两种过滤器后,打开“资源提供者”文件夹的时间可能介于单独应用任一过滤器之间,因为需要查询的资源类型较少。
- 不使用上述过滤器:禁用所有过滤后,“资源提供者”文件夹将快速打开,但会包含许多空文件夹。这在查找已知命名空间和类型的资源时可能更可取。
- Azure Policy for Kubernetes
- 使用“PublicURL”约束模板来源类型从约束模板创建政策定义。
- 使用“Base64Encoded”约束模板来源类型从约束模板创建政策定义。
注意事项:
- 安装扩展后,重新加载至关重要。有时会报告评估失败或扩展中的其他部分失败,这些问题在卸载并重新安装后得到纠正。如果您遇到此类问题并且重新安装不能解决问题,请尝试以下步骤:
- 卸载扩展
- 退出 VSCode(所有实例)
- 确保没有运行的 Server 或 PolicyLanguageServer 进程
- 启动 VSCode
- 安装扩展
- 提示时重新加载或如果未提示则退出并重新启动 VSCode
- 重试扩展
- 此扩展仅显示树视图中显示的对象,它不支持在 Azure 中创建对象或更新现有对象。在某些情况下,所显示的内容可用于其他 Azure 界面以创建或修改资源。例如,政策定义内容可以在进行一些修改后粘贴到 Azure 门户或命令行中以创建或更新现有政策。
- 引用资源的树视图节点在选择时将在选项卡中打开。其他是结构性的,可以展开或关闭。在“资源提供者”文件夹下,许多节点都具有这两种功能,因为它们代表资源,但也可能包含子类型。
- 如果您之前从未从 Visual Studio Code 登录到 Azure,您需要登录。登录后,您还可以按订阅过滤。要登录,请选择“查看” -> “命令面板”,并选择“Azure: 登录”。要过滤订阅,请选择“Azure: 选择订阅”命令。
- 评估窗格跟踪打开的选项卡。在导航任一树视图时,当您选择评估区域中的项目进行评估时,它也将被固定,因此导航到不同的树节点不会关闭它。
- 有时关闭选项卡不会立即从评估区域中删除它。这是由于 VSCode 即使在所有选项卡关闭后也会一段时间保持文档打开(但隐藏)。此行为无法从扩展中覆盖。
兼容性:
此扩展需要 VSCode 1.58.0 或更高版本。支持的操作系统(架构):
- Windows (x64)
- macOS (x64)
- Linux (x64)
然而,请参阅下面的已知问题以了解当前限制。
相关链接:
Visual Studio Code 扩展文档:https://docs.microsoft.com/azure/governance/policy/how-to/extension-for-vscode
依赖项:
此扩展需要并自动安装两个其他扩展:
- Azure Account - https://github.com/microsoft/vscode-azure-account
- Azure Resource Manager - https://github.com/Microsoft/vscode-azurearmtools
我们正在进行的工作:
- 政策结构语法高亮
- 政策和别名验证
- 其他评估功能
- 评估倡议
- 对资源组评估政策
想法、功能请求和错误:发送邮件至 policy-vscode@microsoft.com!我们对所有想法持开放态度,我们希望消除错误!
已知问题:
关于某些 M1 处理器的 Mac 模型上功能有限的报告
此问题仍在调查中
发布历史:
请参阅此扩展的变更日志
遥测:
Visual Studio Code 收集使用数据并将其发送给 Microsoft,以帮助改进我们的产品和服务。阅读我们的隐私声明以了解更多信息。如果您不希望向 Microsoft 发送使用数据,您可以将 telemetry.enableTelemetry 设置为 false。在我们的 FAQ 中了解更多信息。
许可证:
此扩展根据 MIT 许可证授权。通过下载和使用 Visual Studio Azure Policy 扩展及其相关组件,您同意产品许可条款和隐私声明。
-
- Golang云原生架构师课程
- Go是一门并发支持、垃圾回收的编译型系统编程语言;本课程转载自哔哩哔哩:https://www.bilibili.com/video/BV1Mh411M7A
- 204次学习
-
- MySQL数据管理之备份恢复案例解析视频教程
- 《MySQL数据管理之备份恢复案例解析视频教程》MySQL是一个开放源码的小型关联式数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
- 160次学习
-
- MySQL索引优化解决方案
- 本套课程是根据MySQL索引的设计理念与数据结构、索引使用场景、索引分类、索引运用场景、索引性能分析、查询优化、MySQL索引的慢查询等组成,主要讲述了MySQL索引优化的解决方案,非常适合有MySQL使用基础或者有一定工作经验的同学。课程讲解了解决大数量查询慢的问题、如何编写一个高效的SQL、查询语句应该如何优化、索引的实现原理是什么、索引又应该如何优化...等诸多SQL索引优化的难点和面试点。
- 182次学习
-
- 极客学院Docker视频教程
- Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是各大厂商的支持,都使Docker成为了时下最受关注的技术,甚至微软都声称在下一代WindowsServer中集成对Docker的支持。所以我们收集了《极客学院Docke
- 243次学习
-
- Golang进阶实战编程
- 本课程是在《Go语言基础视频》基础之上录制的,是Go语言基础的后半部分。包括包的管理,IO操作,Go语言最大的亮点:高并发,goroutine,channel,反射等。本视频主要为了帮助Go语言的初学者,从零到一的快速入门。学完本套课程,可以学会如果通过包管理Go项目,并发模型,以及并发实现,channel通道如何传递数据,反射等等。
- 127次学习
-
- JavaScript极速入门
- 本套课程将帮助大家迅速掌握JavaScript这门高端的、动态的、弱类型编程语言。知识点简单明了,让你学习0压力,适合新手观看学习......
- 431次学习
-
- Golangmap实践及实现原理解析
- 2022-12-28 505浏览
-
- GoLand调式动态执行代码
- 2023-01-13 502浏览
-
- 试了下Golang实现try catch的方法
- 2022-12-27 502浏览
-
- 用Nginx反向代理部署go写的网站。
- 2023-01-17 502浏览
-
- MySQL主从切换的超详细步骤
- 2023-01-01 501浏览
-
- Mysql-普通索引的 change buffer
- 2023-01-25 501浏览