none
Wie könnte ich da vorgehen das der "sa" von aussen mit seiner bekannten Kennung keinen Zugriff mehr hat ? RRS feed

  • Frage

  • Hallo Frank,

    ich möchte ja Deine wertvolle Zeit nicht ungebührlich in Anspruch nehmen, aber ich hätte noch ein Problem das ich nicht gelöst bekomme.
    Ich arbeite für eine Firma (nebenbei) die bei 1und 1 einen Webserver mit daruf installiertem SQL Server 2008 ht. Auf dem Server befindet sich eine Software
    und eine Datenbank mit der man im Callcenter telefonieren kann. Die Software ist nicht aus dem Laden, sondern wurde mal von jemandem geschrieben
    bzw. aus mehreren Komponenten zusammengeklaut.
    Man kann vom Server aus kleine Tools mit einem SIP installieren, die Arbeitsplätze dann freischalten und schon kann man über die Datenbank telefonieren.
    Jetzt wollte ich den "sa" Zugang sperren, bzw. natürlich nur das dahinter liegende Kennwort ändern.
    Wenn ich das tue, kann sich keiner mehr einwählen weder als Callcenter-Agent oder als Admin für dieses Programm. Das heißt, bei der Verbindung der einzelnen
    Clients wird die "sa" Zugangskennung verwendet, auch wenn die Einwahlprozedur der Agents eine andere ist. Ich habe auch probiert dem "sa" den Zugang zu sperren bzw. den Anmeldenamen zu deaktivieren, funktioniert natürlich auch nicht.
    Wie könnte ich da vorgehen das der "sa" von aussen mit seiner bekannten Kennung keinen Zugriff mehr hat.
    Über eine hilfreiche Idee würde ich mich freuen.

    Vielen Dank
    Gruß Klaus
    Donnerstag, 10. September 2009 16:00

Antworten

  • Hallo Klaus,

    falls es nicht mehr möglich ist die Anwendung umzustellen, würde ich ein Logon-Trigger einsetzen.

    http://msdn.microsoft.com/de-de/library/bb326598.aspx

    --*************************************************
    -- 2010-04-25 Yury Iwtschenko
    --*************************************************
    
    IF EXISTS (SELECT * FROM master.sys.server_triggers WHERE parent_class_desc = 'SERVER' AND name = N'TR_LOGON')
    DROP TRIGGER [TR_LOGON] ON ALL SERVER
    GO
    
    CREATE TRIGGER [TR_LOGON] 
     ON ALL SERVER
     AFTER LOGON
    AS 
    BEGIN
    	SET NOCOUNT ON;
    	
    	DECLARE @currentLoginName nvarchar(64)
    	DECLARE @currentAppName nvarchar(128)
    	DECLARE @grantedAppName nvarchar(128)
    	
    	SET @currentLoginName = (SELECT EVENTDATA().value('(/EVENT_INSTANCE/LoginName)[1]','nvarchar(max)'))
    	SET @currentAppName = APP_NAME();
    	SET @grantedAppName = N'Microsoft SQL Server Management Studio'--durch Anwendungsnamen ersetzen
    		
    	IF @currentLoginName = 'sa'
    		AND @currentAppName != @grantedAppName
    		RAISERROR(23101,20,1)
    END

    Gruß Yury

    Sonntag, 25. April 2010 12:51