首页 > 解决方案 > 分配 Azure 策略和多个订阅的问题

问题描述

我在使用涉及多个订阅的 logAnalytics 参数分配内置策略之一时遇到了一些问题。我需要用代码来做。这是我尝试完成它的方法。

获取对要分配的内置策略定义的引用

$definition = Get-AzPolicyDefinition | Where-Object { $_.Properties.DisplayName -eq 'Deploy Log Analytics agent for Windows VMs' }

$parameter = @{
    logAnalytics = '<resourceId to my logAnalytics workspace>'
}

使用针对您的资源组的内置定义创建策略分配

New-AzPolicyAssignment -Name 'Deploy LA Agent Windows VMs' -DisplayName 'Deploy LA Agent Windows VMs' -Scope "/subscriptions/<my subscriptionId" -PolicyDefinition $definition -AssignIdentity -Location 'norwayeast' -PolicyParameterObject $parameter

如果我将策略分配给 logAnalytics 工作区所在的同一订阅,则此代码可以正常工作,但如果我将策略分配范围限定为另一个订阅,然后在门户中检查分配,则 Log Analytics 工作区参数将为空。运行这些命令的服务主体是两个订阅的所有者。

标签: azureazure-log-analyticsazure-policy

解决方案


跨多个订阅应用策略的最直接方式是使它们成为管理组的一部分。您可以将策略应用于管理组,并且作为成员的每个订阅都将继承它。

可以在此处找到有关管理组的更多信息: https ://docs.microsoft.com/en-us/azure/governance/management-groups/overview

使用管理组修改代码:

New-AzPolicyAssignment -Name 'Deploy LA Agent Windows VMs' -DisplayName 'Deploy LA Agent Windows VMs' -Scope "/providers/Microsoft.Management/managementGroups/managementGroup001" -PolicyDefinition $definition -AssignIdentity -Location 'norwayeast' -PolicyParameterObject $parameter

笔记

  • 在运行任何命令之前,您需要创建一个管理组并向其添加订阅。
  • 将订阅分配给现有管理组可能会产生不利影响,请检查是否存在冲突。
  • 由于名称的长度限制为 24 个字符,因此可能会产生关于所用名称长度的错误。您应该缩短或缩写它们。
  • 尚未测试此代码,因此请在您自己的环境中运行之前通过查看 Microsoft 网站上的文档进行仔细检查。

推荐阅读