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

用户和范围 -

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

我的问题陈述 -

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

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

如何从这里开始?

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

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

【问题讨论】:

    标签: amazon-web-services amazon-redshift


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的帮助。