更新时间:2022-02-22 GMT+08:00

授权

功能介绍

GES图实例提供了细粒度权限控制,粒度精细到对特定Label的特定属性设置遍历(traverse)、读、写权限。GES细粒度权限控制数据模型参考下表。该API提供给某个用户授予权限的功能。

访问

操作

对象

图实例

作用范围

场景

Grant/Revoke

traverse

LABEL(*代表所有Label)

单个

-

点:可以访问点外部ID和label名称。

边:两个点同时也有traverse权限,可以访问边ID和label名称。

Grant/Revoke

read

PROPERTY(多个用逗号隔开)

单个

Label Name(*代表所有Label)

必须先具有traverse权限。

Grant/Revoke

write

PROPERTY(多个用逗号隔开)

单个

Label Name(*代表所有Label)

必须先具有traverse权限。

Grant/Revoke

schema

GRAPH

单个

graph

元数据管理(修改属性名称、清空Schema、导入schema等操作)。

  • 细粒度权限控制API必须在创建图实例开启RBAC条件下才能调用,请先参考创建图API,创建图同时添加enableRBAC参数再使用此。
  • 细粒度授权时,需要具有权限的用户进行授权,细粒度权限控制API需要使用scope为domain方式获取的token进行鉴权。
  • traverse权限:能看到该Label的所有点和边,但是无法看到点和边具有哪些属性。

URI

  • URI 格式
    POST /ges/v1.0/{project_id}/graphs/{graph_name}/rbac/action?action_id=grant
  • 参数说明
    表1 URI参数说明

    参数

    是否必选

    类型

    说明

    project_id

    String

    项目编号,用于资源隔离。请参考获取项目ID

    graph_name

    String

    图名称。

请求

  • 请求样例
    POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/rbac/action?action_id=grant
    {
    
    	"userId": "test1",
    	"acl": [{
    		"type": "read",
    		"detail": [{
    			"label": "person",
    			"properties": ["crime", "Occupation"]
    		}, {
    			"label": "inmate"
    		}]
    	}, {
    		"type": "write",
    		"detail": [{
    			"label": "person",
    			"properties": ["crime", "Occupation"]
    		}, {
    			"label": "inmate"
    		}, {
    			"label": "Leader"
    		}, {
    			"label": "Friend"
    		}, {
    			"label": "Colleague"
    		}, {
    			"label": "QQGroup"
    		}, {
    			"label": "QQ_owner"
    		}, {
    			"label": "QQ"
    		}, {
    			"label": "phone"
    		}, {
    			"label": "Phone_owner"
    		}]
    	}, {
    		"type": "traverse",
    		"detail": [{
    			"label": "person"
    		}, {
    			"label": "inmate"
    		}, {
    			"label": "Leader"
    		}, {
    			"label": "Friend"
    		}, {
    			"label": "Colleague"
    		}]
    	}]
    }

    SERVER_URL:图的访问地址,取值请参考业务面API使用限制

  • Body参数说明
    表2 Body参数说明

    参数

    是否必选

    类型

    说明

    graph_name

    String

    图名称。

    userId

    String

    授权用户ID。

    acl

    JsonArray

    授权明细。

    type

    String

    权限类型,取值为"read","write","traverse","schema"。

    detail

    JsonArray

    权限详情。

    label

    String

    Label名称。

    properties

      

    List

    属性列表。

响应

  • 要素说明
    表3 响应要素说明

    参数

    是否必选

    类型

    说明

    errorMessage

    String

    系统提示信息,执行成功时,字段可能为空。执行失败时,用于显示错误信息。

    errorCode

    String

    系统提示信息,执行成功时,字段可能为空。执行失败时,用于显示错误码。

  • 请求成功响应样例
    Http Status Code: 200
  • 请求失败样例
    Http Status Code: 400
    {
        "errorMessage": "grant acl is null",
        "errorCode": "GES.8503"
    }

返回值

  • 正常

    200

  • 异常
    表4 异常返回值说明

    返回值

    说明

    400 Bad Request

    请求错误。

    401 Unauthorized

    鉴权失败。

    403 Forbidden

    没有操作权限。

    404 Not Found

    找不到资源。

    500 Internal Server Error

    服务内部错误。

    503 Service Unavailable

    服务不可用。