写入权限

写入权限针对图的不同部分定义

  • CREATE - 允许创建节点和关系。

  • DELETE - 允许删除节点和关系。

  • SET LABEL - 允许使用 SET 子句设置指定的节点标签。

  • REMOVE LABEL - 允许使用 REMOVE 子句删除指定的节点标签。

  • SET PROPERTY - 允许在节点和关系上设置属性。

还有结合上述特定权限的复合权限

  • MERGE - 允许 MATCHCREATESET PROPERTY 应用 MERGE 命令。

  • WRITE - 允许对整个图执行所有 WRITE 操作。

  • ALL GRAPH PRIVILEGES - 允许对整个图执行所有 READWRITE 操作。

有关如何阅读管理命令语法的更多详细信息,请参阅阅读管理命令语法图权限命令的组成部分

CREATE 权限

CREATE 权限允许用户在图上创建新的节点和关系元素。更多详细信息,请参阅Cypher 手册 → CREATE 子句。

GRANT [IMMUTABLE] CREATE
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
    [
      ELEMENT[S] { * | label-or-rel-type[, ...] }
      | NODE[S] { * | label[, ...] }
      | RELATIONSHIP[S] { * | rel-type[, ...] }
    ]
  TO role[, ...]

例如,要授予角色 regularUsers 在图 neo4jCREATE 元素的权限,请使用

GRANT CREATE ON GRAPH neo4j ELEMENTS * TO regularUsers

CREATE 权限也可以被拒绝

DENY [IMMUTABLE] CREATE
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
    [
      ELEMENT[S] { * | label-or-rel-type[, ...] }
      | NODE[S] { * | label[, ...] }
      | RELATIONSHIP[S] { * | rel-type[, ...] }
    ]
  TO role[, ...]

例如,要拒绝角色 regularUsers 在所有图上 CREATE 带有标签 foo 的节点的权限,请使用

DENY CREATE ON GRAPH * NODES foo TO regularUsers

如果用户尝试创建带有数据库中尚不存在的标签的节点,则用户还必须拥有 CREATE NEW LABEL 权限。这同样适用于新关系:需要 CREATE NEW RELATIONSHIP TYPE 权限。

如果数据库中不存在某个标签或关系类型,则用户无法使用相应的权限,直到它被创建。有关更多信息,请参阅不存在的标签、关系类型和属性名称的权限

DELETE 权限

DELETE 权限允许用户删除图上的节点和关系元素。更多详细信息,请参阅Cypher 手册 → DELETE 子句。

GRANT [IMMUTABLE] DELETE
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
    [
      ELEMENT[S] { * | label-or-rel-type[, ...] }
      | NODE[S] { * | label[, ...] }
      | RELATIONSHIP[S] { * | rel-type[, ...] }
    ]
  TO role[, ...]

例如,要授予角色 regularUsers 在图 neo4jDELETE 元素的权限,请使用

GRANT DELETE ON GRAPH neo4j ELEMENTS * TO regularUsers

DELETE 权限也可以被拒绝

DENY [IMMUTABLE] DELETE
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
    [
      ELEMENT[S] { * | label-or-rel-type[, ...] }
      | NODE[S] { * | label[, ...] }
      | RELATIONSHIP[S] { * | rel-type[, ...] }
    ]
  TO role[, ...]

例如,要拒绝角色 regularUsers 在所有图上 DELETE 关系类型为 bar 的关系的权限,请使用

DENY DELETE ON GRAPH * RELATIONSHIPS bar TO regularUsers

拥有 DELETE 权限但受限 TRAVERSE 权限的用户,在所有情况下都无法执行 DETACH DELETE。有关更多信息,请参阅 href:tutorial/access-control.adoc#detach-delete-restricted-user[删除受限用户]。

如果数据库中不存在某个标签或关系类型,则用户无法使用相应的权限,直到它被创建。有关更多信息,请参阅不存在的标签、关系类型和属性名称的权限

