amazon-web-services - 仅授予对 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 有类似的东西吗?
我不能使用物化视图,因为数据集太大。
解决方案
Spectrum(外部表)权限有点棘手。
您只能在架构级别对外部表执行授予和撤销使用。
您只能将外部模式的USAGE权限授予或撤销给使用ON SCHEMA 语法的数据库用户和用户组。
如果要在外部表上创建视图,则需要授予外部模式的使用权限。而且不需要设置SELECT ON EXTERNAL TABLE
也是不可能的。
ERROR: Operation not supported on external tables
在您的情况下,您只需授予该用户对外部架构的使用权限。
GRANT usage on my_external_schema to my_user;
然后授予该视图的权限。
GRANT Select on test_view to my_user;
推荐阅读
- c# - 如何在提供 CultureInfo 的同时设置 DateTime 组件的顺序
- android - 无法使用 RETROFIT + COROUTINE 获取数据
- javascript - 如何将值插入到 PostgreSQL 中特定行的列中?
- sql - 出现时如何在两个破折号后返回字符
- wordpress - 您可以在管理面板的分类关系字段中显示 ACF 字段吗?
- php - 从 api 数组中获取数据
- google-cloud-platform - GCP Composer (Autoscaling) 环境错误 - “某些 GKE pod 无法正常运行”
- flutter - Flutter stack + 容器来构建类似火种的东西
- node.js - NodeJS ImageMagick 如何转换具有透明背景的图像
- proxy - APACHE - proxypass 问题(排除带有 wordpress 安装的子文件夹)