Acesso anônimo (IIS) e SQL Server

9

Eu acabei de fazer uma entrevista em Redmond, onde eles me fizeram várias perguntas baseadas em segurança em torno do asp.net. Uma das perguntas que eles fizeram foi sobre a configuração de um aplicativo de intranet seguro para usar a delegação restrita para acessar o SQL Server. Nesse cenário, uma conta de usuário do AD é acesso delegado ao SQL Server. Todo o propósito do curso é a) não armazenar qualquer nome de usuário / senha em qualquer lugar no servidor web (web.config) eb) fornecer um modelo de segurança abstraído que possa ser gerenciado no Active Directory.

Isso me levou a pensar em como eu tenho configurado meus sites para acesso anônimo todos esses anos. Normalmente, vou executar meus sites do IIS usando a conta anônima padrão e armazenar a cadeia de conexão no web.config (criptografado e, às vezes, em texto não criptografado). Isso, obviamente, exige que o SQL Server seja executado no modo misto. Então, minha pergunta é: e se nós não armazenarmos a string de conexão no web.config, e apenas criarmos uma conta de domínio anônima exclusiva para o site em particular que teria acesso db_datareader dentro do SQL Server? Existe alguma razão pela qual seria uma má ideia fazer isso?

Eu tentei pensar em todos os cenários em que isso seria uma má ideia, e o único em que posso pensar é onde um "hacker" comprometeu o código no servidor web e, de alguma forma, conseguiu acesso ao seu SQL. Servidor ... mas isso pode acontecer em qualquer cenário.

Alguém conhece as melhores práticas aqui?

    
por Ryan Eastabrook 30.01.2009 в 17:49
fonte

2 respostas

1

Onde eu trabalho, temos um serviço do Windows que é executado sob uma conta de domínio específica. Essa conta é configurada no SQL Server como um login e tem um usuário correspondente no banco de dados ao qual precisa acessar. Nós nunca tivemos nenhum problema com isso.

Acho que o mais importante é configurar corretamente o usuário (ou função) do banco de dados para que ele tenha acesso apenas ao que precisa.

Eu considerei usar o AD para gerenciar o acesso SQL de maneira semelhante à descrita no primeiro parágrafo. (AD Group - > login do SQL Server - > DB User - > DB objects) O único inconveniente que posso ver até agora é que, se um usuário se conectasse diretamente ao banco de dados, ele ignoraria qualquer lógica que você tivesse em seu aplicativo. Um benefício é saber quais usuários do domínio estão acessando seu banco de dados.

    
por PJ8 30.01.2009 / 19:28
fonte
2

Talvez você possa usar o ODBC para criar um DSN para a conexão do SQL Server. Então o seu web.config só precisa saber o DSN. Isso pode exigir que você use System.Data.OleDb. Eu nunca vi DSN usado no asp.net, mas costumava ser bastante padrão para ASP clássico. E nunca ouvi falar do Active Directory sendo usado para gerenciar o ODBC.

    
por rsrobbins 30.01.2009 / 19:06
fonte