概述
权限是访问控制的关键机制,可用来控制用户在图数据库上的操作权限。对查询、更新或管理数据库等特定操作设置访问限制,能够加强系统安全性。可将一组权限分配给一个策略,然后将该策略分配给用户。也可将单独的权限直接分配给用户。
嬴图支持的权限类型:
- 图集权限:包括操作和读取特定图集数据及其结构,管理图集的索引、作业、HDC图集等操作。
- 系统权限:包括管理数据库的图集、进程、权限、策略、用户、服务器等操作。
- 属性权限:包括应用于特定属性的
read
、write
和deny
操作。
了解每条权限的细节,请参阅所有权限。
显示权限
获取数据库中的所有权限:
show().privilege()
权限信息呈现在表格_privilege
中:
graphPrivileges | systemPrivileges |
---|---|
["READ","INSERT","UPSERT","UPDATE","DELETE","CREATE_SCHEMA","DROP_SCHEMA","ALTER_SCHEMA","SHOW_SCHEMA","RELOAD_SCHEMA","CREATE_PROPERTY","DROP_PROPERTY","ALTER_PROPERTY","SHOW_PROPERTY","CREATE_FULLTEXT","DROP_FULLTEXT","SHOW_FULLTEXT","CREATE_INDEX","DROP_INDEX","SHOW_INDEX","LTE","UFE","CLEAR_JOB","STOP_JOB","SHOW_JOB","ALGO","CREATE_PROJECT","SHOW_PROJECT","DROP_PROJECT","CREATE_HDC_GRAPH","SHOW_HDC_GRAPH","DROP_HDC_GRAPH","COMPACT_HDC_GRAPH"] | ["TRUNCATE","COMPACT","CREATE_GRAPH","SHOW_GRAPH","DROP_GRAPH","ALTER_GRAPH","TOP","KILL","STAT","SHOW_POLICY","CREATE_POLICY","DROP_POLICY","ALTER_POLICY","SHOW_USER","CREATE_USER","DROP_USER","ALTER_USER","SHOW_PRIVILEGE","SHOW_META","SHOW_SHARD","ADD_SHARD","DELETE_SHARD","SHOW_HDC_SERVER","ADD_HDC_SERVER","DELETE_HDC_SERVER","LICENSE_UPDATE","LICENSE_DUMP"] |
分配权限
使用语句grant().user().params()
或grant().policy().params()
可以为用户或策略分配图集权限、系统权限、属性权限和策略。
语法
grant().user("<userName>").params({
graph_privileges: {
"<graph>": ["<graphPriv>", "<graphPriv>", ...],
...
},
system_privileges: ["<systemPriv>", "<systemPriv>", ...],
property_privileges: {
"node": {
"<propertyPriv>": [
["<graph>", "<schema>", "<property>"],
...
],
...
},
"edge": {
"<propertyPriv>": [
["<graph>", "<schema>", "<property>"],
...
],
...
}
},
policies: ["<policyName>", "<policyName>", ...]
})
grant().policy("<policyName>").params({
graph_privileges: {
"<graph>": ["<graphPriv>", "<graphPriv>", ...],
...
},
system_privileges: ["<systemPriv>", "<systemPriv>", ...],
property_privileges: {
"node": {
"<propertyPriv>": [
["<graph>", "<schema>", "<property>"],
...
],
...
},
"edge": {
"<propertyPriv>": [
["<graph>", "<schema>", "<property>"],
...
],
...
}
},
policies: ["<policyName>", "<policyName>", ...]
})
方法 | 参数 | 描述 |
---|---|---|
user() 或policy() |
<userName> 或<ploicyName> |
用户名或策略名 |
params() |
graph_privileges |
指定分配给各图集的图集权限;使用"*" 指定所有图集 |
system_privileges |
指定待分配的系统权限 | |
property_privileges |
指定待分配的点 属性权限和边 属性权限;使用["*", "*", "*"] 指定所有图集、所有schema和所有属性 |
|
policies |
指定待分配的策略 |
示例
为用户ultipaUsr
分配权限,包括:
- 图集权限:对所有图集的
UPDATE
权限 - 系统权限:
SHOW_POLICY
,ALTER_GRAPH
- 属性权限:
- 对所有图集所有schema所有点属性的
read
权限 - 对图集
Tax
所有schema下的边属性value
和time
的write
权限 - 图集
miniCircle
中,名为rate
的schema下,对边属性score
的deny
权限(即不允许read
和write
权限)
- 对所有图集所有schema所有点属性的
- 策略:
manager
grant().user("ultipaUsr").params({
graph_privileges: {"*": ["UPDATE"]},
system_privileges: ["SHOW_POLICY", "ALTER_GRAPH"],
property_privileges: {
"node": {
"read": [
["*", "*", "*"]
]
},
"edge": {
"write": [
["Tax", "*", "value"],
["Tax", "*", "time"]
],
"deny": [
["miniCircle", "rates", "score"]
]
}
},
policies: ["manager"]
})
为图集Tax
分配图集权限CREATE_SCHEMA
和DROP_SCHEMA
,为策略manager
分配系统权限ADD_HDC_SERVER
:
grant().policy("manager").params({
graph_privileges: {"Tax": ["CREATE_SCHEMA", "DROP_SCHEMA"]},
system_privileges: ["ADD_HDC_SERVER"]
})
撤销权限
使用语句revoke().user().params()
或revoke().policy().params()
可以撤销为用户或策略分配的图集权限、系统权限、属性权限和策略。
语法
revoke().user("<userName>").params({
graph_privileges: {
"<graph>": ["<graphPriv>", "<graphPriv>", ...],
...
},
system_privileges: ["<systemPriv>", "<systemPriv>", ...],
property_privileges: {
"node": {
"<propertyPriv>": [
["<graph>", "<schema>", "<property>"],
...
],
...
},
"edge": {
"<propertyPriv>": [
["<graph>", "<schema>", "<property>"],
...
],
...
}
},
policies: ["<policyName>", "<policyName>", ...]
})
revoke().policy("<policyName>").params({
graph_privileges: {
"<graph>": ["<graphPriv>", "<graphPriv>", ...],
...
},
system_privileges: ["<systemPriv>", "<systemPriv>", ...],
property_privileges: {
"node": {
"<propertyPriv>": [
["<graph>", "<schema>", "<property>"],
...
],
...
},
"edge": {
"<propertyPriv>": [
["<graph>", "<schema>", "<property>"],
...
],
...
}
},
policies: ["<policyName>", "<policyName>", ...]
})
方法 | 参数 | 描述 |
---|---|---|
user() 或policy() |
<userName> 或<ploicyName> |
用户名或策略名 |
params() |
graph_privileges |
指定分配给各图集的图集权限;使用"*" 指定所有图集 |
system_privileges |
指定待分配的系统权限 | |
property_privileges |
指定待分配的点 属性权限和边 属性权限;使用["*", "*", "*"] 指定所有图集、所有schema和所有属性 |
|
policies |
指定待分配的策略 |
示例
撤销用户ultipaUsr
的权限,包括:
- 图集权限:对所有图集的
UPDATE
权限 - 系统权限:
SHOW_POLICY
,ALTER_GRAPH
- 属性权限:
- 对所有图集所有schema所有点属性的
read
权限 - 对图集
Tax
所有schema下的边属性value
和time
的write
权限 - 图集
miniCircle
中,名为rate
的schema下,对边属性score
的deny
权限(即不允许read
和write
权限)
- 对所有图集所有schema所有点属性的
- 策略:
manager
revoke().user("ultipaUsr").params({
graph_privileges: {"*": ["UPDATE"]},
system_privileges: ["SHOW_POLICY", "ALTER_GRAPH"],
property_privileges: {
"node": {
"read": [
["*", "*", "*"]
]
},
"edge": {
"write": [
["Tax", "*", "value"],
["Tax", "*", "time"]
],
"deny": [
["miniCircle", "rates", "score"]
]
}
},
policies: ["manager"]
})
撤销对图集Tax
的图集权限CREATE_SCHEMA
和DROP_SCHEMA
,撤销策略manager
中的系统权限ADD_HDC_SERVER
:
revoke().policy("manager").params({
graph_privileges: {"Tax": ["CREATE_SCHEMA", "DROP_SCHEMA"]},
system_privileges: ["ADD_HDC_SERVER"]
})
所有权限
图集权限
权限 |
描述 | UQL |
---|---|---|
READ |
读取图集中的数据 | find() , ab() , autonet() , spread() , khop() , n()...n() |
INSERT |
向图集中插入点和边 | insert() |
UPSERT |
为图集更新或插入点和边 | upsert() |
UPDATE |
更新图集中的点和边 | update() |
DELETE |
删除图集中的点和边 | delete() |
CREATE_SCHEMA |
在图集中创建schema | create().node_schema() , create().edge_schema() |
DROP_SCHEMA |
删除图集中的schema | drop().node_schema() , drop().edge_schema() |
ALTER_SCHEMA |
修改图集中的schema | alter().node_schema() , alter().edge_schema() |
SHOW_SCHEMA |
显示图集中的schema | show().schema() , show().node_schema() , show().edge_schema() |
RELOAD_SCHEMA |
重新加载图集中的点和边的总数 | db.schema.reload() |
CREATE_PROPERTY |
在图集中创建属性 | create().node_property() , create().edge_property() |
DROP_PROPERTY |
删除图集中的属性 | drop().node_property() , drop().edge_property() |
ALTER_PROPERTY |
修改图集中的属性 | alter().node_property() , alter().edge_property() |
SHOW_PROPERTY |
显示图集中的所有属性 | show().property() , show().node_property() , show().edge_property() |
CREATE_FULLTEXT |
在图集中创建全文索引 | create().node_fulltext() , create().edge_fulltext() |
DROP_FULLTEXT |
删除图集中的全文索引 | drop().node_fulltext() , drop().edge_fulltext() |
SHOW_FULLTEXT |
显示图集中的全文索引 | show().fulltext() , show().node_fulltext() , show().edge_fulltext() |
CREATE_INDEX |
在图集中创建索引 | create().node_index() , create().edge_index() |
DROP_INDEX |
删除图集中的索引 | drop().node_index() , drop().edge_index() |
SHOW_INDEX |
显示图集中的索引 | show().index() , show().node_index() , show().edge_index() |
LTE |
将磁盘上的属性加载到计算引擎中 | LTE().node_property() , LTE().edge_property() |
UFE |
将属性从计算引擎中卸载 | UFE().node_property() , UFE().edge_property() |
CLEAR_JOB |
清除图集中的作业 | clear().job() |
STOP_JOB |
结束图集中的作业 | stop().job() |
SHOW_JOB |
显示图集中的作业 | show().job() |
ALGO |
在图集上执行算法 | algo() |
CREATE_PROJECT |
为图集创建分布式投影 | create().projection() |
SHOW_PROJECT |
显示图集的分布式投影 | show().projection() |
DROP_PROJECT |
删除图集的分布式投影 | drop().projection() |
CREATE_HDC_GRAPH |
为图集创建HDC图集 | hdc.graph.create() |
SHOW_HDC_GRAPH |
显示图集的HDC图集 | hdc.graph.show() |
DROP_HDC_GRAPH |
删除图集的HDC图集 | hdc.graph.drop() |
COMPACT_HDC_GRAPH |
压缩图集的HDC图集 | hdc.graph.compact() |
系统权限
权限 |
描述 | UQL |
---|---|---|
TRUNCATE |
清空数据库中的图集 | truncate().graph() |
COMPACT |
压缩数据库中的图集 | compact().graph() |
CREATE_GRAPH |
在数据库中创建图集 | create().graph() |
SHOW_GRAPH |
显示数据库中的图集 | show().graph() |
DROP_GRAPH |
删除数据库中的图集 | drop().graph() |
ALTER_GRAPH |
修改数据库中的图集 | alter().graph() |
TOP |
显示数据库中的进程 | top() |
KILL |
结束数据库中的进程 | kill() |
STAT |
显示数据库的统计信息 | stats() |
SHOW_POLICY |
显示数据库中的策略 | show().policy() |
CREATE_POLICY |
在数据库中创建策略 | create().policy() |
DROP_POLICY |
删除数据库中的策略 | drop().policy() |
ALTER_POLICY |
修改数据库中的策略 | alter().policy() |
SHOW_USER |
显示数据库中的用户 | show().user() |
CREATE_USER |
在数据库中创建用户 | create().user() |
DROP_USER |
删除数据库中的用户 | drop().user() |
ALTER_USER |
修改数据库中的用户信息 | alter().user() |
SHOW_PRIVILEGE |
显示数据库中的权限 | show().privilege() |
SHOW_META |
显示数据库的名称服务器 | show().meta() |
SHOW_SHARD |
显示数据库的shard服务器 | show().shard() |
ADD_SHARD |
向数据库添加shard服务器 | alter().shard().add() |
DELETE_SHARD |
从数据库中删除shard服务器 | alter().shard().delete() |
SHOW_HDC_SERVER |
显示数据库的HDC服务器 | show().hdc() |
ADD_HDC_SERVER |
向数据库添加HDC服务器 | alter().hdc().add() |
DELETE_HDC_SERVER |
从数据库删除HDC服务器 | alter().hdc().delete() |
LICENSE_UPDATE |
更新数据库的许可证 | license().update() |
LICENSE_DUMP |
删除数据库的许可证 | license().dump() |
属性权限
权限 |
描述 |
---|---|
read |
允许读取图集中的指定属性 |
write |
同时允许读取和写入图集中的指定属性 |
deny |
拒绝读取或写入图集中的指定属性。deny 的优先级高于read 和write 。若同时向用户或策略分配deny 和read (或write ),则只有deny 权限生效。 |