Acabo de tener una entrevista en Redmond, donde me hicieron un montón de preguntas de seguridad relacionadas con asp.net. Una de las preguntas que hicieron fue sobre la configuración de una aplicación de intranet segura para usar la delegación restringida para acceder al Servidor SQL. En este escenario, una cuenta de usuario de AD tiene acceso delegado al SQL Server. Por supuesto, el objetivo general es a) no almacenar ningún nombre de usuario/contraseña en ningún lugar del servidor web (web.config), yb) proporcionar un modelo de seguridad abstraído que pueda administrarse en Active Directory.Acceso anónimo (IIS) y SQL Server
Esto me hizo pensar en cómo he estado configurando mis sitios para el acceso anónimo todos estos años. Normalmente ejecutaré mis sitios web de IIS utilizando la cuenta anónima predeterminada y almacenaré la cadena de conexión en el web.config (encriptado, y algunas veces en texto claro). Esto, por supuesto, requiere que su SQL Server se ejecute en modo mixto. Así que mi pregunta es, ¿qué pasaría si no almacenamos la cadena de conexión en el web.config en absoluto, y simplemente creamos una cuenta de dominio anónimo única para el sitio web en particular que tendría acceso a db_datareader dentro de SQL Server? ¿Hay alguna razón por la cual sería una mala idea hacer esto?
He intentado pensar en todos los escenarios donde esta sería una mala idea, y el único en el que puedo pensar es dónde un "hacker" ha puesto en peligro el código en el servidor web, y de alguna manera ha tenido acceso a SQL Server ... pero esto podría suceder en cualquier escenario.
¿Alguien conoce las mejores prácticas aquí?
En el primer párrafo menciono la delegación restringida. Esto tomará una cuenta de dominio y suplantará a un usuario con su acceso "restringido" solo a SQL Server, nada más en la granja de servidores. En este escenario, su usuario no podrá acceder a SQL directamente, solo a través de la aplicación. –