Como você lida com a falta de privilégios no nível do esquema no Oracle? A arquitetura de segurança da Oracle funciona bem para aplicativos que precisam apenas de privilégios no nível de objeto e para DBAs que precisam de poucas restrições. No entanto, parece haver um grande buraco na arquitetura para programadores que desenvolvem um aplicativo front-end e PL / SQL em vários esquemas. Aqui estão algumas das minhas opções com suas desvantagens:
Faça com que cada programador desenvolva seu próprio esquema. O DBA concederá privilégios no nível do objeto aos programadores que precisam deles. Qualquer desenvolvimento de pacote deve ser feito por um DBA. A principal desvantagem é que os programadores usarão o banco de dados como um bit bucket em detrimento do desempenho do banco de dados. Quero que os programadores desenvolvam no banco de dados, mas esse método desencorajaria bastante.
Dê a cada programador o nome de usuário / senha para a dúzia de esquemas em que eles precisam desenvolver. Conceda a esses esquemas de aplicativos permissão para criar procedimentos, tabelas etc. Algumas das desvantagens dessa abordagem são que os programadores precisam manter vários logins e são raramente logam como eles mesmos. O desenvolvimento de esquemas cruzados também é difícil.
Conceda aos programadores privilégios de autenticação de proxy em cada esquema para o qual eles precisam desenvolver. Isso os mantém conectados como eles mesmos, sem ter que conceder a eles outros privilégios além do proxy. As desvantagens incluem os programadores que precisam manter conexões separadas para cada esquema para o qual solicitam proxy, o desenvolvimento entre esquemas é mais complicado, pois as conexões precisam ser constantemente alteradas e os pacotes que usam links de bancos de dados públicos com autenticação passada não serão compilados dentro das conexões de proxy.
Dê a cada programador privilégios de DBA. - A desvantagem aqui é segurança. Nenhum programador de esquema pode ser mantido fora de qualquer esquema e qualquer programador pode representar qualquer outro programador (DBA).
Parece haver uma opção ausente para conceder a cada programador SELECT / INSERT / CREATE / etc. privilégios no esquema no qual eles precisam desenvolver. Eles se conectam como eles mesmos para fazer seu trabalho usando uma conexão. Novos objetos no esquema aos quais eles têm acesso estão imediatamente disponíveis.
Estou esquecendo de algo? Como você lida com programadores de aplicativos que desenvolvem PL / SQL?