Ở một bài viết trước đây, tôi có hướng dẫn các bạn cấu hình để có thể kết nối từ máy bên ngoài vào trong PostgreSQL.

Đọc thêm  Cấu hình để kết nối với PostgreSQL từ bên ngoài

Trong bài viết này, tôi sẽ hướng dẫn bạn cụ thể hơn về cách cấu hình kết nối vào PostgreSQL bằng pg_hba.conf nhé.

Khi một máy khách (client) cố gắng kết nối với PostgreSQL database cluster, đầu tiên, nó phải qua được lớp xác thực ở mức hệ điều hành được cấu hình trong file pg_hba.conf. Các chính sách sẽ dựa trên các thông tin IP máy khách, tên người dùng database để quyết định xem máy khách có đi tiếp được hay không?
File pg_hba.conf thường được lưu trữ trong cùng thư mục với file postgresql.conf. Hoặc đường dẫn của nó có thể được tùy chỉnh bởi tham số hba_file.

postgres=# show hba_file ;
              hba_file              
------------------------------------
 /var/lib/pgsql/12/data/pg_hba.conf
(1 row)

   Cấu trúc của file pg_hba.conf

Đây là nội dung 1 file pg_hba.conf tiêu chuẩn:

cau truc file pg_hba


   Ý nghĩa

Cấu trúc của file pg_hba.conf như sau:

   Mỗi dòng là 1 chính sách

   Các cột được phân cách nhau bởi dấu khoảng trắng

   Ý nghĩa các cột:

   Cột TYPE có thể có các giá trị: local (chỉ cho phép kết nối từ localhost vào database), host (cho phép tất cả kết nối kể cả mã hóa hay không mã hóa), hostssl (chỉ cho phép kết nối có mã hóa SSL), hostnossql (chỉ cho phép kết nối không có mã hóa SSL).

   Cột DATABASE chỉ ra database được phép kết nối trong chính sách

   Cột USER chỉ ra tên database user được phép kết nối.

   Cột ADDRESS chỉ ra dải IP được phép kết nối. Chú ý, giá trị của cột này là 1 dải mạng, do đó bạn cần phải chỉ ra cả subnet mask.

   Cột METHOD chỉ ra phương  thức được phép sử dụng:

   trust: Cho phép kết nối mà không yêu cầu thông tin xác thực.

   peer: Cho phép kết nối nếu OS user máy khách trùng tên với Database user. Được dùng khi kết nối với database từ localhost.

   ident: Tương tự như peer, nhưng nó hỗ trợ các kết nối từ bên ngoài.

   password: Yêu cầu tên đăng nhập và mật khẩu. Tuy nhiên, mật khẩu sẽ không được mã hóa khi truyền từ máy khách đến database server.

   md5: giống với password, tuy nhiên mật khẩu có được mã hóa theo thuật toán md5

   scram-sha-256: giống với password, tuy nhiên mật khẩu được mã hóa theo thuật toán scram-sha-256.


   Hoạt động

Khi có 1 yêu cầu kết nối từ máy khách, PostgreSQL sẽ lấy thông tin từ máy khách này, và đọc file pg_hba.conf từ trên xuống dưới. Nếu thông tin máy khách phù hợp với chính sách được quy định, kết nối sẽ được thiết lập. Ngược lại nếu không có chính sách nào phù hợp thì yêu cầu kết nối sẽ bị từ chối.

Ví dụ, một dòng chính sách trong file pg_hba.conf như sau:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             postgres        10.239.42.106/32        md5

có nghĩa là: Máy khách có IP 10.239.42.106 có thể kết nối vào toàn bộ database (DATABASE=all), bằng user postgres (USER=postgres), sử dụng phương thức xác thực là nhập password (METHOD=md5)

Sau khi yêu cầu kết nối đã qua được chính sách của pg_hba.conf, tiến trình master của PostgreSQL sẽ tạo ra 1 tiến trình con và cho phép nó sử dụng shared buffer. Một kết nối được thiết lập.

Nguồn: https://dangxuanduy.com/

Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

    Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
    0 0 votes
    Article Rating
    Subscribe
    Notify of
    guest
    0 Comments
    Inline Feedbacks
    View all comments