Newsgroup: it.comp.software.database
Titolo: Accesso utenti Oracle

Salve a tutti,
 
Spero qualcuno possa aiutarmi, visto che Oracle non è il mio
pane quotidiano.
 
Si tratta di svecchiare un software ch ha una gestione a dir poco
orripilante degli utenti.
 
L'attuale "schema" prevede n Oracle User ogniuno dei quali ha i dati
di un progetto ed m utenti Windows che accedono ad uno o più Oracle User
a secondo dei permessi.
 
L'attuale gestione dei permessi prevede una tabella in un Oracle User
(il cui username e password sono hardcodati nel sorgente c#) in cui c'e'
l'associazione utenteWindows-ProgettiACuiAccede la pwd è generata al volo
come uno (scadente) hash del nome del progetto a cui l'utente vuole
accedere.
 
Volevo sapere se c'e' la possibilità di specificare in qualche modo 
l'associazione utenteWindows - Oracle Users senza usare una tabella,
usando l'autenticazione ed i gruppi di Windows. O un qualsiasi altro
modo meno becero ed hackabile dal primo fesso che sappia usare just 
decompile.
 
Spero di essere stato chiaro.
 
Ciao A tutti.

Il 27/09/20 12:06, Old Faithful ha scritto:

i Primi da google con 'oracle os authentication'
 
https://oracle-base.com/articles/misc/os-authentication
 
 
 
http://www.dba-oracle.com/t_windows_os_authentication_11g.htm
 
 
 
https://www.dummies.com/programming/databases/basics-of-user-and-operating-system-authentication-in-oracle-12c/
 
 
 
 

 i Primi da google con 'oracle os authentication'
 
Innanzitutto grazie, ma mi accorgo di non essere stato molto chiaro.
 
Il mio vero problema e' come far accedere N utenti Windows con la loro
passwd ad un singolo utente Oracle.
 
Purtroppo mi e' cascato addosso la manutenzione di un progetto vecchio
di almeno 10 anni in via di sostituzione, ma che deve sopravvivere
ancora un anno o due perche' il megaprogetto che deve sostituirlo e'
in ritardo mostruoso.
 
Il vecchio software, per quanto riguarda la gestione dei dati, e'
organizzato alla seguente maniera.
 
Ogni progetto ha un suo OracleUser in cui vengono memorizzati i dati
(ed attualmente ce ne sono un centinaio tra vecchi, nuovi e 
nonisacosadiavolosono)
 
Esiste un chiamiamolo "Progetto padre" a cui tutti accedono al momento
dell'avvio del programma il cui OracleUser e passwd sono hardcodati nel
codice.
 
Una volta acceduti al "progetto padre" viene fatta una query sulla vista
ALL_USERS per tirar fuori in nomi di tutti gli OracleUser ed il risultato
viene filtrato in base al contenuto di una tabella presente nel "progetto
padre" in cui e' associato il nome dell'utente Windows al nome degli
OracleUser a cui ha diritto di accedere.
 
Questo elenco viene restituito all'utente che sta accedendo, il quale
sceglie il progetto e ci accede con la pwd dell'OracleUser che viene
generata al volo dal programma sulla base di un hash del nome
dell'OracleUser.
 
La sicurezza software interna ha detto che questo meccanismo non va bene
(non che ci volesse molto a capirlo), e se vogliamo  mantenere la 
certificazioe ISO, bisogna cambiarlo. Il mo compito e' quello di trovare
un meccanismo di autenticazione meno becero, modificando il programma
originario il meno possibile.
 
Quello che volevo fare era far accedere, mediante autenticazione di
Windows, tutti gli utenti Windows che hanno diritto ad accedere al
"Progetto A" eliminando "progetto padre" e relativa tabella delle
autorizzazioni.
 
Ovvero vorrei fara accedere con la propria password di Windows N utenti
windows ad un unico OracleUser.
 
Tutti i documenti che ho trovato fanno vedere come far accedere UN 
utente Windows ad UN utente Oracle.
 
Quello che mi era venuto in mente era di creare N OracleUser, chiamiamoli
IntermediateUsers, uno per utente windows a cui si accede mediante
autenticazione Windows. Dare a questi IntermediateUsers i grant necessari
per accedere ai progetti a cui gli utenti Windows hanno diritto.
 
Questa soluzione mi sembra un po' complicata e, soprattutto, aggraverebbe
il carico di lavoro dei nostri DBA.
 
L'alternativa e' lasciare tutto come ora, tirar fuori dal programma 3/4
del codice e fare un servizio remoto che gestisca autenticazioni ed
accessi. Questo non è praticabile ne' come tempi ne' come costi.
 
Spero di essere stato piu' chiaro.
 
Saluti.
 

Il 06/10/20 02:25, Old Faithful ha scritto:

OK, active directory (forse)
https://blog.pythian.com/part-3-implementing-oracle-database-active-directory-password-synchronization-using-oracle-cmu/
 
 
Non ne so molto di AD ma si potrebbe  associare un account oracle ad un 
nome AD e questo nome AD a N utenti  win
 
 
 

 nome AD e questo nome AD a N utenti  win
 
Grazie della dritta, proverò a chiedere se è fattibile a chi si occupa
della parte infrastrutturale: nemmeno io sono esperto di AD.
 
Saluti .