如何在Redshift中创建只读用户

4

我需要在Redshift集群数据库中创建一个只读用户账户。一旦用户账户被创建,该用户就不能在PUBLIC架构中创建任何对象,但是他们可以选择任何对象。由于默认情况下所有用户都被授予CREATE和USAGE权限,因此请指导我如何限制PUBLIC SCHEMA中的对象创建。

版本:

PostgreSQL 8.0.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3), Redshift 1.0.735

谢谢您。

您好,

我注意到了您的回复。是的,它有效。但是我有一个澄清。

如果您执行以下操作并在数据库中创建任何用户(包括现有用户),那么他们将无法在PUBLIC模式中创建对象。

postgres=# REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE

如果我将其重置(即以下内容),那么它将适用于所有用户,所有用户都能在数据库中创建对象。

postgres=# grant create on schema public to public;
GRANT

我的意图是,我需要限制某些用户的对象创建(CREATE priv)。而不是所有数据库用户。例如,我需要创建两个用户。第一个是只读的。第二个是读写的。我应该能够从其中一个用户中撤销CREATE权限。而不是从所有用户中撤销。
如果我有错误,请指导我。
再次感谢你。

您可以使用CREATE GROUP命令创建一个用户组,并授予仅SELECT和USAGE权限,但无论如何都需要执行REVOKE CREATE ON SCHEMA public FROM PUBLIC;命令... - eddy85br
1个回答

3
作为默认设置,每个用户都可以访问并在“public”模式下创建表格,因为“PUBLIC”(所有用户)在“public”模式下具有所有特权。您可以使用以下命令从用户中撤销对“PUBLIC”的CREATE特权。
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
  • "public": 架构名称
  • "PUBLIC": “所有用户”的标识符

运行上述命令后,您需要运行GRANT命令,以允许用户访问“PUBLIC”架构。

GRANT CREATE ON SCHEMA public TO {user-name};

本文介绍了有关IT技术的内容。


1
嗨Masashi,感谢您之前的邮件。是的,我能够撤销PUBLIC(所有用户)对公共模式的CREATE权限。但我需要从一个用户账户中特别撤销,而不是从所有用户(PUBLIC)中撤销。请指导我如何操作。 - user3258784

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接