Pergunta

Queremos permitir o acesso DB (Oracle) para nossos usuários somente através de nosso próprio aplicativo - vamos chamá-lo "ourTool.exe", instalado localmente nos computadores dos usuários. Atualmente, os usuários devem fornecer nome de usuário / senha sempre que iniciar "ourTool". A senha senha fornecida é descriptografado e usamos username / descodificada por senha para finalmente fazer login no banco de dados Oracle. Esta abordagem impede que os usuários acessem diretamente o nosso DB usando ferramentas de terceiros (SQLPlus, Excel, Access, ...) e tudo no DB é garantido que foram introduzidos / editados usando "ourTool".

Agora, um dos nossos clientes quer para permitir que seus usuários "single sign-on" (com SmartCards / Oracle PKI). Com isso, o usuário poderá se conectar ao nosso DB sem fornecer qualquer senha cada vez que eles começam a "ourTool". Mas o mesmo será verdade para as ferramentas potencialmente perigosas como SQLPlus, Excel, Access, etc.

Existe uma maneira para evitar isso? Como podemos ter certeza de que cada registro na nossa DB só é criado / editado / excluído usando "ourTool" neste cenário?

Foi útil?

Solução

Uma vez que é a sua aplicação e você tem o controle da fonte, você pode usar qualquer senha protegeu papéis de banco de dados ou funções de aplicação segura que estão habilitados a partir ourTool.exe. (Veja http://www.oracle.com/technology/ obe / obe10gdb / security / approles / approles.htm ).

Por exemplo, com um papel de banco de dados protegido por senha, a conexão inicial seria apenas com o privilégio CREATE SESSION, e depois ourTool.exe iria emitir o PAPEL SET com a senha que só você conheça. Qualquer outra aplicação não tem a informação para definir o papel. Obviamente, os privilégios são concedidos apenas para o papel e não diretamente para o usuário com essa configuração.

Outras dicas

Por padrão, OCI transmite o nome EXE aplicativo de chamada e você pode acessá-lo por meio de consulta v$session:

SELECT  program
FROM    V$SESSION

, o que você pode fazer em um gatilho AFTER LOGON.

Mas isso pode ser facilmente anulado e não deve ser invocado.

Eu renomeado meu sqlplus.exe para myTool.exe e depois de fazer uma conexão com myTool.exe

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

Retorna: myTool.exe

Então, estar ciente, como disse Quassnoi:., Embora útil em algumas circunstâncias, certamente não é prova bullit

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top