Que permissão é necessária para meu banco de dados do SQL Server 2005 para um WebUser?

4

Eu tenho uma seqüência de conexão no meu código asp.net que analisa um banco de dados do SQL Server 2005. Eu criei um UserName chamado WebUser e concedeu-lhe db_datawriter e db_datareader no SQL Server 2005. Ambos em Login e sob o banco de dados, o usuário deve ser capaz de ler e ser capaz de fazer atualizações? Isso é tudo que eu preciso ou o correto a fazer?

A string de conexão ficará assim.

<add name="ConnectionStringName" connectionString="DataSource=localhost;
 Initial Catalog=DBName;User ID=WebUser; Password=mypassword; 
 Integrated Security=FALSE" 
 providerName="System.Data.SqlClient"/>
</connectionStrings>
    
por Etienne 05.08.2009 / 11:50

2 respostas

1

Você quer arriscar que seu banco de dados seja baixado ou excluído por um hacker, do que sim, isso é tudo que você precisa fazer.

Se você quiser que seu banco de dados fique protegido contra todos os tipos de ataques, crie os procedimentos armazenados para manipular toda a inserção, atualização e exclusão de dados no banco de dados e, em seguida, chame esses procedimentos armazenados em vez de acessando as tabelas diretamente.

Em seguida, remova o usuário das funções de banco de dados fixas db_datareader e db_datawriter. Crie uma nova função (você pode chamá-la como quiser) e torne seu usuário um membro dessa função. Em seguida, conceda a essa função executar acesso a todos os procedimentos armazenados no banco de dados. O código para conceder acesso a uma função (ou usuário) é executar:

GRANT EXEC ON {ProcedureName} TO {User Or Role Name}
    
por 05.08.2009 / 12:36
0

Os comentários de Mrdenny são bem verdadeiros se você puder fazer isso acontecer. Se você estiver desenvolvendo um sistema do zero, use SPs e não conceda acesso às tabelas / exibições base.

Em muitos casos, esta não é uma solução viável. Se o seu aplicativo precisar de acesso às tabelas / visualizações base, verifique se são os direitos mínimos. Use direitos individuais no esquema em vez de db_datareader e db_datawriter.

Seu aplicativo deve estar sendo executado em um login do Windows somente para aplicativos e provavelmente precisará receber SELECT, INSERT, UPDATE, DELETE, EXECUTE e REFERENCES no esquema.

Se você precisa apenas acessar as tabelas / exibições para gerar relatórios, execute os relatórios com um usuário diferente e conceda a esse usuário os direitos de CRUD.

    
por 05.08.2009 / 20:30