Limitare sa, ovvero... ancora Logon Trigger

In un post precedente avevo già parlato dei Logon Trigger, che saranno introdotti con il SP2 di SQL Server 2005, mostrando un esempio di come si possa limitare il numero di connessioni che ciascun account può aprire.

E' possibile utilizzare un Logon Trigger anche per controllare l'origine di una connessione; ad esempio con il trigger seguente si concede l'accesso ad sa solo se la connessione ha origine da una determinata macchina


CREATE TRIGGER tr_LimitSA
ON ALL SERVER
FOR LOGON
AS
BEGIN
 IF SYSTEM_USER = 'sa' AND HOST_NAME() <> 'URANUS'
 ROLLBACK;
END;
GO

Volendo estendere l'idea e consentire l'esecuzione di attività amministrative solo se la connessione proviene da una determinata subnet potremmo utilizzare la DMV sys.dm_exec_connections e testare il campo client_net_address come nell'esempio che segue

CREATE TRIGGER tr_LimitSysAdmin
ON ALL SERVER
WITH EXECUTE AS SELF
FOR LOGON
AS
BEGIN
IF IS_SRVROLEMEMBER ('sysadmin', ORIGINAL_LOGIN()) = 1 AND
 NOT EXISTS (SELECT 1
     FROM sys.dm_exec_connections
     WHERE session_id = @@spid
      AND (client_net_address = '<local machine>'
       OR client_net_address LIKE '172.16.12.%'))
 ROLLBACK;
END;
GO

Come si vede ho utilizzato l'execution context (EXECUTE AS) per far eseguire il trigger nel contesto di sicurezza del creatore del modulo; lasciando l'impostazione di default (EXECUTE AS CALLER) avremmo dovuto concedere al ruolo public il permesso "VIEW SERVER STATE" necessario per utilizzare la DMV.

Bye

Nella stessa categoria
    Nessuna risorsa collegata

    Commenti
    TrackBack scrive:
    19/02/2007 ore 22.43

    Aggiungi un nuovo commento »»»
    Per inserire un commento, devi registrarti alla nostra community.

    © 1998-2008 - SQL Server a 360° - Il blog di Luca Bianchi

    TagCloud
    BLOG INFO
    • Post: 100
    • Commenti: 40
    • TrackBacks: 23
    • Feed blog e contenuti tecnici: RSS
    • Feed blog: RSS Atom OPML

    MVP
    CATEGORIE
    I PIÙ LETTI DEL MESE
    IN EVIDENZA