用户与鉴权

为了提高安全性,Ultipa 服务配备了丰富的权限系统。可以给不同的角色配备不同的策略与权限。 在 Ultipa 的权限当中,大致分为四类权限,具体请参阅本章最后的权限表。

  • 库管理权限
  • 数据权限
  • 用户权限
  • 其他权限

权限分配与策略

在 Ultipa 服务的权限管理当中,分为(privilege)权限,和 policy(策略)两个概念,一个策略表示一组权限与子策略的集合,用户可以拥有多个权限,也可以拥有多个策略。

所有的权限具有一定的“作用域”, 作用域分为

  • 系统级别(system level)
  • 图集级别(graph level)

常用的系统级别权限:CREATE_GRAPH, DROP_GRAPH, USER等。 常用的图集级别权限:INSERT, DELETE, UPDATE等。

关于权限的详细列表请参考本章末尾的《权限表》

创建策略

创建策略的 [命令] 为, createPolicy()

创建策略的 [参数] 为:

名称 类型 规范 描述
name string 必须为字母 length < 32 策略名称
graph_privileges []string / 权限列表(图集级别)
system_privileges []string / 权限列表(系统级别)
policies []string / 策略列表

示例 1:创建名为 sales 的 的策略, 只包含对默认图集的查询权限:

createPolicy()
  .name("sales")
  .graph_privileges([{ default: ["QUERY"] }])

示例 2:创建名为 manager 的策略,包含 default 图集的 UPDATE 和 STAT 系统权限,并且拥有 sales 的全部权限:

createPolicy()
  .name("manager")
  .graph_privileges([{ default: ["UPDATE"] }])
  .system_privileges("STAT")
  .policies("sales")

更新策略

更新策略的 [命令] 为, updatePolicy()

更新策略的 [参数] 为:

名称 类型 规范 描述
name string 必须为字母 length< 32 策略名称
graph_privileges []string / 权限列表(图集级别)
system_privileges []string / 权限列表(系统级别)
policies []string / 策略列表

示例 1:修改名为 sales 的 的策略, 只包含 default 图集的查询权限:

updatePolicy()
  .name("sales")
  .graph_privileges([{ default: ["QUERY"] }])

示例 2:修改名为 manager 的策略,包含 UPDATE 权限,并且拥有 sales 的全部权限:

updatePolicy()
  .name("manager")
  .graph_privileges([{ default: ["UPDATE"] }])
  .policies("sales")

删除策略

删除策略的 [命令] 为, deletePolicy()

删除策略的配置:

名称 类型 规范 描述
name string 必填 策略名称

示例:删除 manager 策略

deletePolicy().name("manager")

列出所有策略

可以查看策略列表

查看策略列表的 [命令] 为 : listPolicy()

查看策略详情

可以查看某个策略的相信内容

查看策略详情的 [命令] 为:getPolicy()

查看策略详情的 [参数] 为:

名称 类型 规范 描述
name string 必填 策略名称

示例:查看 策略 sales 的详细信息:

getPolicy().name("sales")

分配权限和策略

分配权限和策略的 [命令] 为 grant()

分配权限的 [参数] 为:

名称 类型 规范 描述
username string 必填 用户名称
graph_privileges []string / 权限列表(图集级别)
system_privileges []string / 权限列表(系统级别)
policies []string / 策略列表

示例: 给用户 ultipa 分配权限 delete,并拥有 manager 的所有权限

grant()
  .username("ultipa")
  .graph_privileges([{ default: ["DELETE"] }])
  .policies("manager")

撤回权限和策略

撤回权限和策略的 [命令] 为:revoke()

撤回权限的 [参数] 为:

名称 类型 规范 描述
username string 必填 用户名称
graph_privileges []string / 权限列表(图集级别)
system_privileges []string / 权限列表(系统级别)
policies []string / 策略列表

示例:撤回用户 ultipa 的 delete 权限

revoke()
  .username("ultipa")
  .graph_privileges([{ default: ["DELETE"] }])

列出权限表

可以查看目前系统中所支持的权限列表

查看权限表的 [命令] 为 :listPrivilege()

用户信息管理

查看用户列表

查看用户列表的[命令] 为:listUser()

获取用户详细信息

获取用户信息的 [命令] 为: getUser()

获取用户信息的 [参数] 为:

名称 类型 规范 描述
username string 必填 用户名称

示例,获取用户 ultipa 的信息

getUser().username("ultipa")

获取当前登录的用户详细信息

获取用户信息的 [命令] 为: getSelfInfo()

示例,获取当前用户的的信息

getSelfInfo()

创建用户

创建用户的命令为:createUser()

创建用户的 [参数] 为:

名称 类型 规范 描述
username string 必填 用户名称
password string 必填 用户密码
graph_privileges []string / 权限列表(图集级别)
system_privileges []string / 权限列表(系统级别)
policies []string / 策略列表

示例:创建用户 ultipa ,设置密码 ultipa。

createUser()
  .username("ultipa")
  .password("ultipa")

示例:创建用户 ultipa 并赋予策略 sales

createUser()
  .username("ultipa")
  .password("ultipa")
  .policies("sales")

修改用户

修改用户 的 [命令] 为 , updateUser()

修改用户 的 [参数] 为:

名称 类型 规范 描述
username string 必填 用户名称
password string 必填 用户密码
graph_privileges []string / 权限列表(图集级别)
system_privileges []string / 权限列表(系统级别)
policies []string / 策略列表

示例:修改用户 ultipa 的密码为"ultipaFast"

updateUser()
  .username("ultipa")
  .password("ultipaFast")

删除用户

删除用户 的 [命令] 为 ,deleteUser()

示例:删除用户 ultipa

deleteUser().username("ultipa")

重置管理员账户

重置管理员账户可以通过工具 ultipa-reset-user 来执行,为了安全性,ultipa-reset-user 只能在服务器运行。

权限表

账号相关权限

名称 规范 作用域
POLICY 策略管理 system
USER 用户管理 system
USER_SETTING 用户设置(用于 Manager) system

库管理相关

名称 描述 作用域
LTE Load to Engine graph
UFE Unload From Engine graph
STAT 查看统计数据 system
CREATE_GRAPH 创建图集 system
UPDATE_GRAPH 更新图集(名称) system
DROP_GRAPH 删除图集 system
LIST_GRAPH 图集列表 system
GET_GRAPH 获取图集信息 system
SHOW_PROPERTY 列举属性 graph
CREATE_PROPERTY 创建属性 graph
DROP_PROPERTY 删除属性 graph
SHOW_INDEX 列举索引 graph
CREATE_INDEX 创建索引 graph
DROP_INDEX 删除索引 graph
TRUNCATE 清空图集 system
COMPACT 碎片整理 system

数据权限相关

名称 描述 作用域
INSERT 增加数据 graph
DELETE 删除数据 graph
UPDATE 修改数据 graph
QUERY 搜索数据 graph

高级权限

名称 描述 作用域
ALGO 运行,终止,查看算法 graph
TOP 查看运行时UQL system
KILL 终止运行时UQL system