写入权限

图的不同部分定义了相应的写权限

  • 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 在所有图上创建带有标签 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 在所有图上删除关系类型为 bar 的关系的权限,请使用

DENY DELETE ON GRAPH * RELATIONSHIPS bar TO regularUsers

具有 DELETE 权限但 TRAVERSE 权限受限的用户,在某些情况下将无法执行 DETACH DELETE。有关更多信息,请参阅 删除受限用户

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

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 权限限制为特定的元素、节点或关系。

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 权限限制为特定的元素、节点或关系。

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 的节点的属性 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 权限限制为特定的元素、节点或关系。如果您希望阻止用户写入数据库对象的子集,可以将 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 在图 neo4j 上的 ALL GRAPH PRIVILEGES,请使用

GRANT ALL GRAPH PRIVILEGES ON GRAPH neo4j TO regularUsers

与更具体的 READWRITE 命令不同,无法将 ALL GRAPH PRIVILEGES 限制为特定的元素、节点或关系。如果您希望阻止用户读取或写入数据库对象的子集,可以将 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
© . This site is unofficial and not affiliated with Neo4j, Inc.