只允许访问Redshift Spectrum中的View



我在Redshift Spectrum:上创建了一个外部表的简单视图

CREATE VIEW test_view AS (
SELECT * 
FROM my_external_schema.my_table
WHERE my_field='x'
) WITH NO SCHEMA BINDING;

通过阅读文档,我发现除非我允许访问底层架构和表,否则不可能访问视图。因此,如果我做以下声明:

GRANT SELECT ON test_view to my_user;

我试图在视图中查看数据,正如预期的那样,我得到了错误:

对架构my_external_schema 的权限被拒绝

要解决这个问题,我可以执行GRANT USAGE ON SCHEMA my_external_schema TO my_user,但这将对该架构内的所有表进行SELECT,这也是我试图避免的。

有没有解决方法可以避免这种情况?

对于普通的Redshift表,在模式上授予使用权限就足够了,因为权限不会在底层表上授予选择权限,Spectrum有类似的东西吗?

我无法使用Materialized View,因为数据集太大。

Spectrum(外部表(权限有点棘手。

只能在架构级别上对外部表执行"授予"one_answers"撤消"使用。

对于使用on schema语法的数据库用户和用户组,只能GRANTREVOKE对外部架构的USAGE权限。

如果要在外部表的顶部创建视图,则需要授予对外部架构的使用权限。并且不需要设置CCD_ 2也是不可能的。

ERROR:  Operation not supported on external tables

在您的情况下,您只需授予该用户对外部架构的使用权限。

GRANT usage on my_external_schema to my_user;

然后授予视图的权限。

GRANT Select on test_view to my_user;

最新更新