用户权限
用户权限
ArcGraph 的权限管理是基于 RBAC(Role-Based Access Control,基于角色的访问控制)方式进行扩展和优化来实现的。在 ArcGraph 中,用户权限管理由权限、角色、资源以及用户构成。
- 权限(Privilege)定义了用户对资源的访问权限类型。
- 资源(Resource)包括创建的 Graph,Vertex 以及 Edge 等。
- 角色(Role)是权限的集合,定义对资源操作权限的集合。
- 用户(User)通过角色来决定权限集合,从而决定自身对资源的访问边界。
注意:
- 用户权限管理是系统安全的基础,请务必谨慎对待。
- 当前,仅拥有 ADMIN 角色的用户具备执行用户、角色和权限管理操作的权限,详情请参考 角色 Role 章节。
权限 Privilege
ArcGraph 图数据库的权限设计如下图所示。其中,系统内置的超级管理员用户“ARCGRAPH”拥有“ADMIN”角色,具备对系统所有资源的所有操作权限。
详细介绍
权限 | 描述 | 支持语句 |
---|---|---|
TRAVERSE | 允许拥有资源被发现(此处定义资源为 Graph,Vertex 以及 Edge 等)的权限。 | - 执行以下语句需所有图的 TRAVERSE 权限 SET GLOBAL... - 执行以下语句需所在图的 TRAVERSE 权限SHOW VERTEX INDEXES... 、SHOW EDGE INDEXES... 、SHOW VERTEXES... 、SHOW EDGES... - 执行以下语句需 _SYSTEM 图的 TRAVERSE 权限 SHOW GRAPH PARTITION... 、SHOW GRAPH PARTITION LEADER... |
READ | 允许拥有读取资源的权限。 | - 执行以下语句需所在图的 READ 权限SHOW CURRENT GRAPH... 、SHOW GRAPHS... 、DESC GRAPH... 、SHOW VERTEXES... 、DESC VERTEX... 、SHOW EDGES... 、DESC EDGE... 、MATCH... 、PROFILE... - 执行以下语句需 _SYSTEM 图的 READ 权限SHOW ROLE PRIVILEGES... 、SHOW ROLES... 、SHOW USERS... 、SHOW USER ROLES... 、SHOW CURRENT USER... |
CREATE | 允许拥有创建资源的权限。 | - 执行以下语句需所在图的 CREATE 权限CREATE GRAPH... 、USE... 、CREATE VERTEX... 、CREATE EDGE... 、CREATE TEMPORAL EDGE... - 执行以下语句需 _SYSTEM 图的 CREATE 权限CREATE USER... 、ALTER USER... 、CREATE ROLE... |
DELETE | 允许拥有删除资源的权限。 | - 执行以下语句需所在图的 DELETE 权限TRUNCATE GRAPH... 、DROP GRAPH... 、DROP VERTEX... 、DROP EDGE... 、DELETE... - 执行以下语句需 _SYSTEM 图的 DELETE 权限DROP ROLE... |
SET PROPERTY | 允许拥有在 Vertex 及 Edge 上设置属性的权限。 | - 执行以下语句需所在图的 SET PROPERTY 权限 RENAME GRAPH... 、ALTER VERTEX... 、ALTER EDGE... 、 INSERT... 、SET... - 执行以下语句需 _SYSTEM 图的 SET PROPERTY 权限GRANT ROLE... 、REVOKE ROLE... |
ALL | 允许拥有所有权限。 | GRANT PRIVILEGES... 、REVOKE PRIVILEGES... 、ALTER CONFIG... 、KILL SESSION... 、ALTER SYSTEM... 、GRANT PRIVILEGES... 、REVOKE PRIVILEGES... 及其他 ArcGraph 支持的所有语句 |
说明:
自 ArcGraph v2.1.1 版本起对权限进行调整,删除了 MATCH
、MERGE
、 WRITE
等权限,以简化权限体系并提高安全性。
查看权限
在 ArcGraph 图数据库中支持使用 SHOW ROLE PRIVILEGES
及相关语句查看权限相关信息,详情请参见 SHOW PRIVILEGES 章节。
角色 Role
角色是 ArcGraph 图数据库中权限管理的核心概念,代表着一组相关权限的集合。根据实际情况可以将角色分配给用户,以实现精细化的权限控制。一个用户可以同时拥有多个角色,另外一个角色也可以被绑定到多个用户上。
系统默认有以下两种内置角色:
-
ADMIN 角色
ArcGraph 图数据库内置了“ADMIN”角色,该角色拥有对系统所有资源的所有操作权限。SHOW ROLE PRIVILEGES LIKE 'ADMIN';
返回结果示例如下:
+-----------+----------------+-----------------+------------+-------------+-----------+---------------+
| role_name | privilege_type | privilege Level | graph_name | vertex_name | edge_name | property_name |
+===========+================+=================+============+=============+===========+===============+
| ADMIN | All | ALL | * | * | * | * |
+-----------+----------------+-----------------+------------+-------------+-----------+---------------+ -
用户默认角色(User Default Role)
针对用户自身创建的资源,用户需要具备所有(
ALL
)的操作权限,并与其他用户相互隔离。因此自 ArcGraph v2.1.1 版本起,在创建新用户时,系统将自动为该用户生成与之一一对应的默认角色(命名为_DEFAULT_ROLE_<USER_NAME>
,初始无权限),并自动绑定至该用户。当用户新建资源时(如
CREATE GRAPH ...
),对应的权限集合(Privilege Package
)将自动绑定至对应的用户默认角色上,无需进行额外的授权操作。为确保系统运行的稳定性和安全性,我们对默认角色设定了以下安全操作策略:
DROP ROLE
:禁止删除用户默认角色。在特殊情况下,可使用FORCE
选项强制执行,但请务必谨慎,避免对系统造成潜在风险。RENAME ROLE
:禁止重命名用户默认角色,以维护角色名称的一致性和管理便捷性。CREATE ROLE