读取权限AuraDB Business CriticalAuraDB Virtual Dedicated CloudEnterprise Edition
有三种独立的读取权限
有关语法描述的更多详细信息,请参阅 管理命令的 Cypher 语法。 |
TRAVERSE
权限
用户可以通过 GRANT TRAVERSE
权限获得查找节点和关系的权利。
GRANT [IMMUTABLE] TRAVERSE
ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
[
ELEMENT[S] { * | label-or-rel-type[, ...] }
| NODE[S] { * | label[, ...] }
| RELATIONSHIP[S] { * | rel-type[, ...] }
| FOR pattern
]
TO role[, ...]
有关用于表达基于属性的访问控制规则的 |
例如,您可以允许具有 regularUsers
角色的用户在 neo4j
数据库中查找所有标签为 Post
的节点。
GRANT TRAVERSE ON GRAPH neo4j NODES Post TO regularUsers
TRAVERSE
权限也可以被拒绝。
DENY [IMMUTABLE] TRAVERSE
ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
[
ELEMENT[S] { * | label-or-rel-type[, ...] }
| NODE[S] { * | label[, ...] }
| RELATIONSHIP[S] { * | rel-type[, ...] }
| FOR pattern
]
TO role[, ...]
例如,我们可以禁止具有 regularUsers
角色的用户查找所有标签为 Payments
的节点。
DENY TRAVERSE ON HOME GRAPH NODES Payments TO regularUsers
尽管您刚刚授予 regularUsers
角色读取标签为 Post
的节点上所有属性的权限,但您可能希望使用 基于属性的访问控制 将其细化,以隐藏 secret
属性设置为 true
的帖子。例如
DENY TRAVERSE ON HOME GRAPH FOR (:Post {secret: true}) TO regularUsers
如果数据库中不存在标签或关系类型,则用户无法使用相应的权限,直到创建该标签或关系类型。有关更多信息,请参见 不存在的标签、关系类型和属性名称的权限。 |
READ
权限
用户可以通过 GRANT READ
权限获得对节点和关系执行属性读取的权利。需要注意的是,用户只能读取他们被授权查找的实体上的属性。
GRANT [IMMUTABLE] READ "{" { * | property[, ...] } "}"
ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
[
ELEMENT[S] { * | label-or-rel-type[, ...] }
| NODE[S] { * | label[, ...] }
| RELATIONSHIP[S] { * | rel-type[, ...] }
| FOR pattern
]
TO role[, ...]
有关用于表达基于属性的访问控制规则的 |
例如,您可以允许具有 regularUsers
角色的用户读取 neo4j
数据库中标签为 Post
的节点上的所有属性。*
表示读取所有属性的能力也扩展到将来可能添加的属性。
GRANT READ { * } ON GRAPH neo4j NODES Post TO regularUsers
为了进一步细化读取访问权限,您可以允许具有 regularUsers
角色的用户读取 neo4j
数据库中标签为 Post
且 secret
属性未设置为 true
的节点上的所有属性。例如
GRANT READ { * } ON GRAPH neo4j FOR (n:Post) WHERE n.secret <> true TO regularUsers
授予属性 |
READ
权限也可以被拒绝。
DENY [IMMUTABLE] READ "{" { * | property[, ...] } "}"
ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
[
ELEMENT[S] { * | label-or-rel-type[, ...] }
| NODE[S] { * | label[, ...] }
| RELATIONSHIP[S] { * | rel-type[, ...] }
| FOR pattern
]
TO role[, ...]
尽管我们刚刚授予 regularUsers
角色读取所有属性的权限,但我们可能希望隐藏 secret
属性。以下示例演示了如何执行此操作
DENY READ { secret } ON GRAPH neo4j NODES Post TO regularUsers
如果数据库中不存在标签、关系类型或属性名称,则用户无法使用相应的权限,直到创建该标签、关系类型或属性名称。有关更多信息,请参见 不存在的标签、关系类型和属性名称的权限。 |
MATCH
权限
用户可以通过 GRANT MATCH
权限获得查找节点和关系并对它们执行属性读取的权利。这在语义上等同于同时拥有 TRAVERSE
和 READ
权限。
GRANT [IMMUTABLE] MATCH "{" { * | property[, ...] } "}"
ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
[
ELEMENT[S] { * | label-or-rel-type[, ...] }
| NODE[S] { * | label[, ...] }
| RELATIONSHIP[S] { * | rel-type[, ...] }
| FOR pattern
]
TO role[, ...]
有关用于表达基于属性的访问控制规则的 |
例如,如果您想授予 regularUsers
角色读取标签为 Message
的节点的 language
和 length
属性以及查找这些节点的能力,您可以使用以下 GRANT MATCH
查询
GRANT MATCH { language, length } ON GRAPH neo4j NODES Message TO regularUsers
以下查询授予 regularUsers
角色查找 secret
属性设置为 false
的 Post
和 Likes
节点以及读取其所有属性的能力。
GRANT MATCH { * } ON GRAPH neo4j FOR (n:Post|Likes) WHERE n.secret = false TO regularUsers
与所有其他权限一样,MATCH
权限也可以被拒绝。
DENY [IMMUTABLE] MATCH "{" { * | property[, ...] } "}"
ON { HOME GRAPH | GRAPH[S] { * | name[, ...] } }
[
ELEMENT[S] { * | label-or-rel-type[, ...] }
| NODE[S] { * | label[, ...] }
| RELATIONSHIP[S] { * | rel-type[, ...] }
| FOR pattern
]
TO role[, ...]
请注意,拒绝 MATCH
权限的效果取决于是否指定了具体的属性键或 *
。如果您指定了具体的属性键,则 DENY MATCH
仅拒绝读取这些属性。查找要遍历的元素的功能仍然可用。如果您改为指定 *
,则元素的遍历和所有属性读取都将被禁用。以下查询将显示此示例。
拒绝 regularUsers
角色读取标签为 Message
的节点上的 content
属性,将如下所示。尽管无法读取此特定属性,但仍然可以遍历具有该标签的节点(并且,根据其他授予的权限,仍然可以读取其上的其他属性)。
DENY MATCH { content } ON GRAPH neo4j NODES Message TO regularUsers
以下查询举例说明了如果您想拒绝读取 neo4j
数据库中标签为 Account
的所有节点的所有属性以及遍历这些节点,查询将是什么样子。
DENY MATCH { * } ON GRAPH neo4j NODES Account TO regularUsers
如果数据库中不存在标签、关系类型或属性名称,则用户无法使用相应的权限,直到创建该标签、关系类型或属性名称。有关更多信息,请参见 不存在的标签、关系类型和属性名称的权限。 |