安全角色概述

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

通过基于角色的访问控制模型授予主体对资源的访问权限,其中分配的安全角色决定了主体的资源访问权限。

当某个主体尝试执行某个操作时,系统会执行授权检查,以确保该主体与至少一个授权执行该操作的安全角色相关联。 授权检查失败会中止该操作。

本文中列出的管理命令可用于管理主体及其在数据库、表、外部表、具体化视图和函数上的安全角色。

管理命令

下表描述了用于管理安全角色的命令。

命令 说明
.show 列出具有给定角色的主体。
.add 将一个或多个主体添加到角色。
.drop 从角色中删除一个或多个主体。
.set 将角色设置为特定主体列表,并删除所有以前的主体。

安全角色

下表描述了为每个角色授予的访问级别,并演示了一项检查:是否可以在给定的对象类型中分配角色。

角色 权限 数据库 外部表 具体化视图 函数
admins 查看、修改和删除对象及子对象。 ✔️ ✔️ ✔️ ✔️ ✔️
users 查看对象和创建新的子对象。 ✔️
viewers 查看未打开 RestrictedViewAccess 的对象。 ✔️
unrestrictedviewers 查看已打开 RestrictedViewAccess 的对象。 主体还必须拥有 adminsviewersusers 权限。 ✔️
ingestors 将数据引入对象中,但没有查询访问权限。 ✔️ ✔️
monitors 查看架构、操作和权限等元数据。 ✔️

有关每个范围的安全角色的完整说明,请参阅 Kusto 基于角色的访问控制

注意

无法仅为数据库中的某些表分配 viewer 角色。 有关如何向主体视图授予对表子集的访问权限的不同方法,请参阅管理表视图访问权限

常见方案

显示主体角色

若要查看你在群集上的角色,请运行以下命令:

.show cluster principal roles

显示在资源上的角色

若要检查在特定资源上分配给你的角色,请在相关数据库或包含该资源的数据库中运行以下命令:

// For a database:
.show database DatabaseName principal roles

// For a table:
.show table TableName principal roles

// For an external table:
.show external table ExternalTableName principal roles

// For a function:
.show function FunctionName principal roles

// For a materialized view:
.show materialized-view MaterializedViewName principal roles

显示资源上所有主体的角色

若要查看分配给特定资源的所有主体的角色,请在相关数据库或包含该资源的数据库中运行以下命令:

// For a database:
.show database DatabaseName principals

// For a table:
.show table TableName principals

// For an external table:
.show external table ExternalTableName principals

// For a function:
.show function FunctionName principals

// For a materialized view:
.show materialized-view MaterializedViewName principals

提示

使用 where 运算符按特定主体或角色筛选结果。

修改角色分配

有关如何在数据库和表级别修改角色分配的详细信息,请参阅管理数据库安全角色管理表安全角色