SET LABEL 权限

SET LABEL 权限允许您使用Cypher SET 子句在节点上设置标签

GRANT [IMMUTABLE] SET LABEL { * | label[, ...] }
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
  TO role[, ...]

例如,要授予角色 regularUsers 在图 neo4j 的节点上 SET 任何标签的权限,请使用

GRANT SET LABEL * ON GRAPH neo4j TO regularUsers

与许多其他 READWRITE 权限不同,SET LABEL 权限无法限制到特定的 ELEMENTS、NODES 或 RELATIONSHIPS。

SET LABEL 权限也可以被拒绝

DENY [IMMUTABLE] SET LABEL { * | label[, ...] }
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
  TO role[, ...]

例如,要拒绝角色 regularUsers 在所有图的节点上 SET 标签 foo 的权限,请使用

DENY SET LABEL foo ON GRAPH * TO regularUsers

如果数据库中不存在此标签的任何实例,则还需要 CREATE NEW LABEL 权限。

如果数据库中不存在某个标签,则用户无法使用相应的权限,直到它被创建。有关更多信息,请参阅不存在的标签、关系类型和属性名称的权限

REMOVE LABEL 权限

REMOVE LABEL 权限允许您使用Cypher REMOVE 子句从节点中删除标签

GRANT [IMMUTABLE] REMOVE LABEL { * | label[, ...] }
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
  TO role[, ...]

例如,要授予角色 regularUsers 从图 neo4j 的节点中 REMOVE 任何标签的权限,请使用

GRANT REMOVE LABEL * ON GRAPH neo4j TO regularUsers

与许多其他 READWRITE 权限不同,REMOVE LABEL 权限无法限制到特定的 ELEMENTS、NODES 或 RELATIONSHIPS。

REMOVE LABEL 权限也可以被拒绝

DENY [IMMUTABLE] REMOVE LABEL { * | label[, ...] }
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
  TO role[, ...]

例如,要拒绝角色 regularUsers 从所有图的节点中删除标签 foo 的权限,请使用

DENY REMOVE LABEL foo ON GRAPH * TO regularUsers

如果数据库中不存在某个标签,则用户无法使用相应的权限,直到它被创建。有关更多信息,请参阅不存在的标签、关系类型和属性名称的权限

SET PROPERTY 权限

SET PROPERTY 权限允许用户使用Cypher SET 子句在图中的节点或关系元素上设置属性

GRANT [IMMUTABLE] SET PROPERTY "{" { * | property[, ...] } "}"
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
    [
      ELEMENT[S] { * | label-or-rel-type[, ...] }
      | NODE[S] { * | label[, ...] }
      | RELATIONSHIP[S] { * | rel-type[, ...] }
    ]
  TO role[, ...]

例如,要授予角色 regularUsers 在图 neo4j 的所有元素上 SET 任何属性的权限,请使用

GRANT SET PROPERTY {*} ON HOME GRAPH ELEMENTS * TO regularUsers

SET PROPERTY 权限也可以被拒绝

DENY [IMMUTABLE] SET PROPERTY "{" { * | property[, ...] } "}"
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
    [
      ELEMENT[S] { * | label-or-rel-type[, ...] }
      | NODE[S] { * | label[, ...] }
      | RELATIONSHIP[S] { * | rel-type[, ...] }
    ]
  TO role[, ...]

例如,要拒绝角色 regularUsers 在所有图的带有标签 bar 的节点上 SET 属性 foo 的权限,请使用

DENY SET PROPERTY { foo } ON GRAPH * NODES bar TO regularUsers

如果用户尝试设置一个数据库中尚不存在的属性名称的属性,则用户还必须拥有 CREATE NEW PROPERTY NAME 权限。

如果数据库中不存在某个标签、关系类型或属性名称,则用户无法使用相应的权限,直到它被创建。有关更多信息,请参阅不存在的标签、关系类型和属性名称的权限

