Sql 对某些用户隐藏Amazon红移集群中的数据库

Sql 对某些用户隐藏Amazon红移集群中的数据库,sql,amazon-web-services,amazon-redshift,Sql,Amazon Web Services,Amazon Redshift,是否有可能在Amazon Redshift中对某些用户隐藏数据库的存在和访问(包括其架构、表等)。 默认情况下,似乎每个用户都可以看到其他数据库,即使他没有选择数据的权限或任何其他(非默认)特权 我试过了 REVOKE ALL PRIVILEGES ON DATABASE testdb FROM testdbuser; 类似但仍然是testdb的用户可以连接到testdb,甚至可以在SQL工具中查看其对象浏览器中的所有其他对象(此处:Aginity Redshift Workbench) 理想

是否有可能在Amazon Redshift中对某些用户隐藏数据库的存在和访问(包括其架构、表等)。 默认情况下,似乎每个用户都可以看到其他数据库,即使他没有选择数据的权限或任何其他(非默认)特权

我试过了

REVOKE ALL PRIVILEGES ON DATABASE testdb FROM testdbuser;
类似但仍然是testdb的用户可以连接到testdb,甚至可以在SQL工具中查看其对象浏览器中的所有其他对象(此处:Aginity Redshift Workbench)

理想情况下,testdbuser将无法看到任何其他内容,除非他被明确授予访问权限

注意,testdbuser不是超级用户


谢谢

不幸的是,这在今天是不可能的。Redshift不支持REVOKE CONNECT FROM DATABASE命令,因此用户可以连接到任何数据库


因为红移是基于PostgreSQL构建的,一旦连接,用户可以从系统表中读取集群中所有数据库的列表,通过连接到每个数据库,可以从系统表中读取模式、表甚至表列的列表,即使通过使用REVOKE阻止他们读取这些表中的数据。。。从架构或撤消。。。从表中。

尝试从公共组和特定用户中撤销

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_目录信息


用户仍然可以通过暴力攻击找到所有数据库,只需尝试切换或连接到所有可能的字符串。

公共模式是公共的。使用不同的模式。我相信信息模式已经限定在特定数据库的范围内,因此不必限制对它的访问。这在今天仍然适用吗?甚至我也在寻找一种方法,防止用户在Aginity Workbench的对象浏览器中查看特定模式中的对象。但在默认情况下,用户似乎可以查看数据库中的所有模式及其对象,当他/她尝试查询特定对象时,唯一的权限检查出现在图片中。是的,我认为直到今天都是这样@