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

访问控制概述

适用于:✅Microsoft FabricAzure 数据资源管理器

访问控制基于身份验证和授权。 Azure 数据资源管理器资源(例如群集或数据库)上的每个查询和命令都必须通过身份验证和授权检查。

访问控制基于身份验证和授权。 Fabric 资源(如数据库)上的每个查询和命令都必须通过身份验证和授权检查。

  • 身份验证:验证发出请求的安全主体的标识
  • 授权:验证发出请求的安全主体是否允许对目标资源发出该请求

认证

若要以编程方式进行身份验证,客户端必须与 Microsoft Entra ID 通信 并请求特定于 Kusto 服务的访问令牌。 然后,客户端可以在向数据库发出请求时使用获取的访问令牌作为标识证明。

主要身份验证方案如下所示:

注意

对于用户和应用程序身份验证,我们建议使用 Kusto 客户端库。 如果需要代表(OBO)或 Single-Page 应用程序(SPA)身份验证,则必须直接使用 MSAL,因为客户端库不支持这些流。 有关详细信息,请参阅 使用Microsoft身份验证库(MSAL)进行身份验证。

用户身份验证

当用户向 Microsoft Entra ID 或与 Microsoft Entra ID(例如 Active Directory 联合身份验证服务)联合的标识提供者提供凭据时,会发生用户身份验证。 用户获取可提供给 Azure 数据资源管理器服务的安全令牌。 Azure 数据资源管理器确定令牌是否有效、令牌是否由受信任的颁发者颁发,以及令牌包含的安全声明。

Azure 数据资源管理器支持以下用户身份验证方法,包括通过 Kusto 客户端库

  • 通过用户界面通过登录进行交互式用户身份验证。
  • 使用为 Azure 数据资源管理器颁发的Microsoft Entra 令牌的用户身份验证。
  • 使用为另一个资源颁发的Microsoft Entra 令牌进行用户身份验证,该令牌可以使用代表 (OBO) 身份验证交换 Azure 数据资源管理器令牌。

应用程序身份验证

当请求未与特定用户关联或没有用户提供凭据时,需要应用程序身份验证。 在这种情况下,应用程序通过提供机密信息向 Microsoft Entra ID 或联合 IdP 进行身份验证。

Azure 数据资源管理器支持以下应用程序身份验证方法,包括通过 Kusto 客户端库

  • 使用 Azure 托管标识进行应用程序身份验证。
  • 在本地安装 X.509v2 证书的应用程序身份验证。
  • 使用作为字节流提供给客户端库的 X.509v2 证书的应用程序身份验证。
  • 使用 Microsoft Entra 应用程序 ID 和 Microsoft Entra 应用程序密钥进行应用程序身份验证。 应用程序 ID 和应用程序密钥类似于用户名和密码。
  • 使用以前获取的有效Microsoft Entra 令牌(颁发给 Azure 数据资源管理器)的应用程序身份验证。
  • 使用为另一个资源颁发的Microsoft Entra 令牌进行应用程序身份验证,该令牌可以使用代表 (OBO) 身份验证交换 Azure 数据资源管理器令牌。

授权

在对资源执行操作之前,所有经过身份验证的用户都必须通过授权检查。 使用 Kusto 基于角色的访问控制 模型,其中主体被归为一个或多个安全角色。 只要分配给用户的角色之一允许他们执行指定的操作,即可授予授权。 例如,数据库用户角色授予安全主体读取特定数据库的数据、在数据库中创建表等的权限。

安全主体与安全角色的关联可以单独定义,也可以使用Microsoft Entra ID 中定义的安全组。 有关如何分配安全角色的详细信息,请参阅 安全角色概述

组授权

可以通过向组分配一个或多个角色,向Microsoft Entra ID 组授予授权。

检查用户或应用程序主体的授权时,系统首先查找允许特定操作的显式角色分配。 如果角色分配不存在,则系统会检查主体在可以授权该操作的所有组中的成员身份。

如果主体是具有适当权限的组的成员,则会授权请求的操作。 否则,该操作不会通过授权检查,并且不允许这样做。

注意

检查组成员身份可能占用大量资源。 由于组成员身份不会频繁更改,因此会缓存成员身份检查结果。 缓存持续时间各不相同,并确定对组成员身份的更改的更新速度。 将用户添加到组最多可能需要 30 分钟才能传播。 从组中删除用户最多可能需要三个小时。

强制组成员身份刷新

主体可以强制刷新组成员身份信息。 此功能在实时(JIT)特权访问服务(如 Microsoft Entra Privileged Identity Management(PIM)用于获取对资源更高的特权的情况下非常有用。

刷新特定组

主体可以强制刷新特定组 的组成员身份。 但是,以下限制适用:

  • 每个主体每小时最多可以请求 10 次刷新。
  • 请求主体必须是请求时组的成员。

如果未满足上述任一条件,则请求会导致错误。

若要重新评估当前主体的组成员身份,请运行以下命令:

在以下示例中,将 <GroupFQN> 替换为自己的值,例如 group='aadGroup=MyGroup@MyOrg.com'

.clear cluster cache groupmembership with (group='<GroupFQN>')

使用组的完全限定名称(FQN)。 有关详细信息,请参阅 引用Microsoft Entra 主体和组

其他主体的刷新

特权主体可以请求其他主体的刷新 。 请求主体必须具有 目标服务的 AllDatabaseMonitor 访问权限。 特权主体还可以运行上一个命令,但不受限制。

若要刷新其他主体的组成员身份,请运行以下命令:

在以下命令中,将 <PrincipalFQN> 替换为自己的主体完全限定名称(FQN),并将 <GroupFQN> 替换为自己的组 FQN,例如 principal='aadUser=UserUpn@MyOrg.com', group='aadGroup=MyGroup@MyOrg.com'。 有关详细信息,请参阅 引用Microsoft Entra 主体和组

.clear cluster cache groupmembership with (principal='<PrincipalFQN>', group='<GroupFQN>')