DBMS 权限
所有 DBMS 权限都与系统范围相关。与用户管理一样,它们不属于特定数据库或图。有关图、数据库和 DBMS 之间差异的更多详细信息,请参阅Cypher 手册 → Cypher 和 Neo4j。
admin
角色拥有多项内置权限。这些权限包括
-
创建、删除和修改数据库及别名。
-
更改配置参数。
-
管理事务。
-
管理用户和角色。
-
管理子图权限。
-
管理过程安全性。
-
加载数据。
要使用户能够执行这些任务,您可以授予他们 admin
角色,但也可以创建包含这些权限子集的自定义角色。所有权限也可以使用 Cypher 命令分配。有关更多详细信息,请参阅以下部分
使用自定义角色管理 DBMS 权限
为了拥有一个管理员角色,它包含所有 DBMS 权限但并非所有数据库权限的子集,您可以复制 admin
角色并撤销或拒绝不需要的权限。第二种选择是通过授予所需的权限从头开始构建自定义管理员。
例如,可以使用第二种选择创建一个只管理用户和角色的管理员角色
-
首先,创建新角色
CREATE ROLE usermanager
-
然后授予管理用户的权限
GRANT USER MANAGEMENT ON DBMS TO usermanager
-
以及管理角色的权限
GRANT ROLE MANAGEMENT ON DBMS TO usermanager
结果角色具有仅允许用户和角色管理的权限。要将角色 usermanager
的所有权限列为命令,请运行此查询
SHOW ROLE usermanager PRIVILEGES AS COMMANDS
命令 |
---|
|
|
行数:2 |
请注意,此角色不允许所有 DBMS 功能。例如,该角色缺少管理、创建和删除数据库以及执行 admin
过程的权限。要创建更强大的管理员,您可以授予一组不同的权限。
在以下示例中,创建了一个新的管理员角色,以执行几乎所有 DBMS 功能,但数据库管理除外。但是,该角色仍然具有一些有限的数据库功能,例如管理事务
-
再次,从创建新角色开始
CREATE ROLE customAdministrator
-
然后授予所有 DBMS 功能的权限
GRANT ALL DBMS PRIVILEGES ON DBMS TO customAdministrator
-
并明确拒绝管理数据库的权限
DENY DATABASE MANAGEMENT ON DBMS TO customAdministrator
-
接下来,授予事务管理权限
GRANT TRANSACTION MANAGEMENT (*) ON DATABASE * TO customAdministrator
结果角色具有的权限包括所有 DBMS 权限,但创建、删除和修改数据库以及管理事务的权限除外。使用以下查询将角色 customAdministrator
的所有权限列为命令
SHOW ROLE customAdministrator PRIVILEGES AS COMMANDS
命令 |
---|
|
|
|
行数:3 |
DBMS ROLE MANAGEMENT
权限
用于角色管理的 DBMS 权限可以使用 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。
有关语法描述的更多详细信息,请参阅数据库管理命令语法。 |
命令 | 描述 |
---|---|
|
使指定角色能够创建新角色。 |
|
使指定角色能够更改角色名称。 |
|
使指定角色能够删除角色。 |
|
使指定角色能够将角色分配给用户。 |
|
使指定角色能够从用户中移除角色。 |
|
使指定角色能够列出角色。 |
|
使指定角色能够创建、删除、分配、移除和列出角色。 |
通过 CREATE ROLE
权限可以授予添加角色的能力。请看示例
GRANT CREATE ROLE ON DBMS TO roleAdder
结果角色具有仅允许添加角色的权限。使用以下查询将角色 roleAdder
的所有权限列为命令
SHOW ROLE roleAdder PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 RENAME ROLE
权限可以授予重命名角色的能力。请看示例
GRANT RENAME ROLE ON DBMS TO roleNameModifier
结果角色具有仅允许重命名角色的权限。使用以下查询列出角色 roleNameModifier
的所有权限
SHOW ROLE roleNameModifier PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 DROP ROLE
权限可以授予删除角色的能力。请看示例
GRANT DROP ROLE ON DBMS TO roleDropper
结果角色具有仅允许删除角色的权限。使用以下查询列出角色 roleDropper
的所有权限
SHOW ROLE roleDropper PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 ASSIGN ROLE
权限可以授予将角色分配给用户的能力。请看示例
GRANT ASSIGN ROLE ON DBMS TO roleAssigner
结果角色具有仅允许分配/授予角色的权限。使用以下查询将角色 roleAssigner
的所有权限列为命令
SHOW ROLE roleAssigner PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 REMOVE ROLE
权限可以授予从用户中移除角色的能力。请看示例
GRANT REMOVE ROLE ON DBMS TO roleRemover
结果角色具有仅允许移除/撤销角色的权限。使用以下查询将角色 roleRemover
的所有权限列为命令
SHOW ROLE roleRemover PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 SHOW ROLE
权限可以授予显示角色的能力。具有此权限的角色被允许执行 SHOW ROLES
和 SHOW POPULATED ROLES
管理命令。对于 SHOW ROLES WITH USERS
和 SHOW POPULATED ROLES WITH USERS
管理命令,需要同时具备此权限和 SHOW USER
权限。以下查询显示了如何授予 SHOW ROLE
权限的示例
为了使用 SHOW ROLES WITH USERS
和 SHOW POPULATED ROLES WITH USERS
管理命令,需要同时具备 SHOW ROLE
和 SHOW USER
权限。请看一个如何授予 SHOW ROLE
权限的示例
GRANT SHOW ROLE ON DBMS TO roleShower
结果角色具有仅允许显示角色的权限。使用以下查询将角色 roleShower
的所有权限列为命令
SHOW ROLE roleShower PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 ROLE MANAGEMENT
权限可以授予创建、重命名、删除、分配、移除和列出角色的权限。请看示例
GRANT ROLE MANAGEMENT ON DBMS TO roleManager
结果角色拥有管理角色的所有权限。使用以下查询将角色 roleManager
的所有权限列为命令
SHOW ROLE roleManager PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
DBMS USER MANAGEMENT
权限
用于用户管理的 DBMS 权限可以使用 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。
有关语法描述的更多详细信息,请参阅数据库管理命令语法。 |
命令 | 描述 |
---|---|
|
使指定角色能够创建新用户。 |
|
使指定角色能够更改用户名称。 |
|
使指定角色能够修改用户。 |
|
使指定角色能够修改用户密码以及这些密码是否在首次登录时必须更改。 |
|
使指定角色能够 |
|
使指定角色能够修改用户的 home 数据库。 |
|
使指定角色能够修改用户的账户状态。 |
|
使指定角色能够删除用户。 |
|
使指定角色能够列出用户。 |
|
使指定角色能够创建、删除、修改和列出用户。 |
通过 CREATE USER
权限可以授予添加用户的能力。请看示例
GRANT CREATE USER ON DBMS TO userAdder
结果角色具有仅允许添加用户的权限。使用此查询将角色 userAdder
的所有权限列为命令
SHOW ROLE userAdder PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 RENAME USER
权限可以授予重命名用户的能力。以下查询显示了此示例
GRANT RENAME USER ON DBMS TO userNameModifier
结果角色具有仅允许重命名用户的权限
SHOW ROLE userNameModifier PRIVILEGES AS COMMANDS
列出角色 userNameModifier
的所有权限
命令 |
---|
|
行数:1 |
通过 ALTER USER
权限可以授予修改用户的能力。请看示例
GRANT ALTER USER ON DBMS TO userModifier
结果角色具有仅允许修改用户的权限。使用以下查询将角色 userModifier
的所有权限列为命令
SHOW ROLE userModifier PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
被授予 ALTER USER
权限的用户被允许运行 ALTER USER
管理命令,其中包含一个或多个 SET PASSWORD
、SET PASSWORD CHANGE [NOT] REQUIRED
、SET AUTH
、REMOVE AUTH
和 SET STATUS
部分
ALTER USER jake SET PASSWORD 'verysecret' SET STATUS SUSPENDED
通过 SET PASSWORDS
权限可以授予修改用户密码以及这些密码是否在首次登录时必须更改的能力。请看示例
GRANT SET PASSWORDS ON DBMS TO passwordModifier
结果角色具有仅允许修改用户密码以及这些密码是否在首次登录时必须更改的权限。使用以下查询将角色 passwordModifier
的所有权限列为命令
SHOW ROLE passwordModifier PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
被授予 SET PASSWORDS
权限的用户被允许运行 ALTER USER
管理命令,其中包含 SET PASSWORD
和 SET PASSWORD CHANGE [NOT] REQUIRED
部分中的一个或两个
ALTER USER jake SET PASSWORD 'abcd5678' CHANGE NOT REQUIRED
被授予 SET AUTH
权限的用户被允许运行 ALTER USER
管理命令,其中包含 SET AUTH
和 REMOVE AUTH
部分中的一个或两个
ALTER USER jake REMOVE AUTH 'native SET AUTH 'oidc-okta' { SET id 'jakesUniqueOktaUserId' }
通过 SET USER STATUS
权限可以授予修改用户账户状态的能力。请看示例
GRANT SET USER STATUS ON DBMS TO statusModifier
结果角色具有仅允许修改用户账户状态的权限。使用以下查询将角色 statusModifier
的所有权限列为命令
SHOW ROLE statusModifier PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
被授予 SET USER STATUS
权限的用户被允许运行 ALTER USER
管理命令,其中只包含 SET STATUS
部分
ALTER USER jake SET STATUS ACTIVE
为了能够修改用户的 home 数据库,授予 SET USER HOME DATABASE
权限。请看示例
GRANT SET USER HOME DATABASE ON DBMS TO statusModifier
结果角色具有仅允许修改用户 home 数据库的权限。使用以下查询将角色 statusModifier
的所有权限列为命令
SHOW ROLE statusModifier PRIVILEGES AS COMMANDS
命令 |
---|
|
|
行数:2 |
被授予 SET USER HOME DATABASE
权限的用户被允许运行 ALTER USER
管理命令,其中只包含 SET HOME DATABASE
或 REMOVE HOME DATABASE
部分
ALTER USER jake SET HOME DATABASE otherDb
ALTER USER jake REMOVE HOME DATABASE
请注意, |
通过 DROP USER
权限可以授予删除用户的能力。请看示例
GRANT DROP USER ON DBMS TO userDropper
结果角色具有仅允许删除用户的权限。使用以下查询将角色 userDropper
的所有权限列为命令
SHOW ROLE userDropper PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 SHOW USER
权限可以授予显示用户的能力。请看示例
GRANT SHOW USER ON DBMS TO userShower
结果角色具有仅允许显示用户的权限。使用以下查询将角色 userShower
的所有权限列为命令
SHOW ROLE userShower PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 USER MANAGEMENT
权限可以授予创建、重命名、修改、删除和列出用户的权限。请看示例
GRANT USER MANAGEMENT ON DBMS TO userManager
结果角色拥有管理用户的所有权限。使用以下查询将角色 userManager
的所有权限列为命令
SHOW ROLE userManager PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
DBMS IMPERSONATE
权限
用于模拟的 DBMS 权限可以通过 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。
模拟是指用户能够承担另一个用户的角色(以及因此的权限),但受到限制,不能以被模拟用户的身份执行更新 admin
命令(即,他们仍然能够使用 SHOW
命令)。
通过 IMPERSONATE
权限可以授予模拟用户的能力。
有关语法描述的更多详细信息,请参阅数据库管理命令语法。 |
命令 | 描述 |
---|---|
|
使指定角色能够模拟任何用户。 |
|
使指定角色能够模拟指定用户。 |
以下查询显示了此示例。请注意,userImpersonator
必须是现有角色才能使此查询生效
GRANT IMPERSONATE (*) ON DBMS TO userImpersonator
结果角色具有允许模拟所有用户的权限
SHOW ROLE userImpersonator PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
也可以拒绝和撤销该权限。请看一个示例,它显示了 userImpersonator
用户如何能够模拟所有用户,除了 alice
DENY IMPERSONATE (alice) ON DBMS TO userImpersonator
要授予(或撤销)模拟特定用户或用户子集的权限,您可以首先使用此查询列出它们
GRANT IMPERSONATE (alice, bob) ON DBMS TO userImpersonator
DBMS DATABASE MANAGEMENT
权限
用于数据库管理的 DBMS 权限可以通过 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。
有关语法描述的更多详细信息,请参阅数据库管理命令语法。 |
命令 | 描述 |
---|---|
|
使指定角色能够创建新的标准数据库。 |
|
使指定角色能够删除标准数据库。 |
|
使指定角色能够修改标准数据库。 |
|
使指定角色能够修改对标准数据库的访问。 |
|
使指定角色能够创建新的复合数据库。 |
|
使指定角色能够删除复合数据库。 |
|
使指定角色能够创建和删除复合数据库。 |
|
使指定角色能够创建、删除和修改数据库。 |
通过 CREATE DATABASE
权限可以授予创建标准数据库的能力。请看示例
GRANT CREATE DATABASE ON DBMS TO databaseAdder
结果角色具有仅允许创建标准数据库的权限。使用以下查询将角色 databaseAdder
的所有权限列为命令
SHOW ROLE databaseAdder PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 CREATE COMPOSITE DATABASE
权限可以授予创建复合数据库的能力。请看示例
GRANT CREATE COMPOSITE DATABASE ON DBMS TO compositeDatabaseAdder
结果角色具有仅允许创建复合数据库的权限。使用以下查询将角色 compositeDatabaseAdder
的所有权限列为命令
SHOW ROLE compositeDatabaseAdder PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 DROP DATABASE
权限可以授予删除标准数据库的能力。请看示例
GRANT DROP DATABASE ON DBMS TO databaseDropper
结果角色具有仅允许删除标准数据库的权限。使用以下查询将角色 databaseDropper
的所有权限列为命令
SHOW ROLE databaseDropper PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 DROP COMPOSITE DATABASE
权限可以授予删除复合数据库的能力。请看示例
GRANT DROP COMPOSITE DATABASE ON DBMS TO compositeDatabaseDropper
结果角色具有仅允许删除复合数据库的权限。使用以下查询将角色 compositeDatabaseDropper
的所有权限列为命令
SHOW ROLE compositeDatabaseDropper PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 ALTER DATABASE
权限可以授予修改标准数据库的能力。请看示例
GRANT ALTER DATABASE ON DBMS TO databaseModifier
结果角色具有仅允许修改标准数据库的权限。使用以下查询将角色 databaseModifier
的所有权限列为命令
SHOW ROLE databaseModifier PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 SET DATABASE ACCESS
权限可以授予修改对标准数据库的访问权限的能力。请看示例
GRANT SET DATABASE ACCESS ON DBMS TO accessModifier
结果角色具有仅允许修改对标准数据库的访问权限的权限。使用以下查询将角色 accessModifier
的所有权限列为命令
SHOW ROLE accessModifier PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 COMPOSITE DATABASE MANAGEMENT
权限可以授予创建和删除复合数据库的能力。请看示例
GRANT COMPOSITE DATABASE MANAGEMENT ON DBMS TO compositeDatabaseManager
结果角色拥有管理复合数据库的所有权限。使用以下查询将角色 compositeDatabaseManager
的所有权限列为命令
SHOW ROLE compositeDatabaseManager PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 DATABASE MANAGEMENT
权限可以授予创建、删除和修改数据库的能力。请看示例
GRANT DATABASE MANAGEMENT ON DBMS TO databaseManager
结果角色拥有管理标准和复合数据库以及别名的所有权限。使用以下查询将角色 databaseManager
的所有权限列为命令
SHOW ROLE databaseManager PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
DBMS ALIAS MANAGEMENT
权限
用于别名管理的 DBMS 权限可以使用 Cypher 管理命令进行分配,并可应用于本地和远程别名。它们可以像其他权限一样被授予、拒绝和撤销。也可以使用数据库管理命令管理别名。
有关语法描述的更多详细信息,请参阅数据库管理命令语法。 |
命令 | 描述 |
---|---|
|
使指定角色能够创建新别名。 |
|
使指定角色能够删除别名。 |
|
使指定角色能够修改别名。 |
|
使指定角色能够列出别名。 |
|
使指定角色能够列出、创建、删除和修改别名。 |
通过 CREATE ALIAS
权限可以授予创建别名的能力。请看示例
GRANT CREATE ALIAS ON DBMS TO aliasAdder
结果角色具有仅允许创建别名的权限。使用以下查询将角色 aliasAdder
的所有权限列为命令
SHOW ROLE aliasAdder PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 DROP ALIAS
权限可以授予删除别名的能力。请看示例
GRANT DROP ALIAS ON DBMS TO aliasDropper
结果角色具有仅允许删除别名的权限。使用以下查询列出角色 aliasDropper
的所有权限
SHOW ROLE aliasDropper PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 ALTER ALIAS
权限可以授予修改别名的能力。请看示例
GRANT ALTER ALIAS ON DBMS TO aliasModifier
结果角色具有仅允许修改别名的权限。使用以下查询将角色 aliasModifier
的所有权限列为命令
SHOW ROLE aliasModifier PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 SHOW ALIAS
权限可以授予列出别名的能力。请看示例
GRANT SHOW ALIAS ON DBMS TO aliasLister
结果角色具有仅允许修改别名的权限。使用以下查询将角色 aliasLister
的所有权限列为命令
SHOW ROLE aliasLister PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 ALIAS MANAGEMENT
权限可以授予列出、创建、删除和修改别名的权限。请看示例
GRANT ALIAS MANAGEMENT ON DBMS TO aliasManager
结果角色拥有管理别名的所有权限。使用以下查询将角色 aliasManager
的所有权限列为命令
SHOW ROLE aliasManager PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
DBMS SERVER MANAGEMENT
权限
用于服务器管理的 DBMS 权限可以使用 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。
有关语法描述的更多详细信息,请参阅数据库管理命令语法。 |
命令 | 描述 |
---|---|
|
使指定角色能够显示、启用、重命名、更改、重新分配、解除分配和删除服务器。 |
|
使指定角色能够显示服务器。 |
DBMS PRIVILEGE MANAGEMENT
权限
用于权限管理的 DBMS 权限可以通过 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。
有关语法描述的更多详细信息,请参阅数据库管理命令语法。 |
命令 | 描述 |
---|---|
|
使指定角色能够列出权限。 |
|
使指定角色能够使用 |
|
使指定角色能够使用 |
|
使指定角色能够列出、分配和移除权限。 |
通过 SHOW PRIVILEGE
权限可以授予列出权限的能力。
具有此权限的用户被允许执行 SHOW PRIVILEGES
和 SHOW ROLE roleName PRIVILEGES
管理命令。要执行 SHOW USER username PRIVILEGES
管理命令,需要同时具备此权限和 SHOW USER
权限。以下查询显示了如何授予 SHOW PRIVILEGE
权限的示例
GRANT SHOW PRIVILEGE ON DBMS TO privilegeShower
结果角色具有仅允许显示权限的权限。使用以下查询将角色 privilegeShower
的所有权限列为命令
SHOW ROLE privilegeShower PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
请注意,通过 此外,请注意,如果使用非原生认证提供者(如 LDAP), |
通过 ASSIGN PRIVILEGE
权限可以授予将权限分配给角色的能力。具有此权限的用户被允许执行 GRANT
和 DENY
管理命令。请看一个如何授予此权限的示例
GRANT ASSIGN PRIVILEGE ON DBMS TO privilegeAssigner
结果角色具有仅允许分配权限的权限。使用以下查询将角色 privilegeAssigner
的所有权限列为命令
SHOW ROLE privilegeAssigner PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 REMOVE PRIVILEGE
权限可以授予从角色中移除权限的能力。
具有此权限的用户被允许执行 REVOKE
管理命令。请看一个如何授予此权限的示例
GRANT REMOVE PRIVILEGE ON DBMS TO privilegeRemover
结果角色具有仅允许移除权限的权限。使用以下查询将角色 privilegeRemover
的所有权限列为命令
SHOW ROLE privilegeRemover PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
通过 PRIVILEGE MANAGEMENT
权限可以授予列出、分配和移除权限的权限。请看示例
GRANT PRIVILEGE MANAGEMENT ON DBMS TO privilegeManager
结果角色拥有管理权限的所有权限。使用以下查询将角色 privilegeManager
的所有权限列为命令
SHOW ROLE privilegeManager PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
DBMS EXECUTE
权限
用于过程和用户定义函数执行的 DBMS 权限可以通过 Cypher 管理命令进行分配。它们可以像其他权限一样被授予、拒绝和撤销。
有关语法描述的更多详细信息,请参阅数据库管理命令语法。 |
命令 | 描述 |
---|---|
|
使指定角色能够执行给定过程。 |
|
使指定角色在执行给定过程时能够使用提升的权限。 |
|
使指定角色能够执行带有 |
|
使指定角色能够执行给定用户定义函数。 |
|
使指定角色在执行给定用户定义函数时能够使用提升的权限。 |
EXECUTE PROCEDURE
权限
执行过程的能力可以通过 EXECUTE PROCEDURE
权限授予。具有此权限的角色被允许执行与名称通配符匹配的过程。以下查询显示了如何授予此权限的示例
GRANT EXECUTE PROCEDURE db.schema.* ON DBMS TO procedureExecutor
拥有 procedureExecutor
角色的用户可以运行 db.schema
命名空间中的任何过程。该过程使用用户自己的权限运行。
结果角色具有仅允许执行 db.schema
命名空间中的过程的权限。使用以下查询将角色 procedureExecutor
的所有权限列为命令
SHOW ROLE procedureExecutor PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
为了允许执行所有过程但只排除少数几个,您可以授予 EXECUTE PROCEDURES *
并拒绝不需要的过程。例如,以下查询允许执行所有过程,除了以 dbms.cluster
开头的那些
GRANT EXECUTE PROCEDURE * ON DBMS TO deniedProcedureExecutor
DENY EXECUTE PROCEDURE dbms.cluster* ON DBMS TO deniedProcedureExecutor
结果角色具有仅允许执行所有过程(以 dbms.cluster
开头的除外)的权限。使用以下查询将角色 deniedProcedureExecutor
的所有权限列为命令
SHOW ROLE deniedProcedureExecutor PRIVILEGES AS COMMANDS
命令 |
---|
|
|
行数:2 |
dbms.cluster.checkConnectivity
、dbms.cluster.cordonServer
、dbms.cluster.protocols
、dbms.cluster.readReplicaToggle
、dbms.cluster.routing.getRoutingTable
、dbms.cluster.secondaryReplicationDisable
、dbms.cluster.setAutomaticallyEnableFreeServers
和 dbms.cluster.uncordonServer
等过程以及任何其他以 dbms.cluster
开头的过程都将被阻止。
EXECUTE BOOSTED PROCEDURE
权限
在执行过程时使用提升权限的能力可以通过 EXECUTE BOOSTED PROCEDURE
权限授予。具有此权限的用户在执行与名称通配符匹配的过程时不会受到其其他权限的限制。EXECUTE BOOSTED PROCEDURE
权限仅影响权限提升,而不影响过程的执行。因此,还需要为这些过程授予 EXECUTE PROCEDURE
权限。执行具有提升权限的过程需要同时具备 EXECUTE PROCEDURE
和 EXECUTE BOOSTED PROCEDURE
权限。
GRANT EXECUTE PROCEDURE * ON DBMS TO boostedProcedureExecutor;
GRANT EXECUTE BOOSTED PROCEDURE db.labels, db.relationshipTypes ON DBMS TO boostedProcedureExecutor
因此,拥有 boostedProcedureExecutor
角色的用户可以以完全权限运行 db.labels
和 db.relationshipTypes
过程,查看图中的所有内容,而不仅仅是用户具有 TRAVERSE
权限的标签和类型。如果没有 EXECUTE PROCEDURE
,则根本无法执行任何过程。
结果角色具有允许以提升权限执行 db.labels
和 db.relationshipTypes
过程的权限,以及以用户自身权限执行所有其他过程的权限
SHOW ROLE boostedProcedureExecutor PRIVILEGES AS COMMANDS
命令 |
---|
|
|
|
行数:3 |
与授予一样,单独拒绝 EXECUTE BOOSTED PROCEDURE
仅影响权限提升,而不影响过程的执行。这可以在以下示例中看到
EXECUTE PROCEDURE
并拒绝 EXECUTE BOOSTED PROCEDURE
GRANT EXECUTE PROCEDURE * ON DBMS TO deniedBoostedProcedureExecutor1
DENY EXECUTE BOOSTED PROCEDURE db.labels ON DBMS TO deniedBoostedProcedureExecutor1
结果角色具有允许使用用户自身权限执行所有过程的权限。它还阻止了 db.labels
过程的权限提升。尽管如此,被拒绝的 EXECUTE BOOSTED PROCEDURE
并未阻止 db.labels
的执行。
要将角色 deniedBoostedProcedureExecutor1
的所有权限列为命令,请使用以下查询
SHOW ROLE deniedBoostedProcedureExecutor1 PRIVILEGES AS COMMANDS
命令 |
---|
|
|
行数:2 |
EXECUTE BOOSTED PROCEDURE
并拒绝 EXECUTE PROCEDURE
GRANT EXECUTE BOOSTED PROCEDURE * ON DBMS TO deniedBoostedProcedureExecutor2
DENY EXECUTE PROCEDURE db.labels ON DBMS TO deniedBoostedProcedureExecutor2
结果角色具有允许提升所有过程权限的权限,但由于缺少或被拒绝的 EXECUTE PROCEDURE
权限而无法执行任何过程。使用以下查询将角色 deniedBoostedProcedureExecutor2
的所有权限列为命令
SHOW ROLE deniedBoostedProcedureExecutor2 PRIVILEGES AS COMMANDS
命令 |
---|
|
|
行数:2 |
EXECUTE BOOSTED PROCEDURE
并拒绝 EXECUTE BOOSTED PROCEDURE
GRANT EXECUTE BOOSTED PROCEDURE * ON DBMS TO deniedBoostedProcedureExecutor3
DENY EXECUTE BOOSTED PROCEDURE db.labels ON DBMS TO deniedBoostedProcedureExecutor3
结果角色具有允许提升除 db.labels
之外的所有过程权限的权限,但由于缺少 EXECUTE PROCEDURE
权限,无法执行任何过程。使用以下查询将角色 deniedBoostedProcedureExecutor3
的所有权限列为命令
SHOW ROLE deniedBoostedProcedureExecutor3 PRIVILEGES AS COMMANDS
命令 |
---|
|
|
行数:2 |
假设有一个名为 myProc
的过程。
对于具有 EXECUTE PROCEDURE
权限的用户,此过程给出结果 A
和 B
;对于具有 EXECUTE BOOSTED PROCEDURE
权限的用户,此过程给出结果 A
、B
和 C
。
现在,将示例 1 到 3 中的权限应用于此过程并显示返回的结果。根据示例 1 中的权限,授予 EXECUTE PROCEDURE *
并拒绝 EXECUTE BOOSTED PROCEDURE myProc
,myProc
过程返回结果 A
和 B
。
根据示例 2 中的权限,授予 EXECUTE BOOSTED PROCEDURE *
并拒绝 EXECUTE PROCEDURE myProc
,不允许执行 myProc
过程。
根据示例 3 中的权限,授予 EXECUTE BOOSTED PROCEDURE *
并拒绝 EXECUTE BOOSTED PROCEDURE myProc
,不允许执行 myProc
过程。
相比之下,当授予
-
EXECUTE PROCEDURE myProc
:myProc
过程返回结果A
和B
。 -
EXECUTE BOOSTED PROCEDURE myProc
:不允许执行myProc
过程。 -
EXECUTE PROCEDURE myProc
和EXECUTE BOOSTED PROCEDURE myProc
:myProc
过程返回结果A
、B
和C
。
EXECUTE ADMIN PROCEDURE
权限
执行管理员过程(使用 @Admin
注解)的能力可以通过 EXECUTE ADMIN PROCEDURES
权限授予。此权限等同于在每个管理员过程上授予EXECUTE PROCEDURE
和EXECUTE BOOSTED PROCEDURE
权限。任何新添加的 admin
过程都会自动包含在此权限中。以下查询显示了如何授予此权限的示例
GRANT EXECUTE ADMIN PROCEDURES ON DBMS TO adminProcedureExecutor
拥有 adminProcedureExecutor
角色的用户可以以提升的权限运行任何 admin
过程。结果角色具有允许执行所有管理员过程的权限。
使用以下查询将角色 adminProcedureExecutor
的所有权限列为命令
SHOW ROLE adminProcedureExecutor PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
为了将其与 EXECUTE PROCEDURE
和 EXECUTE BOOSTED PROCEDURE
权限进行比较,重新审视 myProc
过程,但这次将其视为一个 admin
过程,当允许执行时,它将给出结果 A
、B
和 C
。
如果用户仅被授予 EXECUTE PROCEDURE myProc
或 EXECUTE BOOSTED PROCEDURE myProc
权限,则不允许执行 myProc
过程。
但是,对于被授予 EXECUTE ADMIN PROCEDURES
或同时授予 EXECUTE PROCEDURE myProc
和 EXECUTE BOOSTED PROCEDURE myProc
的用户,myProc
过程返回结果 A
、B
和 C
。
任何被拒绝的 EXECUTE
权限都会导致不允许执行该过程。在这种情况下,无论是拒绝 EXECUTE PROCEDURE
、EXECUTE BOOSTED PROCEDURE
还是 EXECUTE ADMIN PROCEDURES
都不重要。
EXECUTE USER DEFINED FUNCTION
权限
执行用户定义函数(UDF)的能力可以通过 EXECUTE USER DEFINED FUNCTION
权限授予。具有此权限的角色被允许执行与名称通配符匹配的 UDF。
|
以下查询显示了如何授予此权限的示例
GRANT EXECUTE USER DEFINED FUNCTION apoc.coll.* ON DBMS TO functionExecutor
或简写形式
GRANT EXECUTE FUNCTION apoc.coll.* ON DBMS TO functionExecutor
拥有 functionExecutor
角色的用户可以运行 apoc.coll
命名空间中的任何 UDF。此处的函数使用用户自己的权限运行。
结果角色具有仅允许执行 apoc.coll
命名空间中 UDF 的权限。使用以下查询将角色 functionExecutor
的所有权限列为命令
SHOW ROLE functionExecutor PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
为了允许执行所有 UDF 但只排除少数几个,您可以授予 EXECUTE USER DEFINED FUNCTIONS *
并拒绝不需要的函数。
以下查询允许执行所有 UDF,除了以 apoc.any.prop
开头的那些
GRANT EXECUTE USER DEFINED FUNCTIONS * ON DBMS TO deniedFunctionExecutor
DENY EXECUTE USER DEFINED FUNCTION apoc.any.prop* ON DBMS TO deniedFunctionExecutor
或简写形式
GRANT EXECUTE FUNCTIONS * ON DBMS TO deniedFunctionExecutor
DENY EXECUTE FUNCTION apoc.any.prop* ON DBMS TO deniedFunctionExecutor
结果角色具有仅允许执行所有过程(以 apoc.any.prop
开头的除外)的权限。使用以下查询将角色 deniedFunctionExecutor
的所有权限列为命令
SHOW ROLE deniedFunctionExecutor PRIVILEGES AS COMMANDS
命令 |
---|
|
|
行数:2 |
apoc.any.property
和 apoc.any.properties
被阻止,任何其他以 apoc.any.prop
开头的过程也如此。
EXECUTE BOOSTED USER DEFINED FUNCTION
权限
在执行用户定义函数(UDF)时使用提升权限的能力可以通过 EXECUTE BOOSTED USER DEFINED FUNCTION
权限授予。具有此权限的用户在执行与名称通配符匹配的 UDF 时不会受到其其他权限的限制。EXECUTE BOOSTED USER DEFINED FUNCTION
权限仅影响权限提升,而不影响函数的执行。因此,还需要为这些函数授予 EXECUTE USER DEFINED FUNCTION
权限。执行具有提升权限的函数需要同时具备 EXECUTE USER DEFINED FUNCTION
和 EXECUTE BOOSTED USER DEFINED FUNCTION
权限。
|
以下查询显示了如何授予 EXECUTE BOOSTED USER DEFINED FUNCTION
权限的示例
GRANT EXECUTE USER DEFINED FUNCTION * ON DBMS TO boostedFunctionExecutor
GRANT EXECUTE BOOSTED USER DEFINED FUNCTION apoc.any.properties ON DBMS TO boostedFunctionExecutor
或简写形式
GRANT EXECUTE FUNCTION * ON DBMS TO boostedFunctionExecutor
GRANT EXECUTE BOOSTED FUNCTION apoc.any.properties ON DBMS TO boostedFunctionExecutor
因此,拥有 boostedFunctionExecutor
角色的用户可以以完全权限运行 apoc.any.properties
,并查看节点/关系上的所有属性,而不仅仅是用户具有 READ
权限的属性。如果没有 EXECUTE USER DEFINED FUNCTION
,则根本无法执行任何 UDF。
结果角色具有允许以提升权限执行 UDF apoc.any.properties
的权限,以及以用户自身权限执行所有其他 UDF 的权限。使用以下查询将角色 boostedFunctionExecutor
的所有权限列为命令
SHOW ROLE boostedFunctionExecutor PRIVILEGES AS COMMANDS
命令 |
---|
|
|
行数:2 |
DBMS SETTING
权限
通过 SHOW SETTING
权限可以授予显示配置设置的能力。具有此权限的角色被允许查询与名称通配符匹配的配置设置。
有关语法描述的更多详细信息,请参阅数据库管理命令语法。 |
命令 | 描述 |
---|---|
|
使指定角色能够查询给定配置设置。 |
以下查询显示了如何授予此权限的示例
GRANT SHOW SETTING server.bolt.* ON DBMS TO configurationViewer
拥有 configurationViewer
角色的用户可以查询 server.bolt
命名空间中的任何设置。
更新后的角色 configurationViewer
具有仅允许查询 server.bolt
命名空间中设置的权限。使用以下查询将角色 configurationViewer
的所有权限列为命令
SHOW ROLE configurationViewer PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
要拒绝角色访问特定设置,首先授予 SHOW SETTINGS *
,然后拒绝不需要的设置。例如,以下查询允许查询所有设置,除了以 dbms.security
开头的那些
GRANT SHOW SETTINGS * ON DBMS TO deniedConfigurationViewer
DENY SHOW SETTING dbms.security* ON DBMS TO deniedConfigurationViewer
结果角色具有允许查询所有设置(以 dbms.security
开头的除外)的权限。使用以下查询将角色 deniedConfigurationViewer
的所有权限列为命令
SHOW ROLE deniedConfigurationViewer PRIVILEGES AS COMMANDS
命令 |
---|
|
|
行数:2 |
如查询结果所示,对任何以 dbms.security
开头的设置的访问都被阻止,但其余设置仍然可以查询。
授予 ALL DBMS PRIVILEGES
以下权限可以通过一个命令实现
-
创建、删除、分配、移除和显示角色。
-
创建、修改、删除、显示和模拟用户。
-
创建、修改和删除数据库和别名。
-
启用、修改、重命名、重新分配、解除分配和删除服务器。
-
显示、分配和移除权限。
-
以提升的权限执行所有过程。
-
以提升的权限执行所有用户定义函数。
-
显示所有配置设置。
有关语法描述的更多详细信息,请参阅数据库管理命令语法。 |
GRANT [IMMUTABLE] ALL [[DBMS] PRIVILEGES]
ON DBMS
TO role[, ...]
例如,要授予角色 dbmsManager
以上能力,请使用以下查询
GRANT ALL DBMS PRIVILEGES ON DBMS TO dbmsManager
授予的权限可以通过 SHOW PRIVILEGES
命令查看
SHOW ROLE dbmsManager PRIVILEGES AS COMMANDS
命令 |
---|
|
行数:1 |
过程、用户定义函数和设置的名称通配符
过程、用户定义函数和设置名称的名称通配符是文件扩展名通配符的简化版本。它只允许两个通配符:*
和 ?
,分别用于多字符和单字符匹配。在此情况下,*
表示 0 个或更多字符,?
精确匹配一个字符。
名称通配符受限于Cypher 手册 → 命名规则和建议,但有一个例外,即它可能包含点、星号和问号,而无需使用反引号进行转义。 名称通配符的每个由点分隔的部分都可以单独引用。例如,允许使用 |
给定以下过程列表
-
mine.public.exampleProcedure
-
mine.public.exampleProcedure1
-
mine.public.exampleProcedure2
-
mine.public.with#Special§Characters
-
mine.private.exampleProcedure
-
mine.private.exampleProcedure1
-
mine.private.exampleProcedure2
-
mine.private.with#Special§Characters
-
your.exampleProcedure
以下示例演示了如何在控制过程访问中使用名称通配符模式。请注意,相同的规则也适用于用户定义函数和设置。
GRANT EXECUTE PROCEDURE * ON DBMS TO globbing1
拥有 globbing1
角色的用户可以运行所有过程。
GRANT EXECUTE PROCEDURE mine.*.exampleProcedure ON DBMS TO globbing2
拥有 globbing2
角色的用户可以运行过程 mine.public.exampleProcedure
和 mine.private.exampleProcedure
,但不能运行其他过程。
GRANT EXECUTE PROCEDURE mine.*.exampleProcedure? ON DBMS TO globbing3
拥有 globbing3
角色的用户可以运行过程 mine.public.exampleProcedure1
、mine.private.exampleProcedure1
和 mine.private.exampleProcedure2
,但不能运行其他过程。
GRANT EXECUTE PROCEDURE *.exampleProcedure ON DBMS TO globbing4
拥有 globbing4
角色的用户可以运行过程 your.exampleProcedure
、mine.public.exampleProcedure
和 mine.private.exampleProcedure
,但不能运行其他过程。
GRANT EXECUTE PROCEDURE mine.public.exampleProcedure* ON DBMS TO globbing5
拥有 globbing5
角色的用户可以运行过程 mine.public.exampleProcedure
、mine.public.exampleProcedure1
和 mine.public.exampleProcedure42
,但不能运行其他过程。
GRANT EXECUTE PROCEDURE `mine.public.with#*§Characters`, mine.private.`with#Spec???§Characters` ON DBMS TO globbing6
拥有 globbing6
角色的用户可以运行过程 mine.public.with#Special§Characters
和 mine.private.with#Special§Characters
,但不能运行其他过程。
名称通配符可以完全或部分引用。在两种情况下, |