Redshift 表所有权和删除查询

Posted

技术标签:

【中文标题】Redshift 表所有权和删除查询【英文标题】:Redshift Table Ownership And Drop Query 【发布时间】:2020-04-07 12:47:49 【问题描述】:

用户和范围 -

    write_user - 对所有表的所有访问权限 read_user - 对所有表的读取权限 backup_pruner - 对架构备份中的所有表的所有 GRANTS。

我的问题陈述 -

我编写了一个自动化程序,它必须删除名为备份的模式的表,其中表是由 write_user 创建的。

现在,为了删除表,我必须使用 backup_pruner 用户,这就是问题所在。 由于 write_user 在此处创建表,因此它是备份中所有表的所有者,并且只有所有者/超级用户可以删除表。

如何从这里开始?

回答为什么要使用单独的用户来删除表的问题 -

如果使用不当/任何极端情况,将表格作为 DROP 的可访问性收紧,那么对于其他表格也可能是灾难性的。

【问题讨论】:

【参考方案1】:

考虑使用使用SECURITY DEFINER 创建的存储过程来删除表。以这种方式创建的 SP 以创建者的权限运行。

您可以定义允许删除的表名列表,SP 在采取行动之前会对其进行检查。

我在 GitHub 上创建了这种方法的示例:sp_controlled_access

【讨论】:

感谢您的帮助。

以上是关于Redshift 表所有权和删除查询的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Redshift 中并行运行查询?

删除从当前时间起 2 个月前最近访问的 Redshift 表

删除 Redshift 架构中的所有表 - 不删除权限

删除由 Amazon Redshift 创建的临时表

是否可以在所有 Redshift 程序中搜索文本?

Redshift。用一个共同的列来查询所有的表格