Có một cơ sở dữ liệu PostgreSQL tiếp xúc với internet


7

Tôi đã thấy trên DBA và các trang web khác để lộ cơ sở dữ liệu lên Internet là một ý tưởng đặc biệt tồi tệ, nhưng tôi nhận thấy rằng PostgreQuery có xác thực chỉ có chứng chỉ SSL. Điều này có an toàn hơn khi đưa cơ sở dữ liệu lên internet (chỉ xác thực auth từ các kết nối không phải localhost) hoặc sẽ tốt hơn nếu thiết lập VPN hoặc đường hầm thông qua SSH, v.v.

Nếu cái sau an toàn hơn, chính xác thì cái gì làm cho nó an toàn hơn? Tôi cảm thấy như tôi đang nhìn một cái gì đó rõ ràng rõ ràng về vấn đề này.

Tôi đã thiết lập một số ít cơ sở dữ liệu trước đây nhưng chưa bao giờ thực sự cần thiết lập một cơ sở dữ liệu yêu cầu một số loại quản trị từ xa (trong điều kiện từ xa, trong trường hợp này có nghĩa là qua Internet hoặc mạng LAN chứ không phải mạng LAN).

Câu trả lời:


9

Nói chung, đây không thực sự là một ý tưởng tồi, hơn nữa có rất ít trường hợp bạn thực sự cần phải đưa cơ sở dữ liệu của mình ra giao diện công cộng.

Phần lớn bảo mật là về việc giảm số lượng bề mặt tấn công mà bạn tiếp xúc. Nếu ứng dụng của bạn không nhất thiết phải phơi bày cơ sở dữ liệu của bạn ra công chúng thì bạn có thể ẩn nó đi sau tường lửa và có một mức độ bảo vệ khác khỏi bất kỳ khai thác tiềm năng nào có thể xuất hiện trong tương lai.

Tôi sẽ không coi "quản trị từ xa" là một lý do đủ tốt để phơi bày các postgres. Như bạn nói; bạn đã cần quyền truy cập SSH vào hộp của mình để bạn có thể dễ dàng giữ lại các postgres phía sau tường lửa và có quyền truy cập thông qua đó mà không gặp vấn đề gì.

RE: Kết nối SSL. Đây sẽ là điều bắt buộc trừ khi bạn hài lòng với bên thứ ba chỉ đọc dữ liệu của bạn trong khi bạn gửi dữ liệu qua mạng. Các cân nhắc ở đây cũng giống như bất kỳ lưu lượng truy cập qua internet công cộng.


Điều này thật ý nghĩa. Ví dụ, nếu tôi đã có một giao diện người dùng đã được phát triển để tạo các kết nối trực tiếp đến cơ sở dữ liệu, liệu có tốt hơn để tạo đường hầm thông qua kết nối VPN hoặc SSH không?
dreamlax

1
@dreamlax Không, miễn là bạn luôn cập nhật PostgreSQL (như mọi dịch vụ khác), chỉ cần sử dụng SSL trực tiếp, đặc biệt nếu bạn cũng yêu cầu chứng chỉ ứng dụng khách hợp lệ, hạn chế người dùng ở đặc quyền truy cập tối thiểu, v.v. Bản vá rất quan trọng: lỗ hổng bảo mật trong PG rất hiếm, nhưng gần đây có một lỗ hổng khó chịu: postgresql.org/support/security/faq/2013-04-04
Craig Ringer

Tôi đánh dấu câu này là câu trả lời vì lời giải thích của bạn về việc giảm thiểu "bề mặt tấn công", nhưng tôi vẫn không hiểu được lợi ích của việc chuyển dịch bảo mật ở nơi khác. Tôi có xu hướng làm theo lời khuyên của @ CraigRinger.
dreamlax

Cũng như một ghi chú, Heroku DB được phơi bày trên mạng công cộng.
Ron E

1

Kịch bản duy nhất tôi có thể tưởng tượng nơi cần thiết để đưa cơ sở dữ liệu của bạn lên internet là cho mục đích sao chép hoặc phân cụm. Nếu đây là trường hợp, bạn nên giới hạn quyền truy cập chỉ vào các máy chủ bổ sung thông qua tường lửa.

Đối với bất kỳ mục đích sử dụng nào khác, tôi sẽ đề nghị bạn tạo các dịch vụ web đóng vai trò là cổng để truy cập cơ sở dữ liệu. Các dịch vụ này sẽ chỉ cung cấp các chức năng bạn cần và bạn sẽ chịu trách nhiệm về tính bảo mật và tính toàn vẹn của chúng.

Trong thực tế, bất kỳ giao diện người dùng web nào kết nối với cơ sở dữ liệu đều tạo ra những thứ này, sử dụng các tập lệnh trên máy chủ web làm dịch vụ web RESTful.


2
Làm thế nào là dịch vụ web vốn đã an toàn hơn mặc dù? Tại sao việc chuyển bảo mật sang máy chủ web lại an toàn hơn là để lại cơ sở dữ liệu, đặc biệt là nếu cơ sở dữ liệu chỉ chấp nhận các kết nối từ những máy chủ hợp lệ? Vấn đề là, nếu tôi phải phơi bày cơ sở dữ liệu thông qua một dịch vụ web thì điều này sẽ yêu cầu thay đổi rất nhiều mã trong giao diện người dùng hiện có (không dựa trên web). Nếu đó là cách duy nhất, thì tôi sẽ phải làm điều đó, nhưng tôi cần biết những rủi ro khi tiếp xúc với cơ sở dữ liệu nếu nó được cấu hình chỉ để chấp nhận các kết nối được chứng nhận SSL.
dreamlax

2
IMO làm điều này chỉ tạo ra một rủi ro bảo mật cho một rủi ro bảo mật khác, nó không thực sự mang lại cho bạn bất cứ điều gì qua việc PG bị khóa qua SSL với người dùng từ xa có tài khoản được cấu hình để có quyền truy cập tối thiểu cần thiết để làm những gì họ cần.
Craig Ringer

Bạn có thể làm cho dịch vụ web của mình an toàn và chỉ phục vụ cho khách hàng có chứng chỉ hợp lệ. Ưu điểm là dịch vụ web không cung cấp toàn bộ phạm vi hoạt động mà cơ sở dữ liệu cung cấp. Dịch vụ web của bạn chỉ nên cung cấp các hành động cần thiết theo yêu cầu của khách hàng. Bất kỳ hoạt động nào khác không nên có thể thông qua dịch vụ web.
jap1968

Điều đó vẫn không có vẻ như dịch vụ web cung cấp nhiều lợi thế hơn so với việc người dùng cơ sở dữ liệu chỉ được phép gọi một nhóm chức năng nhỏ (tức là "hành động" tương tự mà dịch vụ web cung cấp). Thêm vào đó, bất kỳ thay đổi nào đối với cơ sở dữ liệu cũng yêu cầu thay đổi dịch vụ web, cũng như giao diện người dùng.
dreamlax

Có thể là câu hỏi quan trọng là loại front-end. Tôi có xu hướng giả định một giao diện người dùng dựa trên web: nó không thể giao tiếp như một máy khách cơ sở dữ liệu nguyên gốc, tức là nó cần một số loại dịch vụ web phụ trợ để truy cập cơ sở dữ liệu.
jap1968
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.