in

UGISS Community

Il sito della community dello User Group Italiano di SQL Server

Creare login per tracciare eventi su database in sicurezza (utilizzo di Application Role (?))

Last post 07-11-2008 12.20 by Navigator2. 2 replies.
Page 1 of 1 (3 items)
Sort Posts: Previous Next
  • 06-21-2008 9.22

    Creare login per tracciare eventi su database in sicurezza (utilizzo di Application Role (?))

    Salve a tutti.

    Il mio problema è questo : Database a cui accedono utenti via interfaccia WEB. Di questi molti accedono solo in visualizzazione e quindi le login sono memorizzate su tabella e va bene così. Mi interessa invece quelli che hanno la possibilità di modificare i dati di cui vorrei "tracciare" le operazioni (attualmente circa 500 utenti). Per fare questo avevo pensato di creare una login SQL per ogni utente ma non mi va che possano entrare nel sistema con altri software diversi da quello "standard" (access o altro) e tramite la loro login possano fare quello che vogliono sui dati. A questo punto avevo pensato di utilizzare i ruoli applicazione dando alle varie login solo la possibilità di connettersi al database. L'applicazione WEB avrebbe impostato il ruolo applicazione che avrebbe avuto i diritti di manipolare  i dati, la login dell'utente mi permetteva di tracciare le operazioni e la login dell'utente non avrebbe avuto diritti se non passando tramite l'interfaccia WB. Il problema è che la mia applicazione lavora su due database e il ruolo applicazione non mi permette di passare dal database corrente ad un altro database (in cui sostanzialmente devo scrivere per memorizzare le tracce delle operazioni effettuate). Ho provato anche ad utilizzare i sinonimi per "mapparmi" sul database corrente le tabelle del secondo database ma il "trucchetto" non sembra funzionare....

    Credo che questo mia problema non sia isolato ma non sono ancora riuscito a trovare una soluzione

    Qualcuno mi può dare una mano?

     

    Grazie Luca

    • Post Points: 20
  • 07-04-2008 14.26 In reply to

    • sgainz
    • Top 10 Contributor
      Male
    • Joined on 06-04-2007
    • Altamura (BA)
    • Posts 116
    • Points 1.490

    Re: Creare login per tracciare eventi su database in sicurezza (utilizzo di Application Role (?))

    potresti simulare il comportamento dell'AppRole... mi spiego meglio:

    - crei una Login per ogni utente dell'applicazione e fornisci all'utente la Login/Password

    - per ogni Login crei un'altra Login "segreta" (il cui scopo sarà più chiaro tra un po') che mappi a uno User dei DB ed a cui concedi tutti i permessi di cui la tua applicazione necessita per funzionare

    - per ogni Login mappi uno User nel tuo database NON concedendo alcun permesso (quindi apparterrà al solo gruppo Public)

    - crei nel tuo database una tabella il cui scopo è quello di associare i due User, quello conosciuto a quello segreto (.. ovviamente anche il nome di questa tabella deve essere sconosciuto all'utente)

    - concedi accesso in SELECT agli User "segreti" sulla tabella di cui sopra

    - infine, nella tua applicazione farai in modo che quando un utente si connette al db (con la sua Login), vai a reperire la sua Login "segreta" mediante una SELECT sull'unica tabella a cui lui ha accesso WHERE UserName = user_name(),  quindi lo disconnetti per poi riconnetterlo dietro le quinte con la Login "segreta".


    p.s.: premetto che non mi sono inventato nulla, di fatto questo metodo è adottato da un noto ERP made-in-italy.

     

    [Francesco Quaratino]
    • Post Points: 20
  • 07-11-2008 12.20 In reply to

    Re: Creare login per tracciare eventi su database in sicurezza (utilizzo di Application Role (?))

    Ciao, grazie della soluzione che fornisci che mi sembra anche interessante. Abbastanza semplice da un punto di vista implementativo e che permette di ottenere l'obiettivo a me ricercato.

    Probabilmente adotterò una soluzione più "software" visto che in una tabella ho già memorizzato tutti gli account che accedono alla mia applicazione. Utilizzo  un'altra tabella in cui memorizzo la connection-id e l'id utente per ogni connessione aperta da un utente (le connessioni sono aperte dall'applicazione che dopo ogni apertura chiama una stored che effettua la insert all'interno delal tabella).

    A questo punto grazie alla connection-id riesco a sapere l'utente che sta eseguendo una qualsiasi operazione all'interno del sistema.

    In questo modo evito il proliferare di utenti e login di sql visto che questi operatori devono fare tutti le stesse cose o meglio anche la logica dei ruoli operatore è già implementata tramite software.

    Luca

     

    • Post Points: 5
Page 1 of 1 (3 items)
(C) 2007 User Group Italiano di SQL Server