Domanda

Vogliamo consentire l'accesso al DB (Oracle) ai nostri utenti solo attraverso la nostra stessa applicazione. Chiamiamolo " ourTool.exe " ;, installato localmente sui computer degli utenti. Attualmente, gli utenti devono fornire nome utente / password ogni volta che avviano "ourTool". La password della password fornita viene decifrata e usiamo username / decrypted-password per accedere infine al database Oracle. Questo approccio impedisce agli utenti di accedere direttamente al nostro DB utilizzando strumenti di terze parti (SQLplus, Excel, Access, ...) e si garantisce che tutto nel DB sia stato immesso / modificato utilizzando " ourTool " ;.

Ora, uno dei nostri clienti desidera consentire ai propri utenti "single sign-on" (con SmartCard / Oracle PKI). Con questo, l'utente sarà in grado di connettersi al nostro DB senza fornire alcuna password ogni volta che avvierà il "nostro strumento". Lo stesso vale per gli strumenti potenzialmente pericolosi come SQLplus, Excel, Access, ecc.

C'è un modo per impedirlo? Come possiamo assicurarci che ogni record nel nostro DB sia creato / modificato / cancellato solo usando " ourTool " in questo scenario?

È stato utile?

Soluzione

Poiché è la tua applicazione e hai il controllo dell'origine, puoi utilizzare ruoli di database protetti da password o Ruoli applicazione protetti abilitati da ourTool.exe. (vedi http://www.oracle.com/technology/ obe / obe10gdb / security / approles / approles.htm ).

Ad esempio, con un ruolo di database protetto da password, la connessione iniziale sarebbe solo con il privilegio CREATE SESSION e quindi ourTool.exe emetterebbe SET ROLE con password nota solo a te. Qualsiasi altra applicazione non ha le informazioni per impostare il ruolo. Ovviamente, i privilegi sono concessi solo al ruolo e non direttamente all'utente in questa configurazione.

Altri suggerimenti

Per impostazione predefinita, OCI trasmette il nome EXE dell'applicazione chiamante e puoi accedervi eseguendo una query su v $ session :

SELECT  program
FROM    V$SESSION

, che puoi eseguire in un trigger AFTER LOGON .

Ma questo può essere facilmente annullato e non dovrebbe essere invocato.

Ho rinominato il mio sqlplus.exe in myTool.exe e dopo aver effettuato una connessione con myTool.exe

SELECT  program
FROM    V$SESSION
where username = 'SYSTEM';

Returns: myTool.exe

Quindi fai attenzione, come diceva Quassnoi: sebbene sia utilizzabile in alcune circostanze, non è certamente a prova di bullismo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top