PostgreSQL / Redshift - 阻止访问系统视图

时间:2014-10-15 14:16:08

标签: postgresql amazon-redshift

我正在使用Redshift(基于PostgreSQL)并且需要创建一个仅限于特定数据库模式的用户。它们还需要被锁定在系统视图之外。我在数据库集群上运行了以下命令:

revoke create on schema information_schema from public
revoke usage on schema information_schema from public

revoke create on schema pg_catalog from public
revoke usage on schema pg_catalog from public

revoke create on schema public from public
revoke usage on schema public from public

接下来,我创建一个用户并以该用户身份运行:

SET SESSION AUTHORIZATION someUser

然后我尝试访问一些系统视图:

select * from information_schema.tables
  

执行SQL命令时发生错误:
  select * from information_schema.tables
  错误:架构information_schema [SQL State = 42501]

的权限被拒绝
select * from pg_catalog.pg_user
  

执行SQL命令时发生错误:
  select * from pg_catalog.pg_user
  错误:模式pg_catalog [SQL状态= 42501]

的权限被拒绝

到目前为止一切都很好 - 用户无法在系统视图中浏览。

但出于某种原因,当我运行以下内容时,它会成功:

select * from pg_user

换句话说,如果用户在没有指定pg_catalog架构的情况下尝试查询pg_user,他们就能够看到系统中的用户。

关于如何防止这种情况的任何想法?

0 个答案:

没有答案