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

Azure AD 中的自定义安全属性是什么? (预览版)

重要

自定义安全属性目前为预览版。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

Azure Active Directory (Azure AD) 中的自定义安全属性是特定于业务的属性(键值对),你可以定义这些属性并将其分配给 Azure AD 对象。 这些属性可用于存储信息、对对象进行分类,或对特定的 Azure 资源强制实施细化的访问控制。 自定义安全属性可以与基于 Azure 属性的访问控制 (Azure ABAC) 一起使用。

为什么使用自定义安全属性?

  • 扩展用户配置文件,例如向所有员工添加“员工聘用日期”和“每小时薪金”。
  • 确保只有管理员才能在员工的档案中查看“每小时薪金”属性。
  • 对数百或数千个应用程序进行分类,以便轻松创建可筛选的清单以供审核。
  • 授予用户对属于项目的 Azure 存储 Blob 的访问权限。

我可以用自定义安全属性做什么?

  • 为租户定义特定于业务的信息(属性)。
  • 向用户、应用程序、Azure AD 资源或 Azure 资源添加一组自定义安全属性。
  • 将自定义安全属性与查询和筛选器结合使用来管理 Azure AD 对象。
  • 提供属性治理,让属性可以确定谁有权访问。

自定义安全属性的特征

  • 全租户范围可用
  • 包括说明
  • 支持不同的数据类型:Boolean、integer、string​
  • 支持单个值或多个值
  • 支持用户定义的自由格式值或预定义值
  • 可以为本地 Active Directory 中的目录同步用户分配自定义安全属性

下面的示例展示了如何指定自定义安全属性的单个值、多个值、自由格式值或预定义值。

Custom security attribute examples assigned to a user.

支持自定义安全属性的对象

目前,你可以为以下 Azure AD 对象添加自定义安全属性:

  • Azure AD 用户
  • Azure AD 企业应用程序(服务主体)
  • Azure 资源的托管标识

自定义安全属性与目录架构扩展相比如何?

下面是自定义安全属性与目录架构扩展的一些比较:

  • 目录架构扩展不能用于授权场景和属性,因为扩展属性的访问控制是与 Azure AD 对象相关联的。 自定义安全属性可用于授权和需要访问控制的属性,因为自定义安全属性可以通过单独的权限进行管理和保护。
  • 目录架构扩展与应用程序相关联,并共享应用程序的生命周期。 自定义安全属性是租户范围的,不与应用程序相关联。
  • 目录架构扩展支持将单个值分配给属性。 自定义安全属性支持向属性分配多个值。

使用自定义安全属性的步骤

  1. 检查权限

    请检查你是否分配有属性定义管理员属性分配管理员角色。 如果没有,请与管理员联系,让管理员在租户范围或属性集范围向你分配适当的角色。 默认情况下,全局管理员和其他管理员角色无权读取、定义或分配自定义安全属性。 如果需要,全局管理员可以将这些角色分配给自己。

    Diagram showing checking permissions to add custom security attributes in Azure AD.

  2. 添加属性集

    添加属性集以对相关的自定义安全属性进行分组和管理。 了解详细信息

    Diagram showing adding multiple attribute sets.

  3. 管理属性集

    指定谁可以在属性集中读取、定义或分配自定义安全属性。 了解详细信息

    Diagram showing assigning attribute definition administrators and attribute assignment administrators to attribute sets.

  4. 定义属性

    将自定义安全属性添加到目录中。 可以指定数据类型(Boolean、integer 或 string)以及值是预定义值、自由格式值、单个值还是多个值。 了解详细信息

    Diagram showing delegated administrators defining custom security attributes.

  5. 分配属性

    为业务场景将自定义安全属性分配给 Azure AD 对象。 了解详细信息

    Diagram showing delegated administrators assigning custom security attributes to Azure AD objects.

  6. 使用属性

    筛选使用自定义安全属性的用户和应用程序。 了解详细信息

    将使用自定义安全属性的条件添加到 Azure 角色分配,以用于细化的访问控制。 了解详细信息

术语

为了更好地了解自定义安全属性,可以参考以下术语列表。

术语 定义
属性定义 自定义安全属性或键值对的架构。 例如,自定义安全属性名称、说明、数据类型和预定义值。
属性集 相关自定义安全属性的集合。 可以将属性集委托给其他用户,用于定义和分配自定义安全属性。
属性名称 属性集内自定义安全属性的唯一名称。 属性集和属性名称的组合构成了租户的唯一属性。
属性分配 将自定义安全属性分配给 Azure AD 对象(例如用户、企业应用程序(服务主体)和托管标识)的过程。
预定义值 一个可以用于自定义安全属性的值。

自定义安全属性的属性

下表列出了可以为属性集和自定义安全属性指定的属性。 有些属性是不可变的,以后无法更改。

