Cấp CHỌN trên tất cả các bảng trong Redshift


10

Tôi đang cố gắng gán SELECTđặc quyền cho một nhóm trong Redshift. Vì vậy, tôi đã tạo một nhóm và một người dùng trong nhóm đó:

CREATE GROUP data_viewers;
CREATE USER <user> PASSWORD '<password>' IN GROUP data_viewers;

Bây giờ tôi muốn cho phép nhóm này có thể đọc dữ liệu từ bất kỳ bảng nào:

GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC TO GROUP data_viewers;

Lệnh trả về GRANT. Bây giờ khi tôi kết nối với Redshift với tư cách là người dùng mới được tạo và SELECT * FROM something.something;tôi gặp sự cố:

quyền bị từ chối cho lược đồ gì đó

Tôi đã thử cấp quyền cho một cái gì đó: GRANT SELECT ON ALL TABLES IN SCHEMA something TO GROUP data_viewers;nhưng điều này đã không thay đổi bất cứ điều gì.


Làm cách nào tôi có thể cho phép người dùng trong nhóm của tôi lấy SELECTdữ liệu từ bất kỳ bảng nào trong lược đồ?

Câu trả lời:


15

Bạn cũng cần USAGEđặc quyền (ít nhất) cho lược đồ :

GRANT USAGE ON SCHEMA something TO GROUP data_viewers;

Ví dụ Postgres liên quan:

Hãy nhớ rằng bạn chỉ cấp quyền cho các bảng đã có sẵn. Không áp dụng cho các bảng được tạo sau này. Để bao gồm những người, quá:

ALTER DEFAULT PRIVILEGES FOR USER role_that_creates_tables
IN SCHEMA public
GRANT SELECT ON TABLES TO GROUP data_viewers;

Amazon Redshift thực hiện DEFAULT PRIVILEGESlà tốt.

Dưới đây là một cuốn sách nấu ăn hoàn chỉnh cho Postgres:

Hãy nhận biết một số khác biệt giữa Postgres chính và Redshift! Redshift dính vào các nhómngười dùng riêng biệt , trong khi Postgres thay thế bằng khái niệm phổ quát về vai trò :

Và tôi không chắc làm thế nào Redshift xử lý các chuỗi ...


Cảm ơn bạn!! Tôi thậm chí còn không biết về khái niệm DEFAULT PRIVILEGEStrong Redshift trước khi đọc câu trả lời này! Nó hoàn toàn giải quyết vấn đề cho tôi!
Marco Roy

11

Tôi có cùng nhu cầu đối với người dùng chỉ đọc Redshift. Sau khi đọc tài liệu, tôi đã đưa ra một loạt các truy vấn:

-- 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;

Nếu bạn muốn thực sự loại bỏ người dùng sau này, bạn phải quay ngược lại khá nhiều.


Việc thu hồi cuối cùng trên CREATE thực sự không cần thiết vì quyền này không được đưa ra theo mặc định.
nikel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.