列出 Azure 拒绝分配

拒绝分配类似于角色分配,可将一组拒绝操作附加到特定范围内的用户、组或服务主体,以便拒绝访问。 即使角色分配向用户授予了访问权限,拒绝分配也会阻止用户执行特定的 Azure 资源操作。

本文介绍如何列出拒绝分配。

重要

不能直接创建自己的拒绝分配。 拒绝分配由 Azure 创建和管理。

如何创建拒绝分配

拒绝分配由 Azure 创建和管理以保护资源。 不能直接创建自己的拒绝分配。 但是,可以在创建部署堆栈时指定拒绝设置,这会创建部署堆栈资源拥有的拒绝分配。 部署堆栈当前为预览版。

比较角色分配和拒绝分配

拒绝分配遵循与角色分配类似的模式,但也存在一些差异。

功能 角色分配 拒绝分配
授予访问权限
拒绝访问
可以直接创建
在某个范围应用
排除主体
阻止子范围进行继承
适用于经典订阅管理员分配。

拒绝分配属性

拒绝分配具有以下属性:

属性 必须 类型​​ 说明
DenyAssignmentName String 拒绝分配的显示名称。 对于给定作用域,名称必须是唯一的。
Description String 拒绝分配的说明。
Permissions.Actions 至少一个 Actions 或一个 DataActions String[] 一个字符串数组,用于指定拒绝分配阻止对其进行访问的控制平面操作。
Permissions.NotActions String[] 一个字符串数组,用于指定要从拒绝分配中排除的控制平面操作。
Permissions.DataActions 至少一个 Actions 或一个 DataActions String[] 一个字符串数组,用于指定拒绝分配阻止对其进行访问的数据平面操作。
Permissions.NotDataActions String[] 一个字符串数组,用于指定要从拒绝分配中排除的数据平面操作。
Scope String 用于指定拒绝分配应用到的作用域的字符串。
DoNotApplyToChildScopes 布尔 指定拒绝分配是否应用到子作用域。 默认值为 false。
Principals[i].Id string[] 拒绝分配应用到的 Microsoft Entra 主体对象 ID(用户、组、服务主体或托管主体)的数组。 设置为空 GUID 00000000-0000-0000-0000-000000000000 将表示所有主体。
Principals[i].Type String[] Principals[i].Id 所表示的对象类型的数组。设置为 SystemDefined 将表示所有主体。
ExcludePrincipals[i].Id string[] 拒绝分配不会应用到的 Microsoft Entra 主体对象 ID(用户、组、服务主体或托管主体)的数组。
ExcludePrincipals[i].Type String[] ExcludePrincipals[i].Id 所表示的对象类型的数组。
IsSystemProtected 布尔 指定此拒绝分配是否由 Azure 创建,且无法编辑或删除。 当前,所有拒绝分配受系统保护。

“所有主体”主体

为了支持拒绝分配,引入了名为“所有主体”的系统定义的主体。 此主体表示 Microsoft Entra 目录中的所有用户、组、服务主体和托管标识。 如果主体 ID 是零 GUID 00000000-0000-0000-0000-000000000000 且主体类型是 SystemDefined,则此主体表示所有主体。 在 Azure PowerShell 输出中,“所有主体”的外观如下所示:

Principals              : {
                          DisplayName:  All Principals
                          ObjectType:   SystemDefined
                          ObjectId:     00000000-0000-0000-0000-000000000000
                          }

可以将“所有主体”与 ExcludePrincipals 组合使用来拒绝除了某些用户之外的所有主体。 “所有主体”具有以下约束:

  • 只能用于 Principals,不能用于 ExcludePrincipals
  • Principals[i].Type 必须设置为 SystemDefined

列出拒绝分配

按照以下步骤列出拒绝分配。

重要

不能直接创建自己的拒绝分配。 拒绝分配由 Azure 创建和管理。

先决条件

如要获取拒绝分配的相关信息,必须具有:

  • Microsoft.Authorization/denyAssignments/read 权限,大多数 Azure 内置角色都包含该权限。

在 Azure 门户中列出拒绝分配

请执行以下步骤,在订阅或管理组范围列出拒绝分配。

  1. 在 Azure 门户中,打开所选范围,例如资源组或订阅。

  2. 选择访问控制 (IAM)

  3. 选择“拒绝分配”选项卡(或选择“查看拒绝分配”磁贴上的“视图”按钮)

    如果此范围内有任何拒绝分配或继承到此范围的角色,则会将其列出。

    “访问控制 (IAM)”页和“拒绝分配”选项卡的屏幕截图,其中列出了所选范围内的拒绝分配。

  4. 若要显示其他列,请选择“编辑列”。

    “拒绝分配”列窗格的屏幕截图,其中显示了如何将列添加到拒绝分配列表。

    说明
    名称 拒绝分配的名称。
    主体类型 用户、组、系统定义的组或服务主体。
    拒绝 包括在拒绝分配中的安全主体的名称。
    Id 拒绝分配的唯一标识符。
    排除的主体 是否有排除在拒绝分配之外的安全主体。
    不适用于儿童 是否已将拒绝分配继承到子范围。
    受系统保护 拒绝分配是否由 Azure 托管。 当前始终为“是”。
    范围 管理组、订阅、资源组或资源。
  5. 将一个复选标记添加到任何已启用的项,然后选择“确定”以显示所选列。

列出有关拒绝分配的详细信息

执行以下步骤,以便列出有关拒绝分配的更多详细信息。

  1. 按照上一部分的说明打开“拒绝分配”窗格。

  2. 选择拒绝分配名称,打开“用户”页。

    列出应用和排除的拒绝分配的“用户”页的屏幕截图。

    “用户”页包括下述两个部分。

    拒绝设置 说明
    拒绝分配适用于 拒绝分配应用到的安全主体。
    拒绝分配排除 排除在拒绝分配之外的安全主体。

    系统定义的主体代表 Azure AD 目录中的所有用户、组、服务主体和托管标识。

  3. 若要查看已拒绝权限的列表,请选择“已拒绝权限”。

    “拒绝权限”页的屏幕截图,其中列出了拒绝的权限。

    操作类型 说明
    操作 拒绝控制平面操作。
    不操作 从拒绝控制平面操作中排除的控制平面操作。
    DataActions 拒绝数据平面操作。
    NotDataActions 从拒绝数据平面操作中排除的数据平面操作。

    就上一屏幕截图中显示的示例来说,下面是有效的权限:

    • 数据平面上的所有存储操作都已拒绝,计算操作除外。
  4. 若要查看拒绝分配的属性,请选择“属性”。

    列出属性的拒绝分配的“属性”页的屏幕截图。

    在“属性”页上,可以看到拒绝分配名称、ID、说明和范围。 “不适用于儿童”开关指示是否已将拒绝分配继承到子范围。 “受系统保护”开关指示此拒绝分配是否由 Azure 托管。 当前,所有情况下此项均为“是”。