运维与权限控制
为了支持流计算任务的稳定运行与高效排障,Orca 提供了完善的运维接口与可视化支持。
流图运维
Orca 提供了丰富的运维函数,可对流图进行全面监控,详情请参考 Orca 声明式 API。
可视化界面支持
除运维函数外,Orca 还提供了 Web 可视化模块,用于图形化展示流图结构与运行状态。该模块可展示当前集群中所有流图。图 1-1 展示了流图中某个节点的状态:
权限控制
Orca 的权限控制基于 DolphinDB 统一的权限系统,在此基础上引入了 Orca 专用权限,用于精细化控制流图、流表及流计算引擎的操作权限。
对流图的提交、删除、启动等涉及计算资源的操作,用户仍需具备 DolphinDB 的基础权限,例如 COMPUTE_GROUP_EXEC,用于控制计算资源(计算组)的使用权限。
Orca 权限类型
在满足基础计算权限的前提下,Orca 进一步通过以下 ORCA 相关权限,对流图、流表及流计算引擎的操作进行细粒度管控。不同权限可作用于 Catalog 级、对象级(流图 / 流表 / 引擎)或全局级,用于满足多用户场景下的权限隔离需求。
| 权限应用对象 | 权限类型 | 权限说明 | 作用范围 |
|---|---|---|---|
| 流图 | ORCA_GRAPH_CREATE | 创建流图 | Catalog 级 |
| ORCA_GRAPH_DROP | 删除流图 | Catalog 级 | |
| ORCA_GRAPH_CONTROL | 操作和运维流图,包括启动、停止、重新提交、配置流图参数等 | Catalog 级或流图级 | |
| 流表 | ORCA_TABLE_CREATE | 创建流表 | Catalog 级 |
| ORCA_TABLE_DROP | 删除流表 | Catalog 级 | |
| ORCA_TABLE_READ | 读取流表数据 | Catalog 级或流表级 | |
| ORCA_TABLE_WRITE | 向流表写入数据 | Catalog 级或流表级 | |
| 流计算引擎 | ORCA_ENGINE_MANAGE | 管理流计算引擎相关操作,包括:warmupOrcaStreamEngine、stopTimerEngine、resumeTimerEngine、useOrcaStreamEngine |
Catalog 级或引擎级 |
| Orca 管理 | ORCA_MANAGE | Orca 管理权限,包含以上所有 ORCA 相关权限 | 全局级或 Catalog 级 |
权限作用范围
全局级别权限
授予全局级别权限后,用户将对所有 Catalog 下的所有流图、流表及流计算引擎拥有相应权限。
目前,仅 ORCA_MANAGE 权限支持授予到全局级别。
Catalog 级别权限
授予某一 Catalog 的权限后,用户将对该 Catalog 下的所有流图、流表或流计算引擎拥有对应权限。
对象级别权限
对象级别权限支持精确控制到单个流图、流表或流计算引擎。进行对象级授权时,需使用完全限定名(FQN)标识具体对象:
-
流图:
catalog.orca_graph.graphName -
流表:
catalog.orca_table.tableName
示例
授予 user1 用户在 myCatalog 中创建流图的权限。
grant("user1", ORCA_GRAPH_CREATE, "myCatalog")
授予 user1 用户删除 myCatalog 中流图的权限。
grant("user1", ORCA_GRAPH_DROP, "myCatalog")
授予 user1 用户操作流图权限。
// 授予用户操作 myCatalog 中所有流图的权限
grant("user1", ORCA_GRAPH_CONTROL, "myCatalog")
// 授予用户操作特定流图的权限
grant("user1", ORCA_GRAPH_CONTROL, "myCatalog.orca_graph.myGraph")
授予 user1 用户在 myCatalog 中创建流表的权限。
grant("user1", ORCA_TABLE_CREATE, "myCatalog")
授予 user1 用户删除 myCatalog 中流表的权限。
grant("user1", ORCA_TABLE_DROP, "myCatalog")
授予 user1 用户读取流表权限。
// 授予用户读取 myCatalog 中所有流表的权限
grant("user1", ORCA_TABLE_READ, "myCatalog")
// 授予用户读取特定流表的权限
grant("user1", ORCA_TABLE_READ, "myCatalog.orca_table.myTable")
授予 user1 用户写入流表权限。
// 授予用户写入 myCatalog 中所有流表的权限
grant("user1", ORCA_TABLE_WRITE, "myCatalog")
// 授予用户写入特定流表的权限
grant("user1", ORCA_TABLE_WRITE, "myCatalog.orca_table.myTable")
授予 user1 用户 管理 ORCA 的权限。
// 授予用户在 myCatalog 范围内的 ORCA 管理权限
grant("user1", ORCA_MANAGE, "myCatalog")
// 授予用户在全局范围内(即所有 catalog)的 ORCA 管理权限
grant("user1", ORCA_MANAGE, "*")
权限判定与生效规则
admin 用户为超级管理员(非普通管理员), 拥有所有 Orca 相关权限,不受任何权限校验限制。
创建流图或流表的用户自动成为该流图或流表的 owner,并拥有该流图或流表的全部操作权限。
在创建新流图时,系统会对其内所引用的流表进行权限校验,只有同时拥有被引用流表的读写权限,流图才能成功创建。
拥有 ORCA_MANAGE 权限的用户,自动拥有该 Catalog 下的所有 Orca 权限,无需再对单个流图或流表单独授权。
当 Catalog 级权限(大范围)与流图 / 流表级权限(小范围)同时存在时,权限生效遵循以下规则:
-
若先对小范围资源进行授权、撤销或禁止操作,再对大范围资源设置权限,则小范围权限将失效,由大范围权限统一覆盖。
-
若先对大范围资源设置 allow,再对小范围资源设置 deny,则 deny 操作生效,其余未被 deny 的范围仍保持 allow。
-
若先对大范围资源设置 allow,再对小范围资源执行 revoke,则 revoke 操作不生效,大范围 allow 仍然生效。
-
若先对大范围资源设置 deny,再对小范围资源执行 revoke,则 revoke 操作不生效,大范围 deny 仍然生效。
