授权
功能介绍
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" }