是否有可能隐藏某些用户在Amazon Redshift 中隐藏和访问数据库(包括他们的架构,表格等)。 默认情况下,似乎每个用户都能够看到其他数据库,即使他没有权限选择数据也没有任何其他(非默认)权限。
我试过
REVOKE ALL PRIVILEGES ON DATABASE testdb FROM testdbuser;
和类似但仍然testdbuser可以连接到testdb DB,甚至可以在SQL工具中看到对象浏览器中的所有其他对象(这里是:Aginity Redshift Workbench)。
理想情况下,除了明确授予访问权限之外,testdbuser将无法看到任何其他内容。
注意,testdbuser不是超级用户。
谢谢!
答案 0 :(得分:4)
尝试从PUBLIC组撤消vs特定用户
REVOKE USAGE ON SCHEMA information_schema FROM PUBLIC;
REVOKE USAGE ON SCHEMA pg_catalog FROM PUBLIC; -- This should suffice, but...
REVOKE SELECT ON TABLE pg_catalog.pg_database FROM PUBLIC; -- just to be sure.
请注意,这可能会对所选数据库中的所有用户产生不良影响。 您需要在所有数据库上执行此操作,因为用户可以猜测另一个数据库名称并在那里查看pg_catalog信息。
只需尝试切换或连接所有可能的字符串,用户仍然可以通过暴力攻击找到所有数据库。
答案 1 :(得分:3)
不幸的是,今天不可能。 Redshift不支持REVOKE CONNECT FROM DATABASE命令,因此用户可以连接到任何数据库。
因为Redshift是基于PostgreSQL构建的,所以一旦连接,用户就可以从系统表中读取集群中所有数据库的列表,通过连接到每个数据库,可以读取模式,表,甚至表列的列表。系统表,即使通过使用REVOKE ... FROM SCHEMA或REVOKE ... FROM TABLE阻止它们读取这些表中的数据。