Các khoản tài trợ tối thiểu để truy cập bảng đơn chỉ đọc trên PostgreSQL


10

Sau đây là danh sách các lệnh dường như hoạt động để tạo người dùng mới (đăng nhập) và cấp quyền truy cập chỉ đọc cho một bảng được chỉ định trên PostgreQuery.

Giả sử rằng các lệnh này được thực thi khi đăng nhập với đủ đặc quyền (nghĩa là postgresđăng nhập trong cài đặt mặc định).

CREATE ROLE user_name NOSUPERUSER NOCREATEDB 
NOCREATEROLE NOINHERIT LOGIN PASSWORD 'pwd' VALID UNTIL 'infinity';

Bây giờ tôi muốn cấp selecttrên bảng tab_abctrên cơ sở dữ liệu db_xyz, vì vậy nó đi (cơ sở dữ liệu db_xyzđược chọn là hiện tại thông qua PGAdmin hoặc đại loại như thế):

grant select on tab_abc to user_name;

Câu hỏi là: điều này là đủ hay nên có nhiều khoản tài trợ (cơ sở dữ liệu connect, usagecó thể)?

Các lệnh này dường như hoạt động với tôi, nhưng cài đặt mặc định của tôi có cài đặt bảo mật mặc định. Tôi nên thêm những khoản trợ cấp nào nếu quản trị viên máy chủ cấu hình bảo mật mạnh hơn?

Có vẻ như tôi không cần phải cấp connectcũng không usage- điều đó có liên quan trong khi cấp selectkhông? Có phải luôn luôn như vậy?

Câu trả lời:


12

Câu hỏi là: điều này có đủ hay không nên có nhiều khoản tài trợ hơn (kết nối cơ sở dữ liệu, có thể sử dụng)?

Bảo mật có thể được tăng cường từ mặc định chủ yếu ở những điểm sau:

  • Các pg_hba.conftập tin. Nó lọc các kết nối trước khi bất kỳ đặc quyền cơ sở dữ liệu được xem xét. Mặc định là tương đối mở cho các kết nối cục bộ, nhưng nó có thể bị giới hạn trong một danh sách rõ ràng về cơ sở dữ liệu, tên người dùng và nguồn gốc mạng.

  • Các quyền cho công chúng , vai trò giả mà bất cứ ai cũng có. Người dùng chỉ có thể kết nối ngầm nếu đặc quyền kết nối được cấp cho PUBLIC. Xem Người dùng đã tạo có thể truy cập tất cả các cơ sở dữ liệu trong PostgreSQL mà không cần bất kỳ khoản tài trợ nào . Một cơ sở dữ liệu có thể có tất cả các đặc quyền bị thu hồi từ công chúng. Xem REVOKE trong tài liệu cho phiên bản PostgreSQL chính mà bạn đang sử dụng.

  • Sự tồn tại của publiclược đồ. Nó được tạo với cơ sở dữ liệu theo mặc định để thuận tiện nhưng không bắt buộc. Thay vì loại bỏ các quyền công khai khỏi publiclược đồ, có thể có ý nghĩa đối với các DBA chỉ bỏ publiclược đồ khi người dùng mới không nên có quyền ngầm.

Trong trường hợp khi các giá trị mặc định này bị xóa, để đọc một bảng, người dùng mới phải được cấp:

GRANT CONNECT ON DATABASE dbname TO username;

Ở cấp độ cơ sở dữ liệu:

GRANT USAGE ON SCHEMA schemaname TO username;
GRANT SELECT ON schemaname.tablename TO username;
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.