Sự khác biệt giữa vai trò nhóm và vai trò đăng nhập là gì?


8

Có vẻ như đối với một người dùng, tôi nên tạo vai trò đăng nhập và hơn vai trò nhóm tương ứng vì tôi không thể trực tiếp gán đặc quyền cho vai trò đăng nhập. Có đúng không Mục đích của sự tách biệt như vậy là gì?

Ngoài ra, tôi hiểu rằng chỉ có thể xác thực với vai trò đăng nhập . Vậy mục đích của trường mật khẩu trong vai trò nhóm là gì? Hoặc có thể xác thực vai trò nhóm? Vậy thì tại sao bất cứ ai cũng cần vai trò đăng nhập?

Ngoài ra, có vẻ như tôi có thể đặt cả vai trò đăng nhập và nhóm trong pg_hba.

Câu trả lời:


7

Tất cả những câu hỏi này về cơ bản được trả lời trong tài liệu . Để được cụ thể:

Vai trò là một thực thể có thể sở hữu các đối tượng cơ sở dữ liệu và có các đặc quyền cơ sở dữ liệu; một vai trò có thể được coi là "người dùng", "nhóm" hoặc cả hai tùy thuộc vào cách sử dụng vai trò đó.

Điều đó ngụ ý rằng trong nội bộ không có sự khác biệt giữa những điều này, ngoại trừ LOGINtùy chọn. Nếu bạn chỉ định LOGIN(hoặc sử dụng CREATE USER):

CREATE ROLE dezso WITH LOGIN PASSWORD 'bla';

dezsosẽ trở thành một vai trò đăng nhập, nếu không thì không. Bạn cũng có thể chỉ định mật khẩu cho các vai trò không đăng nhập - nếu sau đó bạn quyết định biến nó thành vai trò đăng nhập, hãy sử dụng

CREATE ROLE non_login_role PASSWORD 'bla';

--later
ALTER ROLE non_login_role WITH LOGIN;

Bạn đã đúng khi nói 'chỉ có thể xác thực với vai trò đăng nhập' . Tuy nhiên, lưu ý rằng mật khẩu không phải lúc nào cũng cần thiết - nếu bạn sử dụng bất kỳ thứ gì khác ngoài các phương thức passwordhoặcmd5 xác thực. Mặt khác, điều này có nghĩa là một vai trò không có bộ LOGINtùy chọn không thể đăng nhập theo bất kỳ cách nào.

Cuối cùng, bạn có thể đặt quy tắc pg_hba.confcho các vai trò không đăng nhập, nhưng vì nó chỉ được sử dụng để xác thực, các vai trò đó sẽ không có hiệu lực (trừ khi bạn kích hoạt đăng nhập sau, như trên).


1
Tại sao tôi không thể gán đặc quyền bảng cho vai trò đăng nhập trong pgAdmin? Chỉ có vai trò nhóm được liệt kê ở đó.
Vlad

4
Nó phải là một số vấn đề thiết kế / lỗi - tôi đã tự hỏi chính mình. Các vấn đề như vậy là lý do tại sao tôi độc quyền sử dụng psqlvà các câu lệnh SQL bình thường cho mọi thứ.
dezso
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.