Я не считаю, что необходимо защищать базу данных, перемещая ее во внешнюю сеть. Скорее, вы можете решить эти проблемы, ограничив привилегии самих учетных записей. Доступ к данным не должен зависеть от пользователя, а вместо этого использовать системную учетную запись с зашифрованной строкой подключения, настроенной в веб-файле или файле конфигурации приложения.
Аутентификация и авторизация пользователя должны обрабатываться отдельно от доступа к БД.
Сама системная учетная запись БД должна иметь ТОЛЬКО привилегии для выполнения задач, необходимых для работы системы. Это означает только предоставление доступа к процедурам, выполняемым приложением, и, возможно, доступ к чтению любых таблиц или представлений, считываемых через LINQ to SQL.