Cấp quyền truy cập cho tất cả các đối tượng (với một vài ngoại lệ) cho một vai trò


1

Trong SQL Server 2014, tôi muốn tạo một vai trò sẽ có quyền truy cập (chọn, xóa, cập nhật, chèn, thực thi) cho tất cả các bảng, dạng xem, thủ tục được lưu trữ, ngoại trừ một danh sách các bảng có chứa dữ liệu nhạy cảm chỉ có " sa "người dùng nên có quyền truy cập.

Tôi đã thử như sau:

Sử dụng SQL Server Management studio, trong cơ sở dữ liệu (TESTCOMPANY) -> Bảo mật -> Vai trò -> Vai trò cơ sở dữ liệu, tạo vai trò cơ sở dữ liệu "CompanyAdmin".

Chạy truy vấn sau:

GRANT SELECT,INSERT, UPDATE, DELETE, EXEC ON DATABASE::TESTCOMPANY TO CompanyAdmin

Sau đó:

DENY SELECT, INSERT, UPDATE, DELETE ON TestTable1 TO CompanyAdmin; 
--Repeat for all tables to secure

Trong Management Studio, máy chủ -> Bảo mật -> Đăng nhập, tạo "người kiểm tra" đăng nhập mới.Vai trò máy chủ = "công khai".Sau đó, truy cập TESTCOMPANY -> Bảo mật -> Người dùng -> Người dùng mới:

  • Loại người dùng: Người dùng SQL có đăng nhập
  • Tên người dùng: người kiểm tra
  • Tên đăng nhập: người kiểm tra
  • Lược đồ mặc định: dbo
  • Thành viên: CompanyAdmin

Sau khi đăng nhập với tư cách là người kiểm tra, tất cả có vẻ ổn, tôi thấy tất cả các bảng ngoại trừ các bảng trong quyền DENY.NHƯNG:

  • Nếu trong tương lai, người dùng "sa" tạo chế độ xem trên các bảng được bảo mật, người dùng thử nghiệm có quyền truy cập vào nó và có thể xem dữ liệu mà nó trả về

  • Trong SQL Server Management Studio, tôi có thể truy cập Máy chủ -> Bảo mật -> Đăng nhập và tôi thấy các thuộc tính đăng nhập "sa"

Tôi đang thực hiện đúng phương pháp hay có cách nào tốt hơn để hoàn thành những gì tôi muốn làm?

Đó là cơ sở dữ liệu cho ứng dụng kế toán của công ty chúng tôi và phần mềm được thiết kế để có mọi thứ trong cùng một cơ sở dữ liệu.

2

Sự thật đáng buồn là bạn không thể làm bất cứ điều gì theo máy tính về các hoạt động 'sa'.Điều này là do 'sa' (hoặc là thành viên củasysadminvai trò máy chủ) được xác định để có thể làm khá nhiều thứ.

Vì vậy, tất nhiên, bạn chỉ nên cósysadmin'smà bạn có thể tin tưởngcố gắng hết sứcđể tuân thủ các tiêu chuẩn cho cơ sở dữ liệu.Nhưng ngay cả tốt nhấtsysadminkhông hoàn hảo.Vì vậy, bạn có thể thiết lập một số kiểm toán để báo cáo về các thay đổi được thực hiện trong cơ sở dữ liệu.

(Hoặc, công nghệ thấp hơn, định kỳ kiểm tra chế độ xem của bạn để biết tên bảng bị hạn chế trong chế độ xem.)

Vì vậy, nó phụ thuộc vào những gì bạn quan tâm và bạn cần bao nhiêu nỗ lực để bảo vệ các tài nguyên an toàn.

Về các chế độ xem hiển thị thông tin an toàn, bạn có thể từ chối quyền trên một chế độ xem.Ngay cả khi mộtsysadminđã tạo chế độ xem, DENY của chế độ xem cho những người không được phê duyệt sẽ ngăn chặn quyền truy cập của họ.

Có lẽ bất kỳ chế độ xem bảo mật cao nào cũng có thể được đặt tên là SecureViewXYZZY để nhấn mạnh lý do cho các chế độ xem đó và hạn chế ai có thể sử dụng chúng.