多图管理

更新时间:
复制为 MD 格式

Lindorm 图引擎支持在同一实例下管理多个相互隔离的子图,并按子图维度对用户与角色进行权限管理。本文介绍子图管理、子图用户管理和子图角色管理的常用操作。

多图概览

Lindorm 图引擎支持多图管理模式。在此模式下,一个 Lindorm Graph 实例可以承载多个逻辑上相互隔离的子图。每个子图拥有独立的 Schema 和数据,适用于多租户、多业务场景的数据隔离。

  • 主账号:通过阿里云控制台创建的初始账号,拥有实例的最高管理权限,负责子图和子用户的创建与管理。

  • 子用户:由主账号通过 API 创建的、用于访问具体子图的用户。

  • 角色:定义子用户对特定子图的访问权限,如只读或读写。

前提条件

  1. 已成功开通 Lindorm 图引擎服务。

  2. 已根据网络环境配置访问白名单,确保您的客户端可以访问 Lindorm 实例。

快速入门:创建并授权一个只读用户

本节将引导您完成创建一个只读子用户的完整流程。假设我们的目标是:为子图 default 创建一个名为 graphreader 的只读用户。

  1. (可选)创建新子图
    如果默认的 default 子图无法满足业务需求,您可以使用主账号创建一个新的子图。如果使用 default 图,可跳过此步骤。

  2. 创建子图用户
    使用主账号调用添加子图用户接口,创建一个名为 graphreader 的子用户。

  3. 为子用户授予角色
    使用主账号调用授权角色接口,授予 graphreader 用户对 default 子图的 READER角色。

至此,graphreader 用户便可以使用其凭证对 default 子图进行只读访问。


子图管理

创建子图

  • 请求地址:POST /db/add

  • 功能描述:创建一个新的子图。

  • 权限要求:仅主账号可调用。

  • 请求示例:

    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/listGET /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

  • 功能描述:删除指定的子图及其包含的所有数据。

  • 权限要求:仅主账号(root_user)可调用。

  • 请求示例:

    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}

  • 功能描述:创建一个用于访问子图的子用户。

  • 权限要求:仅主账号可调用。

  • 请求示例:

    curl -X GET 'http://{host}:{port}/user/add?user=sub_user_01&password=sub_pwd_01&comment=subTest_01' \
      -u 'root_user:root_password'
    
  • 参数说明:

    参数

    类型

    必填

    描述

    user

    String

    新建子用户的名称。

    password

    String

    子用户的登录密码。

    comment

    String

    对该用户的备注信息。

  • 响应示例:

    {
      "status": "200 OK",
      "payload": {
        "result": true
      }
    }
    

查询子图用户

  • 请求地址:GET /user/listGET /user/list?user={name}

  • 功能描述:查询一个或所有子用户的信息及其角色分配情况。

  • 权限要求:仅主账号可调用。

  • 请求示例:

    # 查询所有子用户
    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

    指定要查询的子用户名称。如果留空,则返回所有子用户。

  • 响应示例:

    {
      "status": "200 OK",
      "payload": [
        {
          "comment": "subTest_01",
          "creationTime": 1668069383040,
          "lastModified": 1668069383040,
          "roles": {
            "my_graph": "ADMIN",
            "my_graph_02": "WRITER"
          },
          "user": "sub_user_01"
        },
        {
          "comment": "subTest_02",
          "creationTime": 1668079691673,
          "lastModified": 1668079691673,
          "roles": {},
          "user": "sub_user_02"
        }
      ]
    }
    

删除子图用户

  • 请求地址:GET /user/del?user={name}

  • 功能描述:删除一个已存在的子用户。

  • 权限要求:仅主账号可调用。

  • 请求示例:

    curl -X GET 'http://{host}:{port}/user/del?user=sub_user_01' \
      -u 'root_user:root_password'
    
  • 参数说明:

    参数

    类型

    必填

    描述

    user

    String

    要删除的子用户的名称。

  • 响应示例:

    {
      "status": "200 OK",
      "payload": {
        "result": true
      }
    }
    

更新子图用户

  • 请求地址:GET /user/update?user={name}

  • 功能描述:更新子用户的密码或备注信息。

  • 权限要求:仅主账号可调用。

  • 请求示例:

    # 更新密码和备注
    curl -X GET 'http://{host}:{port}/user/update?user=sub_user_01&password=new_pwd&comment=new_comment' \
      -u 'root_user:root_password'
    
  • 参数说明:

    参数

    类型

    必填

    描述

    user

    String

    要更新的子用户的名称。

    password

    String

    子用户的新密码。

    comment

    String

    子用户的新备注信息。

  • 响应示例:

    {
      "status": "200 OK",
      "payload": {
        "result": true
      }
    }
    

子图角色管理

授权角色

  • 请求地址:GET /role/grant?db={dbName}&user={name}&role={role}

  • 功能描述:为指定用户授予访问特定子图的角色权限。

  • 权限要求:主账号或拥有 WRITEROLE 权限的用户可调用。

  • 请求示例:

    curl -X GET 'http://{host}:{port}/role/grant?db=my_graph&user=sub_user_01&role=WRITER' \
      -u 'root_user:root_password'
    
  • 参数说明:

    参数

    类型

    必填

    描述

    db

    String

    目标子图的名称。

    user

    String

    目标用户的名称。

    role

    String

    要授予的角色名称,必须为大写

    • READER:数据只读权限。仅能对已授权的子图执行读操作。

    • WRITER:数据读写权限。包含 READER 的所有权限,并额外拥有写权限。

  • 响应示例:

    {
      "status": "200 OK",
      "payload": {
        "result": true
      }
    }
    

回收角色

  • 请求地址:GET /role/revoke?db={dbName}&user={name}

  • 功能描述:回收指定用户在特定子图上的所有权限。

  • 权限要求:主账号或拥有 WRITEROLE 权限的用户可调用。

  • 请求示例:

    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

  • 功能描述:查询当前实例中所有“用户-子图-角色”的授权关系列表,用于权限审计。

  • 权限要求:仅主账号可调用。

  • 请求示例:

    curl -X GET 'http://{host}:{port}/role/all' \
      -u 'root_user:root_password'
    
  • 响应示例:

    {
      "status": "200 OK",
      "payload": [
        {
          "creationTime": 1668133597539,
          "dbName": "my_graph",
          "lastModified": 1668133597539,
          "role": "ADMIN",
          "user": "sub_user_01"
        },
        {
          "creationTime": 1668133583866,
          "dbName": "my_graph_02",
          "lastModified": 1668133583866,
          "role": "ADMIN",
          "user": "sub_user_02"
        },
        {
          "creationTime": 1668133601893,
          "dbName": "my_graph_03",
          "lastModified": 1668133601893,
          "role": "WRITER",
          "user": "sub_user_03"
        }
      ]
    }