保护资源层次结构

资源、资源组、订阅、管理组和租户构成了资源层次结构。 根管理组(如 Azure 自定义角色或策略分配)的设置可能会影响资源层次结构中的每个资源。 保护资源层次结构以免发生可能会负面影响所有资源的更改,这一点很重要。

管理组具有可使租户管理员控制这些行为的层次结构设置。 本文介绍每个可用的层次结构设置以及如何设置它们。

层次结构设置的 Azure RBAC 权限

配置层次结构设置都需要对根管理组执行以下资源提供程序操作:

  • Microsoft.Management/managementgroups/settings/write
  • Microsoft.Management/managementgroups/settings/read

这些操作表示 Azure 基于角色的访问控制 (Azure RBAC) 权限。 它们只允许用户读取和更新层次结构设置。 它们不会提供对管理组层次结构或层次结构中的资源的任何其他访问权限。

这两个操作均可用于 Azure 内置角色“层次结构设置管理员”。

设置:定义默认管理组

默认情况下,在租户中添加的新订阅将成为根管理组的成员。 如果将策略分配、Azure RBAC 和其他治理构造分配给根管理组,则它们会立即影响这些新订阅。 出于此原因,许多组织不会在根管理组中应用这些构造,即使这是它们分配到的目标位置。 在其他情况下,组织希望对新订阅实施更严格的控制,但不希望将其分配给所有订阅。 此设置支持两个用例。

通过允许定义新订阅的默认管理组,可以在根管理组中应用组织范围的治理构造。 可以使用策略分配或更适合新订阅的 Azure 角色分配来定义单独的管理组。

在门户中定义默认管理组

  1. 登录到 Azure 门户

  2. 使用搜索栏搜索并选择“管理组”。

  3. 在根管理组中,选择管理组名称旁边的“详细信息”。

  4. 在“设置”下,选择“层次结构设置” 。

  5. 选择“更改默认管理组”按钮。

    如果“更改默认管理组”按钮不可用,原因就是以下条件之一:

    • 正在查看的管理组不是根管理组。
    • 安全主体没有更改层次结构设置所需的权限。
  6. 从层次结构中选择管理组,然后选择“选择”按钮

使用 REST API 定义默认管理组

若要使用 REST API 定义默认管理组,必须调用层次结构设置终结点。 请使用以下 REST API URI 和正文格式。 将 {rootMgID} 替换为根管理组的 ID。 将 {defaultGroupID} 替换为将成为默认管理组的管理组的 ID。

  • REST API URI:

    PUT https://management.chinacloudapi.cn/providers/Microsoft.Management/managementGroups/{rootMgID}/settings/default?api-version=2020-05-01
    
  • 请求正文:

    {
        "properties": {
            "defaultManagementGroup": "/providers/Microsoft.Management/managementGroups/{defaultGroupID}"
        }
    }
    

若要将默认管理组设置回根管理组,请使用相同终结点,并将 defaultManagementGroup 设置为值 /providers/Microsoft.Management/managementGroups/{rootMgID}

设置:需要授权

默认情况下,任何用户都可以在租户中创建新管理组。 租户管理员可能希望仅向特定用户提供这些权限,以维护管理组层次结构中的一致性和合规性。 若要创建新的子管理组,则用户需要对根管理组进行 Microsoft.Management/managementGroups/write 操作。

在门户中要求授权

  1. 登录到 Azure 门户

  2. 使用搜索栏搜索并选择“管理组”。

  3. 在根管理组中,选择管理组名称旁边的“详细信息”。

  4. 在“设置”下,选择“层次结构设置” 。

  5. 打开“需要权限才能创建新管理组”切换。

    如果“创建新管理组所需的权限”切换不可用,原因就是以下条件之一:

    • 正在查看的管理组不是根管理组。
    • 安全主体没有更改层次结构设置所需的权限。

使用 REST API 要求授权

若要使用 REST API 要求授权,请调用“层次结构设置”终结点。 请使用以下 REST API URI 和正文格式。 此值是布尔值,因此请为该值提供 truefalse。 值 true 允许这种保护管理组层次结构的方法。

  • REST API URI:

    PUT https://management.chinacloudapi.cn/providers/Microsoft.Management/managementGroups/{rootMgID}/settings/default?api-version=2020-05-01
    
  • 请求正文:

    {
        "properties": {
            "requireAuthorizationForGroupCreation": true
        }
    }
    

若要关闭设置,请使用同一终结点并将 requireAuthorizationForGroupCreation 设置为 false 的值。

Azure PowerShell 示例

Azure PowerShell 没有用于定义默认管理组或要求授权的 Az 命令。 解决方法是,可以将 REST API 与以下 Azure PowerShell 示例配合使用:

$root_management_group_id = "Enter the ID of root management group"
$default_management_group_id = "Enter the ID of default management group (or use the same ID of the root management group)"

$body = '{
     "properties": {
          "defaultManagementGroup": "/providers/Microsoft.Management/managementGroups/' + $default_management_group_id + '",
          "requireAuthorizationForGroupCreation": true
     }
}'

$token = (Get-AzAccessToken).Token
$headers = @{"Authorization"= "Bearer $token"; "Content-Type"= "application/json"}
$uri = "https://management.chinacloudapi.cn/providers/Microsoft.Management/managementGroups/$root_management_group_id/settings/default?api-version=2020-05-01"

Invoke-RestMethod -Method PUT -Uri $uri -Headers $headers -Body $body

若要了解有关管理组的详细信息,请参阅: