Come gestite la mancanza di privilegi a livello di schema in Oracle? L'architettura di sicurezza di Oracle funziona bene per le applicazioni che richiedono solo privilegi a livello di oggetto e funziona bene per i DBA che richiedono poche restrizioni. Tuttavia, sembra esserci un grande buco nell'architettura per i programmatori che fanno sviluppo con un'applicazione front-end e PL / SQL in più schemi. Ecco alcune delle mie opzioni con i loro lati negativi:
Fai in modo che ogni programmatore esegua lo sviluppo nel proprio schema. Il DBA concederà privilegi a livello di oggetto ai programmatori che ne hanno bisogno. Qualsiasi sviluppo di pacchetti deve essere eseguito da un DBA. Il principale svantaggio è che i programmatori useranno il database come un secchio a scapito delle prestazioni del database. Voglio che i programmatori si sviluppino nel database, ma questo metodo lo scoraggerebbe notevolmente.
Assegnare a ciascun programmatore il nome utente / la password per la dozzina di schemi in cui è necessario eseguire lo sviluppo. Concedere queste autorizzazioni per lo schema dell'applicazione per creare procedure, tabelle, ecc. Alcuni degli svantaggi di questo approccio sono che i programmatori devono mantenere più accessi e raramente effettuato l'accesso come se stessi. Anche lo sviluppo di schemi incrociati è difficile.
Concedere ai programmatori i privilegi di autenticazione proxy su ogni schema per il quale devono eseguire lo sviluppo. Ciò li mantiene registrati come se stessi senza dover concedere loro privilegi diversi dal privilegio proxy. Gli svantaggi includono i programmatori che devono mantenere connessioni separate per ogni schema per cui sono proxy, lo sviluppo dello schema incrociato è più complicato poiché le connessioni devono essere costantemente modificate e i pacchetti che utilizzano collegamenti a database pubblici con autenticazione passata non verranno compilati all'interno di connessioni proxy.
Assegna a ciascun programmatore i privilegi DBA. - L'aspetto negativo qui è la sicurezza. Nessun programmatore di schemi può essere tenuto fuori da qualsiasi schema e qualsiasi programmatore può impersonare qualsiasi altro programmatore (DBA).
Sembra che manchi un'opzione per concedere a ciascun programmatore SELECT / INSERT / CREATE / etc. privilegi sullo schema di cui hanno bisogno per fare lo sviluppo. Accedono come se stessi per fare il loro lavoro usando una connessione. I nuovi oggetti nello schema a cui hanno accesso sono immediatamente disponibili.
Mi sto perdendo qualcosa? Come gestite i programmatori di applicazioni che eseguono lo sviluppo PL / SQL?