properties 必须 以后可更改 说明
属性集名称 ✔️ 属性集的名称。 在租户中必须是唯一的。 不能包含空格或特殊字符。
属性集说明 ✔️ 属性集的说明。
属性最大数目 ✔️ 可在属性集中定义的自定义安全属性的最大数量。 默认值为 null。 如果不指定,则管理员最多可为每个租户添加 500 个活动属性。
属性集 ✔️ 相关自定义安全属性的集合。 每个自定义安全属性都必须是属性集的一部分。
特性名 ✔️ 自定义安全属性的名称。 在属性集中必须是唯一的。 不能包含空格或特殊字符。
属性说明 ✔️ 自定义安全属性的说明。
数据类型 ✔️ 自定义安全属性值的数据类型。 支持的类型有 BooleanIntegerString
允许分配多个值 ✔️ 指示是否可以将多个值分配给自定义安全属性。 如果数据类型设置为 Boolean,则不能设置为“是”。
只允许分配预定义值 ✔️ 指示是否只能将预定义值分配给自定义安全属性。 如果设置为“否”,则允许自由格式值。 稍后可以从“是”更改为“否”,但不能将其从“否”更改为“是”。 如果数据类型设置为 Boolean,则不能设置为“是”。
预定义值 所选数据类型的自定义安全属性的预定义值。 稍后可以添加更多预定义值。 值可以包括空格,但不允许使用一些特殊字符。
预定义值处于活动状态 ✔️ 指定预定义值是处于活动状态还是已停用状态。 如果设置为 false,则不能将预定义值分配给任何其他受支持的目录对象。
属性是活动的 ✔️ 指定自定义安全属性是处于活动状态还是已停用状态。

限制和约束

下面是自定义安全属性的一些限制和约束。

资源 限制 说明
每个租户的属性定义 500 仅适用于租户中的活动属性
每个租户的属性集 500
属性集名称长度 32 Unicode 字符,不区分大小写
属性集说明长度 128 Unicode 字符
属性名称长度 32 Unicode 字符,不区分大小写
属性说明长度 128 Unicode 字符
预定义值 Unicode 字符,区分大小写
每个属性定义的预定义值 100
属性值长度 64 Unicode 字符
每个对象分配的属性值 50 值可以分布在单值和多值属性中。
示例:5 个属性各包含 10 个值或 50 个属性各包含 1 个值
不允许将特殊字符用于:
属性集名称
特性名
<space> ` ~ ! @ # $ % ^ & * ( ) _ - + = { [ } ] \| \ : ; " ' < , > . ? / 属性集名称和属性名称不能以数字开头
属性值允许的特殊字符 全部特殊字符
属性值在与 Blob 索引标记配合使用时允许的特殊字符 <space> + - . : = _ / 如果计划将属性值与 Blob 索引标记配合使用,则只有这些才是 Blob 索引标记允许的特殊字符。 有关详细信息,请参阅设置 Blob 索引标记

自定义安全属性角色

Azure AD 提供一些内置角色来处理自定义安全属性。 “属性定义管理员”角色是管理自定义安全属性所需的最小角色。 “属性分配管理员”角色是为用户和应用程序等 Azure AD 对象分配自定义安全属性值所需的最小角色。 可以在租户范围或属性集范围分配这些角色。

角色 权限
属性定义读取者 读取属性集
读取自定义安全属性定义
属性定义管理员 管理属性集的所有方面
管理自定义安全属性定义的所有方面
属性分配读取者 读取属性集
读取自定义安全属性定义
读取用户和服务主体的自定义安全属性键和值
属性分配管理员 读取属性集
读取自定义安全属性定义
读取和更新用户和服务主体的自定义安全属性键和值

重要

默认情况下,全局管理员和其他管理员角色无权读取、定义或分配自定义安全属性。

Graph 浏览器

如果使用 Microsoft Graph API,则可以使用 Graph Explorer 来更轻松地尝试使用 Microsoft Graph API 自定义安全属性。 有关详细信息,请参阅概述:使用 Microsoft Graph API 自定义安全属性

Screenshot that shows a Microsoft Graph API call for custom security attributes.

已知问题

下面是自定义安全属性的一些已知问题:

  • 全局管理员可以读取自定义安全属性定义和分配的审核日志。
  • 如果有 Azure AD Premium P2 许可证,则不能在属性集范围添加符合条件的角色分配。
  • 如果有 Azure AD Premium P2 许可证,则用户的“已分配角色”页面不会列出属性集范围的永久角色分配。 角色分配是存在的,但不会列出。

根据你是具有 Azure AD Premium P1 还是 P2 许可证,以下是自定义安全属性角色目前支持的角色分配任务:

角色分配任务 高级 P1 高级 P2
永久角色分配 ✔️ ✔️
符合条件的角色分配 不适用 ✔️
属性集范围的永久角色分配 ✔️ ✔️
属性集范围的符合条件的角色分配 不适用
“已分配角色”页面列出了属性集范围的永久角色分配 ✔️ ⚠️
角色分配是存在的,但不会列出

许可要求

使用此功能需要 Azure AD Premium P1 许可证。 若要根据需要查找合适的许可证,请参阅比较 Azure AD 的正式发布功能

后续步骤