mas*_*rcl 5 sql amazon-web-services amazon-redshift
是否可以对Amazon Redshift 中的某些用户隐藏数据库(包括其架构、表等)的存在和访问权限。默认情况下,似乎每个用户都可以看到其他数据库,即使他没有选择数据的权限,也没有任何其他(非默认)权限。
我试过
REVOKE ALL PRIVILEGES ON DATABASE testdb FROM testdbuser;
Run Code Online (Sandbox Code Playgroud)
和类似但仍然 testdbuser 可以连接到 testdb 数据库,甚至可以在 SQL 工具(这里:Aginity Redshift Workbench)的对象浏览器中查看所有其他对象。
理想情况下,testdbuser 除了明确授予访问权限的内容外,将无法看到其他任何内容。
注意,testdbuser 不是超级用户。
谢谢!
小智 5
尝试从 PUBLIC 组中撤销对特定用户
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.
Run Code Online (Sandbox Code Playgroud)
请注意,这可能会对所选数据库中的所有用户产生不良影响。您将需要在所有数据库上执行此操作,因为用户可以猜测另一个数据库名称并在那里查看 pg_catalog 信息。
用户仍然可以通过暴力攻击找到所有数据库,只需尝试切换或连接到所有可能的字符串即可。
不幸的是,今天这是不可能的。Redshift 不支持 REVOKE CONNECT FROM DATABASE 命令,因此用户可以连接到任何数据库。
因为Redshift是建立在PostgreSQL之上的,一旦连接,用户就可以从系统表中读取集群中所有数据库的列表,并且通过连接到每个数据库可以从系统表中读取架构、表甚至表列的列表,即使通过使用 REVOKE ... FROM SCHEMA 或 REVOKE ... FROM TABLE 阻止他们读取这些表中的数据。
| 归档时间: |
|
| 查看次数: |
3805 次 |
| 最近记录: |