Đăng nhập Schema Vai trò thiết lập người dùng


1

Môi trường:

  • Máy chủ Windows 2012
  • Tiêu chuẩn SQL Server 2014
  • Trang web công cộng (Trang web A) trên Máy chủ
  • Trang web riêng (Site-B) trên Máy chủ
  • Ứng dụng Windows chạy trên máy trạm

Tiêu chuẩn SQL Server 2014:2 cơ sở dữ liệu - DB-A & DB-B

Thư viện lớp:Xử lý nhận/thiết lập tất cả dữ liệu thông qua các thủ tục được lưu trữ.Dữ liệu trên DB-A & DB-B

Trang web A:Trang web công khai về thương mại điện tử ASP.NET (http://www.rackattack.com) sử dụng thư viện lớp để giao diện với DB-A & DB-B.Chứa các cuộc gọi bổ sung (thông qua Thủ tục lưu trữ) cho cả hai DB

Trang web B:Trang web ASP.NET riêng sử dụng thư viện lớp để giao diện với DB-A & DB-B.Chứa các cuộc gọi bổ sung (thông qua Thủ tục lưu trữ) cho cả hai DB

Ứng dụng Windows:Trong ứng dụng house sử dụng thư viện lớp để giao diện với DB.Chứa các cuộc gọi bổ sung (thông qua Thủ tục lưu trữ) cho cả hai DB.

Câu hỏi:Làm cách nào tôi muốn thiết lập Đăng nhập máy chủ, Sơ đồ cơ sở dữ liệu, Vai trò cơ sở dữ liệu, Người dùng cơ sở dữ liệu để tuân thủ các thực tiễn tốt nhất cho Môi trường của chúng tôi?

Suy nghĩ của tôi:

  • Đăng nhập máy chủ cho Site-A, Site-B, WinApp
  • Vai trò DB cho ClassLib - quyền gọi các procs được lưu trữ cho Lib
  • Vai trò DB cho Site-A - quyền gọi các procs được lưu trữ cho Site-A trên DB-A & DB-B
  • Vai trò DB cho Site-B - quyền gọi các procs được lưu trữ cho Site-B trên DB-A & DB-B
  • Vai trò DB cho WinApp - quyền gọi các procs được lưu trữ cho WinApp trên DB-A & DB-B
  • Người dùng DB cho Trang web-A (thành viên của Vai trò cho ClassLib & Trang web-A)
  • Người dùng DB cho Site-B (thành viên của Vai trò cho ClassLib & Site-B)
  • Người dùng DB cho WinApp (thành viên của Vai trò cho ClassLib & WinApp)

Câu hỏi:

  • Liệu thiết lập này có ý nghĩa?
  • Tôi có muốn các vai trò riêng biệt cho ClassLib và người dùng Trang không?
  • Tôi phải thêm tiền đề vào đâu để thực hiện danh sách các SP cần, vai trò của tôi hay tôi cũng nên sử dụng lược đồ cho việc này?Nếu vậy thì thế nào?

Tuyên bố miễn trừ trách nhiệm:Tôi là một nhà phát triển và không phải là quản trị viên DB.Tôi có hiểu biết cơ bản về các khái niệm nhưng vui lòng "Giải thích như tôi 5".Cảm ơn bạn!

  0

Khi bạn nói "trang web công cộng" - chúng ta đang nói chuyện như thế nào?Internet công cộng, hoặc VPN từ khách hàng, v.v ...? 17 feb. 162016-02-17 20:18:06

+1

Trang web thương mại điện tử công cộng.http://www.rackattack.com (câu hỏi được chỉnh sửa để làm rõ) 17 feb. 162016-02-17 20:19:02

1

OK, vì vậy tôi sẽ đi tắt các thực tiễn tốt nhất nói chung ở đây và cho bạn một số lời khuyên về những gì tôi sẽ làm và những gì tôi đã thấy được thực hiện trong quá khứ.Tôi cũng sẽ giả định rằng bạn có đủ các giao thức bảo mật để bảo vệ trang web công khai của bạn.

Đầu tiên, sẵn sàng mất tất cả mọi thứ trong cơ sở dữ liệu công cộng nếu bạn bị hack (rõ ràng là sao lưu thường xuyên nhưng đừng ngạc nhiên nếu nó bị gỡ xuống).

Thứ hai, cơ sở dữ liệu chạy trang web của bạn cần được cách ly.Mọi thứ bạn cần để chạy nó cần phải độc lập và thường không nên được liên kết thông qua thư viện trực tiếp đến cơ sở dữ liệu riêng tư.Nếu có các thành phần trong cơ sở dữ liệu riêng mà trang web công cộng yêu cầu thì bạn có hai tùy chọn:

  1. Sao chép các thành phần này để chúng tồn tại trong cả hai cơ sở dữ liệu.(Ưu tiên)
  2. Tạo một cơ sở dữ liệu "chia sẻ" chỉ chứa các thành phần này.

Khi bạn đã tách riêng cơ sở dữ liệu công cộng, bạn sẽ giảm ngay rủi ro mà bạn cần giảm thiểu.Nếu bạn cần thông tin từ cơ sở dữ liệu công cộng hoặc cần lấy thông tin vào cơ sở dữ liệu công cộng từ cơ sở dữ liệu riêng tư của bạn thì bạn có thể thiết lập sao chép hoặc một số loại lịch trình khác để thực hiện nhiệm vụ này.

Nếu bạn không thể tách rời cơ sở dữ liệu của mình thì bạn sẽ cần phải hoàn toàn chiến đấu về những quyền được cấp cho trang web/thư viện dữ liệu đối mặt công khai của bạn.Hãy chuẩn bị tài liệu thật nhiều!

Nếu bạn tạo vai trò, thì bạn cần đảm bảo rằng mỗi vai trò có quyền tối thiểu cần thiết để hoàn thành nhiệm vụ được giao.Chẳng hạn, thư viện lớp của bạn được chia sẻ giữa hai trang web, cung cấp cho nó ít quyền nhất có thể để cho phép nó chạy.

Bất kỳ tài khoản người dùng nào được tạo cho trang web công cộng nên có quyền truy cập vào cơ sở dữ liệu công cộng và không có gì hơn.Nếu trang web công cộng có quyền truy cập trực tiếp vào cơ sở dữ liệu riêng tư của bạn thì nó cũng nên được coi là công khai ngay cả khi đó không phải là ý định của bạn.

Một lần nữa, ứng dụng windows của bạn, không nên gọi trực tiếp vào cơ sở dữ liệu công khai của bạn.Điều này là để giảm diện tích bề mặt của cuộc tấn công và cũng để đảm bảo rằng ai đó không vô tình làm điều gì đó làm mất trang web công cộng của bạn (như xóa tất cả nội dung).

Vì vậy, để tóm tắt:

  1. Trang web công cộng chỉ nên kết nối với cơ sở dữ liệu công cộng và không có gì được coi là nội bộ hoặc riêng tư.
  2. Trang web và ứng dụng riêng không nên kết nối với cơ sở dữ liệu công cộng.
  3. Các thành phần/bảng được chia sẻ phải có mặt trong cả hai cơ sở dữ liệu và được nhân rộng giữa chúng.
  4. Quyền phải là mức tối thiểu tuyệt đối để hoàn thành nhiệm vụ họ đang thực hiện, không hơn không kém.
  5. Không sử dụng các thành phần mã trong trang web công cộng của bạn có thể truy cập và sửa đổi dữ liệu riêng tư.
  6. Hãy chuẩn bị để mất tất cả.
  7. Không bao giờ, bao giờ cung cấp cho các trang web công cộng SA hoặc tương đương.Tất cả mọi thứ nó cần làm nên được cấp một cách rõ ràng cho nó.

Nếu bạn cô lập cơ sở dữ liệu công cộng thì việc gán quyền cho các ứng dụng nội bộ của bạn trở nên tầm thường và dễ thực hiện.