Lindorm 图引擎支持在同一实例下管理多个相互隔离的子图,并按子图维度对用户与角色进行权限管理。本文介绍子图管理、子图用户管理和子图角色管理的常用操作。
权限说明
权限类型
权限 | 含义 |
| 读权限。查询数据时,要求用户对查询的图有读权限 |
| 写权限。 控制台用户管理模块要同时赋予 |
| Global的 |
授权范围
GLOBAL:全局范围的授权与撤回。当用户被赋予全局范围的权限后,用户则拥有了对于整个图引擎内所有数据对象的对应操作权限。例如,全局的
READ权限将允许用户查询任意子图。子图范围(database):数据库粒度的授权与撤回。当用户被赋予某个子图 (database),用户则拥有了对于该子图内部所有数据对象的对应操作权限。
多图概览
Lindorm 图引擎支持多图管理模式。在此模式下,一个 Lindorm Graph 实例可以承载多个逻辑上相互隔离的子图。每个子图拥有独立的 Schema 和数据,适用于多租户、多业务场景的数据隔离。
全局
ADMIN:比如初始化的ROOT账号,以及控制台账号授予全局的ADMIN或者本文grant接口授予的全局ADMIN角色:定义用户对特定子图的访问权限,如只读或读写。
前提条件
已成功开通 Lindorm 图引擎服务。
已根据网络环境配置访问白名单,确保您的客户端可以访问 Lindorm 实例。
快速入门:创建并授权一个只读用户
本节将引导您完成创建一个只读用户的完整流程。假设我们的目标是:为子图 default 创建一个名为 graphreader 的只读用户。
(可选)创建新子图
如果默认的default子图无法满足业务需求,您可以使用主账号创建一个新的子图。如果使用default图,可跳过此步骤。创建用户
使用主账号调用添加用户接口,创建一个名为graphreader的用户。为用户授予角色
使用全文ADMIN用户调用授权角色接口,授予graphreader用户对default子图的READER角色。
至此,graphreader 用户便可以使用其凭证对 default 子图进行只读访问。
子图管理
创建子图
请求地址:
POST /db/add功能描述:创建一个新的子图。
权限要求:仅全局
ADMIN账号可调用。请求示例:
curl -X POST 'http://{host}:{port}/db/add' \ -H 'Content-Type: application/json' \ -u 'root_user:root_password' \ -d '{ "db": "my_graph", "params": {} }'参数说明:
字段
类型
必填
描述
db
String
是
子图名称。仅允许使用小写字母(a-z)、数字(0-9)和下划线(_)。注意:不允许使用
user作为名称。params
JSON
否
用于子图的附加配置参数,以 JSON 对象形式提供。
响应示例:
{ "status": "200 OK", "payload": { "result": true } }
查询子图列表
请求地址:
GET /db/list或GET /db/list?db={dbName}功能描述:查询一个或所有子图的列表信息。
权限要求:所有已认证的用户均可调用。
请求示例:
# 查询所有子图 curl -X GET 'http://{host}:{port}/db/list' \ -u 'root_user:root_password' # 查询指定子图 curl -X GET 'http://{host}:{port}/db/list?db=my_graph' \ -u 'root_user:root_password'参数说明:
参数
类型
必填
描述
db
String
否
指定要查询的子图名称。如果留空,则返回当前实例下的所有子图。
响应示例:
{ "status": "200 OK", "payload": [ { "creationTime": 1670813317324, "dbName": "my_graph", "lastModified": 1670813317324, "params": "{}" }, { "creationTime": 1670813326798, "dbName": "my_graph_02", "lastModified": 1670813326798, "params": "{}" } ] }
删除子图
请求地址:
GET /db/del功能描述:删除指定的子图及其包含的所有数据。
权限要求:仅全局
ADMIN账号可调用。请求示例:
curl -X GET 'http://{host}:{port}/db/del?db=my_graph' \ -u 'root_user:root_password'说明如果db传递为default,则会清库操作,但是default还会存在。如果传递了其他的schema,那么整个db都会删除掉。
参数说明:
参数
类型
必填
描述
db
String
是
要删除的子图的名称。
响应示例:
{ "status": "200 OK", "payload": { "result": true } }
用户管理
一个实例共用所有的账号和密码:删除用户、修改用户密码,会影响当前实例的所有引擎,请到控制台操作。
添加用户
请求地址:
GET /user/add?user={name}&password={pwd}功能描述:创建一个用于访问子图的用户。功能等同于在控制台用户管理页面创建一个用户。
权限要求:仅全局
ADMIN用户可调用。请求示例:
curl -X GET 'http://{host}:{port}/user/add?user=sub_user_01&password=sub_pwd_01' \ -u 'root_user:root_password'参数说明:
参数
类型
必填
描述
user
String
是
新建用户的名称。
password
String
是
用户的登录密码。
响应示例:
{ "status": "200 OK", "payload": { "result": true } }
查询用户
请求地址:
GET /user/list或GET /user/list?user={name}功能描述:查询一个或所有用户的信息及其角色分配情况。
权限要求:仅全局
ADMIN用户可调用。请求示例:
# 查询所有用户 curl -X GET 'http://{host}:{port}/user/list' \ -u 'root_user:root_password' # 查询指定用户 curl -X GET 'http://{host}:{port}/user/list?user=sub_user_01' \ -u 'root_user:root_password'参数说明:
参数
类型
必填
描述
user
String
否
指定要查询的用户名称。如果留空,则返回所有用户。
响应示例:
说明下面的 * 代表 全局。
{ "payload": [ { "roles": { "test1": "WRITER", "test2": "WRITER", "test4": "WRITER" }, "user": "test_user" }, { "roles": { "*": "ADMIN" }, "user": "root" }, { "roles": { "*": "ADMIN" }, "user": "test_user_admin" } ], "status": "200 OK" }
子图角色管理
授权角色
请求地址:
GET /role/grant?db={dbName}&user={name}&role={role}功能描述:为指定用户授予访问特定子图的角色权限。
权限要求:全局
ADMIN用户。请求示例:
curl -X GET 'http://{host}:{port}/role/grant?db=my_graph&user=sub_user_01&role=WRITER' \ -u 'root_user:root_password'参数说明:
参数
类型
必填
描述
db
String
是
目标子图的名称。如果是 * 代表授予GLOBAL权限
user
String
是
目标用户的名称。
role
String
是
要授予的角色名称,必须为大写
READER:数据只读权限。仅能对已授权的子图执行读操作。WRITER:数据读写权限。包含READER的所有权限,并额外拥有写权限。ADMIN: 授予某个账号为全局ADMIN后,可创建子图、创建账号、清理子图等。( 通过控制台用户管理模块要同时授予READ、WRITE、ADMIN )
响应示例:
{ "status": "200 OK", "payload": { "result": true } }
回收角色
请求地址:
GET /role/revoke?db={dbName}&user={name}功能描述:回收指定用户在特定子图上的所有权限。
权限要求:全局
ADMIN用户。请求示例:
curl -X GET 'http://{host}:{port}/role/revoke?db=my_graph&user=sub_user_01' \ -u 'root_user:root_password'说明不可回收自身 ADMIN 角色
参数说明:
参数
类型
必填
描述
db
String
是
目标子图的名称。
user
String
是
目标用户的名称。
响应示例:
{ "status": "200 OK", "payload": { "result": true } }
查询所有角色关系
请求地址:
GET /role/all功能描述:查询当前实例中所有“用户-子图-角色”的授权关系列表,用于权限审计。
权限要求:全局
ADMIN用户。请求示例:
curl -X GET 'http://{host}:{port}/role/all' \ -u 'root_user:root_password'响应示例:
{ "payload": [ { "dbName": "test1", "role": "WRITER", "user": "test_user" }, { "dbName": "test2", "role": "WRITER", "user": "test_user" }, { "dbName": "test3", "role": "WRITER", "user": "test_user" }, { "dbName": "*", "role": "ADMIN", "user": "test_user_admin" }, { "dbName": "*", "role": "ADMIN", "user": "root" } ], "status": "200 OK" }