安全角色概述

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

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

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

注意

不能使用安全角色管理命令配置 AllDatabasesAdminAllDatabasesViewerAllDatabasesMonitor 这三个群集级安全角色。 若要了解如何在 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 运算符按特定主体或角色筛选结果。

修改角色分配

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