如何克隆 Azure 中的内置计划定义策略?

Posted

技术标签:

【中文标题】如何克隆 Azure 中的内置计划定义策略?【英文标题】:How to clone a built-in Initiative definition policy in Azure? 【发布时间】:2020-03-09 21:00:59 【问题描述】:

我希望能够从内置的“[预览]:审核 NIST SP 800-53 R4 控制并部署特定的 VM 扩展以支持审核要求”倡议策略中添加/删除策略。

我在 Azure 控制台或 PowerShell 中看不到执行此操作的任何选项。我想避免手动添加 798 个单独的策略。

【问题讨论】:

【参考方案1】:

根据我的测试,您可以使用该命令将策略导出到 json 文件。

$source = Get-AzPolicySetDefinition -Id "/providers/Microsoft.Authorization/policySetDefinitions/cf25b9c1-bd23-4eb6-bd2c-f4f3ac644a5f"
$source.Properties.policyDefinitions | ConvertTo-Json -Depth 3 | Out-File C:\Users\joyw\Desktop\definitions.json

您可以在 json 文件中添加/删除策略,然后按照 link 中的示例 2 创建新的自定义策略集定义。

示例

New-AzPolicySetDefinition -Name "joytest123" -PolicyDefinition C:\Users\joyw\Desktop\definitions.json -Parameter ' "logAnalyticsWorkspaceIdforVMReporting":  "type": "String" , "listOfResourceTypesWithDiagnosticLogsEnabled":  "type": "Array" , "listOfMembersToExcludeFromWindowsVMAdministratorsGroup":  "type": "String" , "listOfMembersToIncludeInWindowsVMAdministratorsGroup":  "type": "String" '

注意:与内置集定义不同,自定义策略集定义中存在500的限制,因此您需要将策略删除到至少500,否则您会出错。如果您需要使用其他策略,您可以使用两个 json 文件创建两个集合定义。

创建集合定义后,您可以使用New-AzPolicyAssignment 或在门户中分配它。

【讨论】:

不确定我是否遗漏了什么。我将策略导出到definitions.json,然后将策略分成两半以对抗 500 限制,但出现错误。 New-AzPolicySetDefinition:InvalidPolicySetDefinitionGroups:策略集定义“CustomNIST1”请求无效。引用了以下组名,但策略集中不存在:'NIST_SP_800-53_R4_IA-2(1),NIST_SP_800-53_R4_IA-2(2),NIST_SP_800-53_R4_SI-2,NIST_SP_800-53_R4_AC-4,.... @leeman24 您无法删除其他策略中引用的策略,您需要将它们放在同一个 json 文件中。

以上是关于如何克隆 Azure 中的内置计划定义策略?的主要内容,如果未能解决你的问题,请参考以下文章

20.Azure备份Azure上的虚拟机(中)

为啥 Azure 将不同的 HTML 嵌入到自定义和内置策略的自定义 UI 注册表单中?

如何使用 Terraform 在管理组范围上定义和分配 Azure 策略?

Azure DevOps - 投资组合计划(测试版) - 设置和访问

测试计划方案策略的区别

在 azure 服务结构中的有状态服务上运行计划的后台作业,以按计划时间更新可靠字典中的一些数据