Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Có thể từ chối quyền truy cập vào SQL Server từ các chương trình cụ thể không?

Đó là KHÔNG có thể và tất cả các tuyên bố ngược lại đều là dầu rắn.

Mặc dù đúng là bạn có thể kiểm tra tên ứng dụng và tạo trình kích hoạt đăng nhập từ chối đăng nhập dựa trên thuộc tính này, nhưng tên ứng dụng không phải là thuộc tính an toàn và có thể dễ dàng bị giả mạo bởi bất kỳ ai. Phụ thuộc vào nó để bảo mật (tức là từ chối đăng nhập) là #fail.

Vì vậy, miễn là bạn hạ thanh và xóa các cụm từ 'từ chối quyền truy cập' khỏi câu hỏi của bạn, bạn có thể cung cấp Trình kích hoạt đăng nhập kiểm tra program_name của phiên trong sys.dm_exec_sessions :

CREATE TRIGGER application_limit_trigger
ON ALL SERVER WITH EXECUTE AS '...'
FOR LOGON
AS
BEGIN
IF EXISTS (SELECT *
   FROM sys.dm_exec_sessions
   WHERE session_id = @@SPID
   AND program_name IN (N'Bad Program', N'Worse Program', N'Unmentionable')
    ROLLBACK;
END;

Tên_chương_trình do một số ứng dụng đặt, tôi không biết bộ Office có đặt thuộc tính này thành thứ gì hữu ích hay để mặc định. Và bạn phải hiểu rằng điều này có thể bị phá vỡ bởi bất kỳ ai chỉ cần thay đổi Tên ứng dụng thuộc tính trong chuỗi kết nối.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn Chọn SUM của tôi trả về giá trị rỗng. Nó sẽ trả về 0

  2. Truy vấn SQL trong đó Column ='' trả về các ký tự Biểu tượng cảm xúc 🎃 và 🍰

  3. Chuyển đổi nvarchar sang bigint trong Sql server 2008

  4. SQL Server SELECT trong đó bất kỳ cột nào chứa 'x'

  5. OPTION (RECOMPILE) luôn nhanh hơn; Tại sao?