用户和鉴权

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

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

11.1 权限分配与策略

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

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

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

创建策略

创建策略的 [参数] 为:

名称 类型 规范 描述
name str 必须为字母 length < 32 策略名称
graph_privileges List[dict] / 权限列表(图集级别)
system_privileges List[str] / 权限列表(系统级别)
policies List[str] / 策略列表
from ultipa import Connection, ULTIPA_REQUEST
conn = Connection(host='host:port', username="root", password="root")
graphPrivilege = ULTIPA_REQUEST.GraphPrivilege(name='default',
		values=['QUERY'])
ret = conn.createPolicy(ULTIPA_REQUEST.CreatePolicy(name='sales',
		graph_privileges=graphPrivilege))
print(ret.toJSON())

更新策略

更新策略的 [参数] 为:

名称 类型 规范 描述
name str 必须为字母 length< 32 策略名称
graph_privileges List[dict] / 权限列表(图集级别)
system_privileges List[str] / 权限列表(系统级别)
policies List[str] / 策略列表
from ultipa import Connection, ULTIPA_REQUEST
conn = Connection(host='host:portt', username="root", password="root")
graphPrivilege = ULTIPA_REQUEST.GraphPrivilege(name='default',
		values=['INSERT'])
ret = conn.updatePolicy(ULTIPA_REQUEST.UpdatePolicy(name='sales',
		graph_privileges=graphPrivilege))
print(ret.toJSON())

删除策略

删除策略的 [参数] 为:

名称 类型 规范 描述
name str 必填 策略名称
from ultipa import Connection, ULTIPA_REQUEST
conn = Connection(host='host:port', username="root", password="root")
ret = conn.deletePolicy(ULTIPA_REQUEST.DeletePolicy(name='sales'))
print(ret.toJSON())

列出所有策略

from ultipa import Connection, ULTIPA_REQUEST
conn = Connection(host='host:port', username="root", password="root")
ret = conn.listPolicy()
print(ret.toJSON())

查看策略详情

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

名称 类型 规范 描述
name str 必填 策略名称
from ultipa import Connection, ULTIPA_REQUEST
conn = Connection(host='host:port', username="root", password="root")
ret = conn.getPolicy(ULTIPA_REQUEST.GetPolicy(name='sales'))
print(ret.toJSON())

分配权限

分配权限的 [参数] 为:

名称 类型 规范 描述
name str 必须为字母 length< 32 策略名称
graph_privileges List[dict] / 权限列表(图集级别)
system_privileges List[str] / 权限列表(系统级别)
policies List[str] / 策略列表
from ultipa import Connection, ULTIPA_REQUEST
conn = Connection(host='host:port', username="root", password="root")
graphPrivilege = ULTIPA_REQUEST.GraphPrivilege(name='default',
		values=['INSERT'])
ret = conn.grantPolicy(ULTIPA_REQUEST.GrantPolicy(username='test',
		graph_privileges=[graphPrivilege],policies=['sales']))
print(ret.toJSON())

撤回权限和策略

撤回权限的 [参数] 为:

名称 类型 规范 描述
name str 必须为字母 length< 32 策略名称
graph_privileges List[dict] / 权限列表(图集级别)
system_privileges List[str] / 权限列表(系统级别)
policies List[str] / 策略列表
from ultipa import Connection, ULTIPA_REQUEST
conn = Connection(host='host:port', username="root", password="root")
graphPrivilege = ULTIPA_REQUEST.GraphPrivilege(name='default',
		values=['INSERT'])
ret = conn.revokePolicy(ULTIPA_REQUEST.RevokePolicy(username='test',
		graph_privileges=[graphPrivilege],policies=['sales']))
print(ret.toJSON())

列出权限表

from ultipa import Connection, ULTIPA_REQUEST
conn = Connection(host='host:port', username="root", password="root")
ret = conn.listPrivilege()
print(ret.toJSON())

11.2 用户信息管理

创建用户

创建用户的 [参数] 为:

名称 类型 规范 描述
username string 必填 用户名称
password string 必填 用户密码
graph_privileges []string / 权限列表(图集级别)
system_privileges []string / 权限列表(系统级别)
policies []string / 策略列表
from ultipa import Connection, ULTIPA_REQUEST
conn = Connection(host='host:port', username="root", password="root")
ret = conn.createUser(ULTIPA_REQUEST.CreateUser(username='XXXX',
		password='XXXX'))
print(ret.toJSON())

获取用户详细信息

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

名称 类型 规范 描述
username string 必填 用户名称
from ultipa import Connection, ULTIPA_REQUEST
conn = Connection(host='host:port', username="root", password="root")
ret = conn.getUser(ULTIPA_REQUEST.GetUser(username='XXXX'))
print(ret.toJSON())

修改用户

修改用户的 [参数] 为:

名称 类型 规范 描述
username string 必填 用户名称
password string 必填 用户密码
graph_privileges []string / 权限列表(图集级别)
system_privileges []string / 权限列表(系统级别)
policies []string / 策略列表
from ultipa import Connection, ULTIPA_REQUEST
conn = Connection(host='host:port', username="root", password="root")
ret = conn.updateUser(ULTIPA_REQUEST.UpdateUser(username='XXXX',
		password='XXXX'))
print(ret.toJSON())

删除用户

创建用户的 [参数] 为:

名称 类型 规范 描述
username string 必填 用户名称
from ultipa import Connection, ULTIPA_REQUEST
conn = Connection(host='host:port', username="root", password="root")
ret = conn.deleteUser(ULTIPA_REQUEST.DeleteUser(username='XXXX'))
print(ret.toJSON())

重置管理员账户

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