Redshift 表所有权和删除查询

格洛克什帕特拉

用户和范围 -

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

我的问题陈述 -

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

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

如何从这里进行?

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

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

乔哈里斯

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

您可以定义一个允许删除的表名列表,SP 在采取行动之前会检查这些表名。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章