sql >> Databasteknik >  >> RDS >> Sqlserver

Är det möjligt att neka åtkomst till SQL Server från specifika program?

Det är INTE möjligt och alla påståenden om motsatsen är ormolja.

Även om det är sant att du kan kontrollera applikationsnamnet och skapa inloggningsutlösare som nekar inloggningar baserat på den här egenskapen, är applikationsnamnet inte en säker egenskap och kan lätt förfalskas av vem som helst. Lita på det för säkerhet (dvs. nekad inloggning) är #fail.

Så så länge du sänker ribban och tar bort termer som "neka åtkomst" från din fråga, är det möjligt att tillhandahålla en Inloggningsutlösare som inspekterar sessionens program_name i 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;

Programnamnet ställs in av vissa applikationer, jag vet inte om Office-paketet ställer in den här egenskapen till något användbart eller lämnar den som standard. Och du måste förstå att detta kan kringgås av vem som helst genom att helt enkelt ändra ApplicationName egenskap i anslutningssträngen.



  1. Bästa metoder för att lagra bankinformation i en databas

  2. Hur fyller man i hålen i fälten för automatisk ökning?

  3. Oracle 10g:MIN/MAX kolumnvärdesuppskattning

  4. Mysql var mellan och lika med?