什么是 Microsoft Entra ID 中的自定义安全属性?
Microsoft Entra ID 中的自定义安全属性是特定于业务的属性(键值对),你可以定义这些属性并将其分配给 Microsoft Entra 对象。 这些属性可用于存储信息、对对象进行分类,或对特定的 Azure 资源强制实施细化的访问控制。 自定义安全属性可与基于 Azure 属性的访问控制 (ABAC) 结合使用。
为什么使用自定义安全属性?
以下是一些可以使用自定义安全属性的场景:
- 扩展用户配置文件,例如向所有员工添加“每小时薪金”。
- 确保只有管理员才能在员工的档案中查看“每小时薪金”属性。
- 对数百或数千个应用程序进行分类,以便轻松创建可筛选的清单以供审核。
- 授予用户对属于项目的 Azure 存储 Blob 的访问权限。
我可以用自定义安全属性做什么?
自定义安全属性包括以下功能:
- 为租户定义特定于业务的信息(属性)。
- 在用户和应用程序上添加一组自定义安全属性。
- 将自定义安全属性与查询和筛选器结合使用来管理 Microsoft Entra 对象。
- 提供属性治理,让属性可以确定谁有权访问。
以下场景不支持自定义安全属性:
自定义安全属性的特征
自定义安全属性包括以下功能:
- 租户范围内可用
- 包括说明
- 支持不同的数据类型:Boolean、integer、string
- 支持单个值或多个值
- 支持用户定义的自由格式值或预定义值
- 可以为本地 Active Directory 中的目录同步用户分配自定义安全属性
以下示例显示了分配给用户的多个自定义安全属性。 自定义安全属性是不同的数据类型,具有单个值、多个值、自由格式值或预定义值。
支持自定义安全属性的对象
可以为以下 Microsoft Entra 对象添加自定义安全属性:
- Microsoft Entra 用户
- Microsoft Entra 企业应用程序(服务主体)
自定义安全属性与扩展相比如何?
虽然扩展和自定义安全属性都可用于扩展 Microsoft Entra ID 和 Microsoft 365 中的对象,但它们适用于完全不同的自定义数据方案。 下面是自定义安全属性与扩展的一些比较方式:
功能 | 扩展 | 自定义安全属性 |
---|---|---|
扩展 Microsoft Entra ID 和 Microsoft 365 对象 | 是 | 是 |
支持的对象 | 取决于扩展类型 | 用户和服务主体 |
受限访问 | 错误。 有权读取对象的任何人都可以读取扩展数据。 | 是的。 读取和写入访问权限通过一组单独的权限和基于角色的访问控制 (RBAC) 进行限制。 |
使用时机 | 存储应用程序要使用的数据 存储非敏感数据 |
存储敏感数据 用于授权方案 |
许可要求 | 在所有版本的 Microsoft Entra ID 中可用 | 在所有版本的 Microsoft Entra ID 中可用 |
有关如何使用扩展的详细信息,请参阅使用扩展将自定义数据添加到资源。
使用自定义安全属性的步骤
检查权限
添加属性集
添加属性集以对相关的自定义安全属性进行分组和管理。 了解详细信息
管理属性集
指定谁可以在属性集中读取、定义或分配自定义安全属性。 了解详细信息
定义属性
将自定义安全属性添加到目录中。 可以指定数据类型(Boolean、integer 或 string)以及值是预定义值、自由格式值、单个值还是多个值。 了解详细信息
分配属性
将自定义安全属性分配给适用于你的业务方案的 Microsoft Entra 对象。 了解详细信息
使用属性
筛选使用自定义安全属性的用户和应用程序。 了解详细信息
将使用自定义安全属性的条件添加到 Azure 角色分配,以用于细化的访问控制。 了解详细信息
术语
为了更好地了解自定义安全属性,可以参考以下术语列表。
术语 | 定义 |
---|---|
属性定义 | 自定义安全属性或键值对的架构。 例如,自定义安全属性名称、说明、数据类型和预定义值。 |
属性集 | 相关自定义安全属性的集合。 可以将属性集委托给其他用户,用于定义和分配自定义安全属性。 |
属性名称 | 属性集内自定义安全属性的唯一名称。 属性集和属性名称的组合构成了租户的唯一属性。 |
属性分配 | 将自定义安全属性分配给 Microsoft Entra 对象,例如用户和企业应用程序(服务主体)。 |
预定义值 | 一个可以用于自定义安全属性的值。 |
自定义安全属性的属性
下表列出了可以为属性集和自定义安全属性指定的属性。 有些属性是不可变的,以后无法更改。
properties | 必须 | 以后可更改 | 说明 |
---|---|---|---|
属性集名称 | ✅ | 属性集的名称。 在租户中必须是唯一的。 不能包含空格或特殊字符。 | |
属性集说明 | ✅ | 属性集的说明。 | |
属性最大数目 | ✅ | 可在属性集中定义的自定义安全属性的最大数量。 默认值为 null 。 如果不指定,则管理员最多可为每个租户添加 500 个活动属性。 |
|
属性集 | ✅ | 相关自定义安全属性的集合。 每个自定义安全属性都必须是属性集的一部分。 | |
属性名 | ✅ | 自定义安全属性的名称。 在属性集中必须是唯一的。 不能包含空格或特殊字符。 | |
属性说明 | ✅ | 自定义安全属性的说明。 | |
数据类型 | ✅ | 自定义安全属性值的数据类型。 支持的类型有 Boolean 、Integer 和 String 。 |
|
允许分配多个值 | ✅ | 指示是否可以将多个值分配给自定义安全属性。 如果数据类型设置为 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 索引标记。 |
自定义安全属性角色
Microsoft Entra ID 提供了内置角色来使用自定义安全属性。 “属性定义管理员”角色是管理自定义安全属性所需的最小角色。 属性分配管理员角色是为用户和应用程序等 Microsoft Entra 对象分配自定义安全属性值所需的最低角色。 可以在租户范围或属性集范围分配这些角色。
角色 | 权限 |
---|---|
属性定义读取者 | 读取属性集 读取自定义安全属性定义 |
属性定义管理员 | 管理属性集的所有方面 管理自定义安全属性定义的所有方面 |
属性分配读取者 | 读取属性集 读取自定义安全属性定义 读取用户和服务主体的自定义安全属性键和值 |
属性分配管理员 | 读取属性集 读取自定义安全属性定义 读取和更新用户和服务主体的自定义安全属性键和值 |
属性日志读取器 | 读取自定义安全属性的审核日志 |
属性日志管理员 | 读取自定义安全属性的审核日志 为自定义安全属性配置诊断设置 |
重要
默认情况下,全局管理员和其他管理员角色无权读取、定义或分配自定义安全属性。
Microsoft Graph API
可以使用 Microsoft Graph API 以编程方式管理自定义安全属性。 有关详细信息,请参阅概述:使用 Microsoft Graph API 自定义安全属性。
可以使用 API 客户端(例如 Graph 浏览器)更轻松地尝试使用 Microsoft Graph API 来获得自定义安全属性。
许可要求
此功能免费使用,并且包括在你的 Azure 订阅中。