你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

了解 Azure 拒绝分配

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

本文介绍如何定义拒绝分配。

如何创建拒绝分配

拒绝分配由 Azure 创建和管理以保护资源。 Azure 蓝图和 Azure 托管应用使用拒绝分配来保护系统管理的资源。 Azure 蓝图和 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[] 拒绝分配应用到的 Azure AD 主体对象 ID(用户、组、服务主体或托管主体)的数组。 设置为空 GUID 00000000-0000-0000-0000-000000000000 将表示所有主体。
Principals[i].Type String[] Principals[i].Id 所表示的对象类型的数组。设置为 SystemDefined 将表示所有主体。
ExcludePrincipals[i].Id String[] 拒绝分配不会应用到的 Azure AD 主体对象 ID(用户、组、服务主体或托管主体)的数组。
ExcludePrincipals[i].Type String[] ExcludePrincipals[i].Id 所表示的对象类型的数组。
IsSystemProtected 布尔 指定此拒绝分配是否由 Azure 创建,且无法编辑或删除。 当前,所有拒绝分配受系统保护。

“所有主体”主体

为了支持拒绝分配,引入了名为“所有主体”的系统定义的主体。 此主体表示 Azure AD 目录中的所有用户、组、服务主体和托管标识。 如果主体 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

后续步骤