Sal*_*ali 13 permissions redshift
我正在尝试为SELECT
Redshift 中的组分配权限。所以我在该组中创建了一个组和一个用户:
CREATE GROUP data_viewers;
CREATE USER <user> PASSWORD '<password>' IN GROUP data_viewers;
Run Code Online (Sandbox Code Playgroud)
现在我想让这个组能够从任何表中读取数据:
GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC TO GROUP data_viewers;
Run Code Online (Sandbox Code Playgroud)
命令返回GRANT
。现在,当我以新创建的用户身份连接到 Redshift 并发出问题时,SELECT * FROM something.something;
我得到:
架构某物的权限被拒绝
我尝试授予某些东西的权限:GRANT SELECT ON ALL TABLES IN SCHEMA something TO GROUP data_viewers;
但这并没有改变任何东西。
如何允许我组中的用户SELECT
访问架构中任何表中的数据?
Erw*_*ter 17
您还需要USAGE
(至少)架构的权限:
GRANT USAGE ON SCHEMA something TO GROUP data_viewers;
Run Code Online (Sandbox Code Playgroud)
相关 Postgres 示例:
请记住,您只授予了对现有表的权限。不适用于以后创建的表。也涵盖这些:
ALTER DEFAULT PRIVILEGES FOR USER role_that_creates_tables
IN SCHEMA public
GRANT SELECT ON TABLES TO GROUP data_viewers;
Run Code Online (Sandbox Code Playgroud)
Amazon Redshift 也实施DEFAULT PRIVILEGES
了。
这是 Postgres 的完整食谱:
请注意主线 Postgres 和 Redshift 之间的一些差异!Redshift 坚持将用户和组分开,而 Postgres 将其替换为角色的通用概念:
而且我不确定 Redshift 如何处理序列......
小智 16
我对 Redshift 只读用户也有同样的需求。阅读文档后,我提出了一组查询:
-- Create Read-Only Group
CREATE GROUP ro_group;
-- Create User
CREATE USER ro_user WITH password PASSWORD;
-- Add User to Read-Only Group
ALTER GROUP ro_group ADD USER ro_user;
-- Grant Usage permission to Read-Only Group to specific Schema
GRANT USAGE ON SCHEMA "ro_schema" TO GROUP ro_group;
-- Grant Select permission to Read-Only Group to specific Schema
GRANT SELECT ON ALL TABLES IN SCHEMA "ro_schema" TO GROUP ro_group;
-- Alter Default Privileges to maintain the permissions on new tables
ALTER DEFAULT PRIVILEGES IN SCHEMA "ro_schema" GRANT SELECT ON TABLES TO GROUP ro_group;
-- Revoke CREATE privileges from group
REVOKE CREATE ON SCHEMA "ro_schema" FROM GROUP ro_group;
Run Code Online (Sandbox Code Playgroud)
如果您想稍后实际删除用户,则几乎必须向后退。
归档时间: |
|
查看次数: |
39993 次 |
最近记录: |