我有啥方法可以按表级别限制对 Redshift 外部模式的访问?

Posted

技术标签:

【中文标题】我有啥方法可以按表级别限制对 Redshift 外部模式的访问?【英文标题】:I there any way to limit access to Redshift external schemas by table level?我有什么方法可以按表级别限制对 Redshift 外部模式的访问? 【发布时间】:2020-03-11 12:14:46 【问题描述】:

我目前在一个项目中工作,我们正在使用 Redshift 和 Spectrum 来管理一些外部模式以及存储在 S3 中的数据。

为了访问外部架构,用户必须属于对该外部架构具有 USAGE 权限的组,但似乎通过 USAGE 授权,该用户将能够查看和查询所有外部架构表。

我想做的是只授予特定表的 SELECT 权限,而不是整个架构。

这可能吗?我检查了 AWS 文档并尝试了不同的方法,但由于外部表具有特殊性质,我还没有找到任何有用的信息。

提前致谢。

【问题讨论】:

【参考方案1】:

您不能直接在外部表上执行此操作。

[删除了早期使用视图的方法,因为这无法解决问题]

【讨论】:

感谢您的回复@Swapnil,我已经尝试了视图但我收到错误:[0A000][500310] [Amazon](500310) Invalid operation: External tables are not supported in views; java.lang.RuntimeException: com.amazon.support.exceptions.ErrorException: [Amazon](500310) Invalid operation: External tables are not supported in views; 编辑了我的第一条评论。你回复太快了嘿嘿。 :) 恐怕你没有添加这个“没有模式绑定;”在您的视图的尽头。如果添加,它将起作用。如果是,请告诉我,我也会在我的答案中添加。 是的!就是这样,我现在要检查赠款是否适用于视图。谢谢@Swapnil Pandey 似乎没有办法实现这一点,因为我们仍然需要 USAGE 授权才能查询新视图,否则您会收到错误消息:´´´ [Amazon](500310) Invalid operation : 查询视图时模式 ´´´ 的权限被拒绝。

以上是关于我有啥方法可以按表级别限制对 Redshift 外部模式的访问?的主要内容,如果未能解决你的问题,请参考以下文章

Django - 有啥方法可以立即获取外键对象?

有啥方法可以计算 Redshift 中条件的运行总计?

有啥方法可以在 spark 中建立与 redshift 数据库的静态连接

AWS Redshift 可以用作服务吗?

限制对 Redshift 表的访问,仅授予对视图的访问权限

斯威夫特:有啥方法可以对用户隐藏文件?