При предоставлении пользователю доступа к базе данных необходимо учитывать несколько соображений, касающихся преимуществ и недостатков с точки зрения удобства использования и безопасности. Здесь у нас есть два варианта аутентификации и предоставления прав пользователям. Первый - предоставить всем доступ к учетной записи sa (системный администратор), а затем вручную ограничить разрешения, сохранив список пользователей, которым вы можете предоставлять или отклонять разрешения по мере необходимости. Это также известно как метод аутентификации SQL. В этом методе есть серьезные недостатки безопасности, перечисленные ниже. Второй и лучший вариант - Active Directory (AD) обрабатывать все необходимые проверки подлинности и авторизации, также известные как проверка подлинности Windows. Как только пользователь войдет в систему на своем компьютере, приложение подключится к базе данных, используя эти учетные данные Windows для входа в операционную систему.
Основная проблема безопасности при использовании параметра SQL заключается в том, что он нарушает принцип наименьших привилегий (POLP), который заключается в предоставлении пользователю только абсолютно необходимых разрешений, которые ему необходимы, и не более. Используя учетную запись sa, вы обнаруживаете серьезные недостатки безопасности. POLP нарушается, потому что, когда приложение использует учетную запись sa, они получают доступ ко всему серверу базы данных. Аутентификация Windows, с другой стороны, следует политике POLP, предоставляя доступ только к одной базе данных на сервере.
Вторая проблема заключается в том, что нет необходимости для каждого экземпляра приложения иметь пароль администратора. Это означает, что любое приложение является потенциальной точкой атаки для всего сервера. Windows использует учетные данные Windows только для входа на SQL Server. Пароли Windows хранятся в репозитории, в отличие от самого экземпляра базы данных SQL, и аутентификация выполняется внутри Windows без необходимости сохранять пароли sa в приложении.
Третья проблема безопасности возникает при использовании метода SQL, связанного с паролями. Как представлено на веб-сайте Microsoft и на различных форумах по безопасности, метод SQL не требует смены пароля или шифрования, а отправляется в виде открытого текста по сети. И метод SQL не блокируется после неудачных попыток, что позволяет длительную попытку взлома. Однако Active Directory использует протокол Kerberos для шифрования паролей, а также использует систему смены паролей и блокировку после неудачных попыток.
Есть и недостатки эффективности. Поскольку пользователю потребуется вводить учетные данные каждый раз, когда они хотят получить доступ к базе данных, пользователи могут забыть свои учетные данные.
Если пользователь удаляется, вам придется удалять его учетные данные из каждого экземпляра приложения. Если вам нужно обновить пароль администратора sa, вам придется обновить каждый экземпляр SQL-сервера. Это отнимает много времени и небезопасно, оставляя открытой возможность для уволенного пользователя сохранить доступ к SQL Server. При использовании метода Windows ни одна из этих проблем не возникает. Все централизовано и обрабатывается нашей эры.
Единственные преимущества использования метода SQL заключаются в его гибкости. Вы можете получить к нему доступ из любой операционной системы и сети, даже удаленно. Некоторые старые унаследованные системы, а также некоторые веб-приложения могут поддерживать только доступ sa.
Метод AD также предоставляет инструменты, позволяющие экономить время, такие как группы, чтобы упростить добавление и удаление пользователей, а также возможность отслеживания пользователей.
Даже если вам удастся исправить эти недостатки безопасности в методе SQL, вы бы заново изобрели колесо. При рассмотрении преимуществ безопасности, обеспечиваемых аутентификацией Windows, включая политики паролей и соблюдение правил POLP, это гораздо лучший выбор, чем аутентификация SQL. Поэтому настоятельно рекомендуется использовать опцию аутентификации Windows.