Pergunta

Pré-requisito:

Há aplicativo cliente / servidor escrito em Delphi32. O RDBMS é SQL Server 2005. Uma certa funcionalidade do aplicativo requer a criação / cair de gatilhos (a partir do aplicativo usando ad hoc instruções DDL) no banco de dados alvo.

Problema:

Se um usuário pertence a papéis sysadmin não há nenhum problema para criar / gatilhos gota. No entanto, este é considerado um papel demasiado permissivo para um usuário do aplicativo.

Perguntas:

  • O que é o (ou seja mais restritiva) o papel SQL Server padrão mínimo que poderia ser usado para a criação / cair de gatilhos?
  • criação teria de uma função personalizada, em vez de usar os padrões, constitui uma abordagem mais de grão fino para resolver este problema?
Foi útil?

Solução

Existem várias opções, dependendo do escopo da concessão (qualquer gatilho em um banco de dados, qualquer em um esquema ou uma tabela específica).

Geralmente as permissões necessárias para uma operação de SQL são documentados na referência de SQL. Por exemplo. para CREATE TRIGGER em SQL Server 2008 consulte aqui (Desça até "Permissões"), neste caso:

DML trigger requer ALTER persmission na tabela ou exibição na qual o gatilho está a ser criado

Você pode criar um papel concedido apenas as permissões que você deseja e, em seguida, adicionar usuários / grupos para essa função, então o papel mínimo é aquele que você cria com apenas o acesso específico que você deseja permitir que seus usuários.

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