Estou configurando um banco de dados 10g Express no Windows 2003 que será o back-end de um servidor web público. Há muitas outras coisas a fazer para fortalecer o banco de dados, mas um bom lugar para começar são os privilégios do usuário. Sei que o usuário precisa dos privilégios Conectar e Criar sessão. Todas as tabelas, procedimentos e pacotes são de propriedade deles.
Existem outros privilégios necessários para operações CRUD básicas em seu próprio esquema?
Não há necessidade de conceder a
CONNECT
função. Em 10.2, a Oracle finalmente reduziu o conjunto de privilégios atribuídos a essa função para apenasCREATE SESSION
, mas nas versões anteriores, essa função tem muito mais privilégios do que o nome implica.Seria mais seguro criar um usuário-- um que possua as tabelas, procedimentos, etc. mas que não tenha
CREATE SESSION
privilégios e outro que tenha privilégios apropriados nos vários objetos que o aplicativo pode usar para se conectar ao banco de dados. Isso permite que você faça coisas como impedir que o usuário do aplicativo elimine tabelas ou exclua dados de tabelas de log.Além disso, o proprietário das tabelas precisará receber cota em qualquer tablespace ou tablespaces em que as tabelas do usuário serão criadas. Você pode conceder o
UNLIMITED TABLESPACE
privilégio ao proprietário, mas é mais seguro conceder a eles uma cota menor em qualquer tablespaces que eles realmente precisam usar.