为什么在 HANA 数据库中创建用户时显示其他甚至未分配的角色?

Why showing other roles even not assigned while creating User in HANA Database?

我是 HANA 数据库的新手。我只是想通过 Eclipse 系统编辑器在 HANA DB 中创建新用户。作为用户创建的一部分,我 select 只编辑了以下角色。

sap.hana.xs.lm.roles::开发人员

但是,由于执行查询 select role_name from "PUBLIC"."EFFECTIVE_ROLES" where USER_NAME = 'TEST_USER';

ROLE_NAME

PUBLIC

sap.hana.xs.lm.roles::开发人员

sap.hana.uis.db::SITE_USER

sap.hana.xs.lm.roles::显示

sap.hana.xs.lm.pe.roles::PE_Display

为什么即使没有 selected 也会向用户添加其他角色?

SAP HANA 中的角色是权限其他角色的集合。 这可能会导致一种情况,即一个角色包含多个其他角色,每个角色都可以包含其他角色和权限。这样,您就拥有了对用户帐户的直接和间接角色和权限分配的层次结构。

您查询的系统视图为EFFECTIVE_PRIVILEGES。它最重要的一个功能是 展开 所有直接分配的角色 间接分配(有效地通过角色权限层次结构)并return 所有这些作业。
这种层次结构的“展开”不是 easy/efficient 普通 SQL 可以做到的,因此此系统视图将此特殊功能作为内置功能提供。

预定义角色 sap.hana.xs.lm.roles::Developer 包含其他几个角色(如您的查询结果所示)。
要仔细检查,您甚至可以通过导航到 sap.hana.xs.lm.roles 包来查看 HANA XS 存储库中的角色定义,因为此角色作为 design-time 人工制品提供。

如果您实际上只想查看 roles/privileges 对用户(或角色)的 直接 分配,请使用系统视图 GRANTED_ROLESGRANTED_PRIVILEGES 会给你的。