如何创建在运行时只能访问选定表的角色

问题描述

我正在 HDI 容器中运行 SAP HANA 数据库并创建了相应的 HDI 容器管理员。我希望能够授予用户(出于支持目的)不是对整个架构的访问权限,而是仅对几个选定的表的访问权限。怎么做?我在网上找到的所有示例都是这样的 - 并且仅授予对整个架构的访问权限

CREATE ROLE SCHEMA_NAME.ROLE_NAME NO GRANT TO CREATOR; 
GRANT SELECT ON SCHEMA SCHEMA_NAME TO ROLE_NAME;

我知道有一个选项可以在部署期间使用 .hdbrole 文件,也可以在其中写入对象权限,但似乎每次需要创建新角色时都必须运行部署。我想直接从 sql 控制台创建这些角色。是否有可能?如果是,该怎么做?

解决方法

通过在 SQL 控制台中运行 CREATE ROLEGRANT 命令,您可以创建目录/运行时角色。 这些不能传输到任何其他容器或数据库,而只能存在于数据库的这个实例中。

现在,在处理 HDI 容器或容器化应用程序时,这通常不是您想要的。 动态创建模式对象通常会导致操作挑战(谁可以访问什么、何处、何时、为什么、如何访问?),而应该避免。

但是,当然,您可以简单地使用具有适当权限的任何用户连接到容器并运行这些命令。这包括通常的 GRANT SELECT on <table_name> TO <role>;它不必是整个架构。