Điểm:1

Lợi ích của máy chủ RDBMS riêng biệt

lá cờ de

Tôi muốn so sánh lợi ích của hai kiến ​​trúc lưu trữ cho một máy chủ nhỏ (có nghĩa là CPU 2 nhân và SSD 250 GB, với 100 GB dành riêng cho dữ liệu là quá đủ), chủ yếu bao gồm một ứng dụng tùy chỉnh cung cấp dịch vụ web, với kiến trúc REST và tất cả dữ liệu trong cơ sở dữ liệu quan hệ.

  1. Được lưu trữ trên một máy duy nhất trên đám mây (ví dụ: phiên bản EC2) với Cơ sở dữ liệu quan hệ (ví dụ:mySQL, PostGreSQL) chạy cục bộ, với các bản sao lưu bên ngoài cơ sở dữ liệu được mã hóa thường xuyên (ví dụ: tới S3/Glacier).
  2. Được lưu trữ trên một máy trong đám mây (ví dụ: phiên bản EC2 tương tự có ít SSD hơn) với RDBMS là dịch vụ được quản lý, ví dụ: Dịch vụ cơ sở dữ liệu quan hệ của Amazon, có lẽ với các bản sao lưu bên ngoài cơ sở dữ liệu được mã hóa ít thường xuyên hơn.

Tôi thấy đó là lợi ích cho 1

  • Rẻ hơn (tiết kiệm trên mạng và dịch vụ được quản lý RDBMS) theo hệ số như 3, tôi tin vậy.
  • Độ trễ truy cập cơ sở dữ liệu có thể tốt hơn?

và cho 2

  • Nếu phiên bản EC2 bị xóa, chúng tôi sẽ không mất dữ liệu.
  • Không cần sao chép DB từ phiên bản EC2 này sang phiên bản EC2 khác khi xây dựng lại máy chủ từ đầu hoặc thực hiện nâng cấp lớn như thay đổi hệ điều hành; do đó ít thời gian chết hơn.
  • Có lẽ việc quản lý DB dễ dàng hơn.

Tôi bỏ lỡ điều gì? Bất kỳ con trỏ đến vị trí có thẩm quyền về điều này?

pmdba avatar
lá cờ cn
Từ góc độ bảo mật, dữ liệu _never_ nên được lưu trữ trên cùng một máy chủ với giao diện người dùng của ứng dụng - đặc biệt là nếu giao diện người dùng tiếp xúc với internet, nhưng cũng đúng trên các mạng riêng. Cơ sở dữ liệu phải được bảo vệ đằng sau tường lửa, tách biệt với các máy chủ ứng dụng.
fgrieu avatar
lá cờ de
@pmdba: Tôi hiểu quan điểm của bạn và điều đó thật thú vị. Tuy nhiên, nếu máy chủ có giao diện người dùng của ứng dụng bị xâm phạm và vì nó có thông tin xác thực để truy cập RDBMS, nên về nguyên tắc, tất cả dữ liệu trong RDBMS có thể bị trích xuất hoặc/và bị hỏng trong kịch bản 1/2 (với sự khác biệt là nó chỉ có thể thông qua hệ thống tệp trong 1).Điểm khác biệt duy nhất mà tôi thấy là trong kịch bản 2, việc đánh cắp/tham nhũng có thể nhìn thấy trong nhật ký RDBMS, khi chúng có thể được thay đổi hoặc loại bỏ cùng với phần còn lại trong kịch bản 1.
pmdba avatar
lá cờ cn
Thiết kế ứng dụng an toàn sẽ yêu cầu ứng dụng sử dụng tài khoản Cơ sở dữ liệu không có đặc quyền, truy cập dữ liệu thông qua API phụ trợ (được xây dựng bằng các thủ tục được lưu trữ trong Cơ sở dữ liệu). Ứng dụng không bao giờ được đăng nhập trực tiếp vào tài khoản DB đặc quyền và đặc biệt không phải là tài khoản sở hữu dữ liệu hoặc đối tượng.
Điểm:1
lá cờ de

