不可变角色和权限企业版Aura 不可用
不可变权限对于限制那些本身可以管理 权限 的用户的操作非常有用。不可变角色对于提供系统角色(表现为 DBMS 的永久组成部分)非常有用。
|
仅应在变更极少的场景下使用不可变权限和角色。它们被设计为难以修改,因此在进行更改时应保持谨慎(例如,当 DBMS 已通过其他方式隔离且可以可靠地防止未经授权的访问时)。通常,此类修改应仅在 DBMS 的调试阶段执行一次。 |
管理不可变角色和权限
在确保 DBMS 与外部连接安全隔离后,请遵循以下步骤来管理不可变角色和权限:
-
将配置设置
dbms.security.auth_enabled更改为false。 -
重启 DBMS。
-
像创建或移除普通权限和角色一样创建或移除不可变权限和角色,但需额外添加
IMMUTABLE关键字。参见 示例。 -
将配置设置
dbms.security.auth_enabled改回true。 -
重启 DBMS。
以这种方式创建的权限和角色现在显示为 DBMS 的不可变部分。如果您想要更改或移除它们,必须重复将 dbms.security.auth_enabled 设置为 false 的过程。
示例
以下示例演示了如何使用 Cypher 来管理不可变角色和权限。
限制可管理权限的用户的操作
为了防止所有用户(包括那些拥有 PRIVILEGE MANAGEMENT 权限的用户)执行数据库管理操作,请将不可变权限附加到 PUBLIC 角色。PUBLIC 角色隐含且不可撤销地适用于所有用户。
-
确保您已完成 管理不可变角色和权限 中的步骤 1 和 2。
-
运行以下命令以拒绝
PUBLIC角色的IMMUTABLE DATABASE MANAGEMENT权限:DENY IMMUTABLE DATABASE MANAGEMENT ON DBMS TO PUBLIC -
验证
IMMUTABLE关键字是否已添加到权限中:SHOW PRIVILEGES WHERE IMMUTABLE表 1. 结果 access(访问) action(动作) resource(资源) graph(图) segment role(角色) immutable(不可变) "DENIED""database_management""database""*""database""PUBLIC"true行:2
结果显示,所有用户都被禁止添加或移除权限,包括
admin用户。 -
确保您已完成 管理不可变角色和权限 中的步骤 4 和 5。
创建不可更改的永久角色
您可以使用不可变角色来创建永久的内置系统角色,即使是拥有 ROLE MANAGEMENT 权限 的用户也无法修改这些角色。
例如,您想要创建一个 analyst 角色,该角色不能被删除、重命名,其权限也不能被更改(即使是拥有 ROLE MANAGEMENT 和 PRIVILEGE MANAGEMENT 权限的用户也无法操作)。
-
确保您已完成 管理不可变角色和权限 中的步骤 1 和 2。
-
创建一个不可变角色以容纳不可变权限:
CREATE IMMUTABLE ROLE analyst -
不可变地授予
MATCH权限:GRANT IMMUTABLE MATCH {*} ON GRAPH * ELEMENTS * TO analyst -
确保您已完成 管理不可变角色和权限 中的步骤 4 和 5。
现在,即使是拥有
ROLE MANAGEMENT和PRIVILEGE MANAGEMENT权限的用户,也无法执行以下任何操作:删除analyst角色DROP ROLE analyst从analyst角色中撤销MATCH权限REVOKE MATCH {*} ON GRAPH * ELEMENTS * FROM analyst重命名analyst角色RENAME ROLE analyst TO dataReader
|
虽然不可变角色的组成(名称、存在性、关联权限)是不可变的,但它们对用户的分配并非不可变。这意味着任何拥有 |
|
只有不可变权限(例如上述示例中的 |