MERGE 权限

MERGE 权限是一个复合权限,它结合了 TRAVERSEREAD(即 MATCH)以及 CREATESET PROPERTY。这旨在启用Cypher MERGE 命令的使用,但也适用于所有需要这些权限的读写操作。

GRANT [IMMUTABLE] MERGE "{" { * | property[, ...] } "}"
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
    [
      ELEMENT[S] { * | label-or-rel-type[, ...] }
      | NODE[S] { * | label[, ...] }
      | RELATIONSHIP[S] { * | rel-type[, ...] }
    ]
  TO role[, ...]

例如,要授予角色 regularUsers 在图 neo4j 的所有元素上 MERGE 的权限,请使用

GRANT MERGE {*} ON GRAPH neo4j ELEMENTS * TO regularUsers

无法拒绝 MERGE 权限。如果您希望阻止用户创建元素和设置属性:请使用 DENY CREATEDENY SET PROPERTY

如果用户尝试创建带有数据库中尚不存在的标签的节点,则用户还必须拥有 CREATE NEW LABEL 权限。这同样适用于新关系和属性——需要 CREATE NEW RELATIONSHIP TYPECREATE NEW PROPERTY NAME 权限。

如果数据库中不存在某个标签、关系类型或属性名称,则用户无法使用相应的权限,直到它被创建。有关更多信息,请参阅不存在的标签、关系类型和属性名称的权限

WRITE 权限

WRITE 权限允许用户在图上执行任何 WRITE 命令。

GRANT [IMMUTABLE] WRITE
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
  TO role[, ...]

例如,要授予角色 regularUsers 在图 neo4jWRITE 的权限,请使用

GRANT WRITE ON GRAPH neo4j TO regularUsers

与更具体的 WRITE 命令不同,无法将 WRITE 权限限制到特定的 ELEMENTS、NODES 或 RELATIONSHIPS。如果您希望阻止用户写入部分数据库对象,可以将 GRANT WRITE 与更具体的 DENY 命令结合使用,以定位这些元素。

WRITE 权限也可以被拒绝

DENY [IMMUTABLE] WRITE
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
  TO role[, ...]

例如,要拒绝角色 regularUsers 在图 neo4jWRITE 的权限,请使用

DENY WRITE ON GRAPH neo4j TO regularUsers

拥有 WRITE 权限但受限 TRAVERSE 权限的用户,在所有情况下都无法执行 DETACH DELETE。有关更多信息,请参阅删除受限用户

ALL GRAPH PRIVILEGES 权限

ALL GRAPH PRIVILEGES 权限允许用户在图上执行任何命令

GRANT [IMMUTABLE] ALL [ [ GRAPH ] PRIVILEGES ]
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
  TO role[, ...]

例如,要授予角色 regularUsers 在图 neo4jALL GRAPH PRIVILEGES 的权限,请使用

GRANT ALL GRAPH PRIVILEGES ON GRAPH neo4j TO regularUsers

与更具体的 READWRITE 命令不同,无法将 ALL GRAPH PRIVILEGES 限制到特定的 ELEMENTS、NODES 或 RELATIONSHIPS。如果您希望阻止用户读写部分数据库对象,可以将 GRANT ALL GRAPH PRIVILEGES 与更具体的 DENY 命令结合使用,以定位这些元素。

ALL GRAPH PRIVILEGES 权限不允许创建新标签、关系类型或属性名称。这些由 NAME MANAGEMENT 权限管理。

ALL GRAPH PRIVILEGES 权限也可以被拒绝

DENY [IMMUTABLE] ALL [ [ GRAPH ] PRIVILEGES ]
  ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
  TO role[, ...]

例如,要拒绝角色 regularUsers 在图 neo4j 上的所有图权限,请使用

DENY ALL GRAPH PRIVILEGES ON GRAPH neo4j TO regularUsers
© . All rights reserved.