Về điểm đầu tiên:

  • Khi dịch vụ web của bạn bị xâm phạm, cơ sở dữ liệu cũng sẽ bị xâm phạm. Cách tốt nhất là tách lớp trình bày khỏi lớp dữ liệu.

  • độ trễ với cùng hoặc thậm chí giữa hai Vùng sẵn sàng là nhỏ và có thể được bỏ qua khi xem xét.

  • Tôi không nói rằng giải pháp này sẽ rẻ hơn nhiều so với RDS vì yếu tố liên quan ảnh hưởng đến giá sẽ là bộ lưu trữ SSD. Giá sẽ chênh lệch khoảng 30% giữa RDS và EC2.

  • Về loại SSD, bạn phải quyết định hoặc có thể bạn đã biết mức IOPS và MB/s ở mức cao nhất mà cơ sở dữ liệu của bạn sẽ cần trong tương lai. Đó cũng sẽ là một ứng cử viên tốt để cải thiện giá cuối cùng của giải pháp.

Về điểm thứ hai:

  • Bạn có thể ngăn chặn tình trạng đó. Theo mặc định, khi bạn đính kèm ổ đĩa EBS không root vào một phiên bản, Xóa Khi Chấm dứt thuộc tính được đặt thành sai. Tôi cho rằng cơ sở dữ liệu sẽ được đặt trên ổ đĩa EBS không phải root. Cờ có thể được thiết lập để sai trên khối lượng gốc là tốt.

  • bạn không phải sao chép cơ sở dữ liệu từ EC2 sang EC2, bạn có thể đính kèm hoặc tách ổ đĩa EBS cùng với cơ sở dữ liệu.

  • như bạn đã chỉ ra trong giải pháp RDS, trách nhiệm quản trị thuộc về AWS. Tuy nhiên, lược đồ cơ sở dữ liệu càng phức tạp thì tôi càng chọn dịch vụ cơ sở dữ liệu không được quản lý.

Bạn đã không đề cập đến yếu tố chính cho kiến ​​​​trúc là gì. Việc tiết kiệm chi phí quản lý hay vận hành? Giá sẽ khác biệt đáng kể khi bạn quyết định loại mô hình định giá: không trả trước so với trả trước tất cả. Tôi không biết liệu dịch vụ này có hoạt động trong giờ làm việc hay không và có thể ngừng hoạt động vào ban đêm hay không. Bạn cũng không đề cập đến những gì sẽ chạy trên các dịch vụ web. Nó có quan trọng đối với doanh nghiệp không? Có thể một giải pháp tốt và hiệu quả về chi phí là xem xét kiến ​​trúc serverless nếu dịch vụ web là một ứng dụng dựa trên sự kiện.

fgrieu avatar
lá cờ de
Tôi không hiểu tại sao tình hình lại tốt hơn nhiều từ quan điểm bảo mật với RBS riêng biệt.Tôi lập luận rằng nếu dịch vụ web bị xâm phạm, vì dịch vụ này có quyền truy cập R/W vào cơ sở dữ liệu, kẻ thù có thể thực hiện thao tác trích xuất hoặc thay đổi. Tôi thừa nhận một điểm khác biệt: toàn bộ DB chỉ có thể được sao chép qua hệ thống tệp khi RBS đang chạy cục bộ. Một DB được mã hóa giảm thiểu điều này ở một mức độ nào đó.
lá cờ de
Giả sử tôi là một hacker. Tôi đột nhập vào phiên bản EC2 của bạn, nơi dịch vụ web cùng với cơ sở dữ liệu đang chạy. Cũng giả sử rằng bạn không nhận thấy rằng sự cố bảo mật đã xảy ra. Tôi sẽ cài đặt một chương trình nghe lén và keylogger và chờ thông báo. Khi quản trị viên cơ sở dữ liệu đăng nhập hoặc ai đó thực hiện nhầm các lệnh SQL cục bộ, tôi sẽ chặn thông tin xác thực. Tôi sẽ đăng nhập lại và kết xuất cơ sở dữ liệu của bạn. Điều này khó thực hiện khi lớp trình bày của bạn giao tiếp với lớp cơ sở dữ liệu thông qua proxy HTTPS và các khóa công khai/riêng tư không được đặt ở cùng một vị trí.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.