过程和用户定义函数权限
要运行过程或用户定义函数,用户需要拥有相应的执行权限。过程和用户定义函数根据与常规 Cypher 语句相同的安全规则执行,例如,如果只具有读取权限的用户调用执行写入操作的过程,则该过程将失败。
过程和用户定义函数也可以在超出用户自身权限的情况下运行。这称为执行提升。提升的权限仅在过程或用户定义函数内部生效;在外部执行的任何操作仍将使用用户的原始权限。
以下步骤假定过程或用户定义函数已开发并安装。 有关创建和使用用户定义过程和函数的说明,请参阅Java 参考 → 扩展 Neo4j。 |
管理过程权限
过程权限可以使用本机执行权限进行管理。这些权限控制用户是否被允许执行过程,以及执行过程中应用哪些权限集。
过程可以使用EXECUTE PROCEDURE
权限运行。
这允许用户执行与通配符过程匹配的过程。
GRANT EXECUTE PROCEDURE db.schema.visualization ON DBMS TO visualizer
这将允许任何具有 visualizer
角色的用户执行 db.schema.visualization
。例如,一个还拥有以下权限的用户:
GRANT TRAVERSE ON GRAPH * NODES A, B TO role
GRANT TRAVERSE ON GRAPH * RELATIONSHIP R1 TO role
当调用 db.schema.visualization
过程时,即使可能存在其他节点和关系,用户也只能看到 A
和 B
节点以及 R1
关系。
过程也可以使用EXECUTE BOOSTED PROCEDURE
权限以提升的权限执行。
|
这允许用户成功执行那些否则会因其分配的角色而在执行期间失败的过程。用户在过程执行期间仅被赋予该过程的完全权限。
GRANT EXECUTE BOOSTED PROCEDURE db.schema.visualization ON DBMS TO visualizer
这将允许任何具有 visualizer
角色的用户以提升的权限执行 db.schema.visualization
。当调用 db.schema.visualization
过程时,即使他们没有遍历权限,用户也将看到图中存在的所有节点和关系。
管理用户定义函数权限
用户定义函数权限可以使用本机执行权限进行管理。这些权限控制用户是否被允许执行用户定义函数,以及执行过程中应用哪些权限集。
用户定义函数可以使用EXECUTE USER DEFINED FUNCTION
权限执行。
这允许用户执行与通配符用户定义函数匹配的用户定义函数。
GRANT EXECUTE USER DEFINED FUNCTION apoc.any.properties ON DBMS TO custom
这将允许任何具有 custom
角色的用户执行 apoc.any.properties
。例如,一个还拥有以下权限的用户:
GRANT MATCH {visibleProp} ON GRAPH * NODES A TO role
当调用用户定义函数 MATCH (a:A) RETURN apoc.any.properties(a) AS properties
时,即使可能存在其他属性,他们也只能看到 visibleProp
。
用户定义函数也可以使用EXECUTE BOOSTED USER DEFINED FUNCTION
权限以提升的权限执行。
|
这允许用户成功执行那些否则会因其分配的角色而在执行期间失败的用户定义函数。用户在函数执行期间仅被赋予该用户定义函数的完全权限。
GRANT EXECUTE BOOSTED USER DEFINED FUNCTION apoc.any.properties ON DBMS TO custom
这将允许任何具有 custom
角色的用户以提升的权限执行 apoc.any.properties
。例如,一个还拥有以下权限的用户:
GRANT TRAVERSE ON GRAPH * NODES A TO role
当调用用户定义函数 MATCH (a:A) RETURN apoc.any.properties(a) AS properties
时,即使他们没有读取权限,他们也将看到匹配节点上存在的所有属性。