Основные средства обеспечения безопасности в SQL Server | Windows для системных администраторов

Основы аутентификации

Аутентификация – это процесс подтверждения личности пользователя или компьютера. Процесс обычно состоит из четырех этапов:

  1. Пользователь предъявляет личность, обычно предоставляя имя пользователя.

  2. Система бросает вызов пользователю, чтобы подтвердить свою личность. Самым распространенным вызовом является запрос пароля.

  3. Пользователь отвечает на вызов, предоставляя запрошенное доказательство, обычно пароль.

  4. Система проверяет, что пользователь предоставил приемлемое доказательство, например, проверяя пароль по локальной базе паролей или используя централизованный сервер аутентификации.

Для нашего обсуждения режимов аутентификации SQL Server критический момент находится на четвертом шаге выше: момент, когда система проверяет личность пользователя. Выбор режима аутентификации определяет куда SQL Server отправляется для проверки пароля пользователя.

Always encrypted

Эта технология позволяет хранить шифрованные данные в SQL Server без передачи ключей шифрования самому SQL Server. Always Encrypted так же как и TDE шифрует данные в базе данных, но не на уровне базы, а на уровне столбца.

Для шифрования Always Encrypted использует 2 ключа:

  • Column Encryption Key (CEK)
  • Column Master Key (CMK)

Все процессы шифрования и дешифрования данных происходят на клиенте, в базе данных хранятся только зашифрованное значение ключа шифрования (CEK).

Always Encrypted так же позволяет ограничить доступ к данным даже для DBA, таким образом давая возможность не беспокоиться о том, что администратор получит доступ к данным, к которым не должен.

Аудит активности в sql server

SQL Server предоставляет возможность вести аудит любой пользовательской активности в экземпляре сервера.

Это очень мощный инструмент, который позволяет полностью контролировать действия ваших пользователей/разработчиков.

Рассмотрим базовую настройку аудита:

В SSMS, во вкладке Security -> Audits создайте новый аудит.

Затем, для аудита нужно создать Спецификацию (Audit Specification), для указания событий, которые будут отслеживаться.

После того как вы создадите и активируете аудит, в журнале аудита можно будет посмотреть события, которые зафиксированы процедурой аудита.

Аутентификация в sql server

Аккаунт SQL Server можно разделить на 2 части: Имя входа и Пользователь.

В противном случае есть два варианта.первый вариант предполагает изменение в регистре поля sql сервера хранящего значение типа аутентификации.

Для изменения требуется зайти в 

HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server 


Для определения экземпляра нашего сервера, необходимо посмотреть значение поля  MSSQLSERVER находящегося в HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerInstance NamesSQL в параметре.

В данном случае имя сервера MSSQL10_50.MSSQLSERVER 

За аутентификацию отвечает параметр LoginMode, находящийся в ветке MSSQLServer в экземпляре нашего сервера, т.е. в данном примере параметр LoginMode будет находиться в
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLServer Основные средства обеспечения безопасности в SQL Server | Windows для системных администраторов

Поле LoginMode может иметь два значения :

  1. Windows аутентификация
  2. SQL Server and Windows Authentication mode (смешанная)


Изменяем значение на 2, жмем кнопку OK и ОБЯЗАТЕЛЬНО перезапускаем SQL Server. 

Перезапуск сервера осуществляется путем перезапуска сервиса SQL Server (MSSQLSERVER)

Встроенные роли базы данных

Так же стоит отдельно выделить специальные роли в базе данных msdb.

Встроенные роли сервера

Схема ролей SQL Server:

Встроенные схемы

В SQL Server есть встроенные системные схемы:

  • dbo
  • guest
  • sys
  • INFORMATION_SCHEMA

Схема dbo является схемой по умолчанию для новых баз данных, а пользователь dbo является владельцем схемы dbo. По умолчанию, новые пользователи в базе данных имеют схему dbo в качестве схемы по умолчанию. Другие встроенные схемы нужны для системных объектов SQL Server.

Второй вариант заключается в использовании sql management studio


Если при установке SQL сервера был выбран  пункт Management Tools , то повторная установка компонента, естественно, не требуется 

Процесс установки достаточно очевиден, по этому подробно разбирать его не вижу смысла.После установки необходимо зайти в систему от имени пользователя аккаут которого существует в SQL сервере и запустить SQL Management Studio

Выбор режима аутентификации

Лучшая рекомендация Microsoft – по возможности использовать режим проверки подлинности Windows. Основное преимущество заключается в том, что использование этого режима позволяет централизовать администрирование учетных записей для всего предприятия в одном месте:

Active Directory. Это значительно снижает вероятность ошибки или недосмотра. Поскольку личность пользователя подтверждается Windows, для входа в SQL Server можно настроить определенные учетные записи пользователей и групп Windows. Кроме того, проверка подлинности Windows использует шифрование для проверки подлинности пользователей SQL Server.

Аутентификация SQL Server, с другой стороны, позволяет передавать имена пользователей и пароли по всей сети, делая их менее безопасными. Однако этот режим может быть хорошим выбором, если пользователи подключаются из разных ненадежных доменов или когда, возможно, используются менее безопасные интернет-приложения, такие как ASP.net.

Например, рассмотрим сценарий, в котором доверенный администратор базы данных покидает вашу организацию на недружественных условиях. Если вы используете режим аутентификации Windows, отзыв доступа этого пользователя происходит автоматически, когда вы отключаете или удаляете учетную запись Active Directory администратора баз данных.

Если вы используете смешанный режим проверки подлинности, вам нужно не только отключить учетную запись Windows администратора БД, но и прочесать списки локальных пользователей на каждом сервере базы данных , чтобы убедиться в отсутствии локальных учетных записей, в которых Администратор базы данных может знать пароль. Это много работы!


Итак, выбранный вами режим влияет как на уровень безопасности, так и на простоту обслуживания баз данных вашей организации.

Данная заметка будет полезна людям не имеющих опыта работы с microsoft sql server и столкнувшихся с проблемой аутентификации под учетными записями sql сервера.

Microsoft SQL Server имеет возможность производить аутентификацию с помощью учетных записей Windows, что является достаточно удобной возможностью, Выбор режима аутентификации возможен между двумя вариантами :

  1. Windows Authentication mode
  2. SQL Server and Windows Authentication mode

Когда стоит использовать шифрование sql server?

Шифрование данных это одна из важных мер обеспечения безопасности, но шифрование может быть требовательно к ресурсам сервера и иногда может быть лишним.

Если пользователи обращаются к данным через общедоступную сеть, то для обеспечения безопасности может потребоваться шифрование, но если данные передаются по защищенной интрасети или ВПН, то необходимости в шифровании данных нет. Так же стоит рассмотреть возможность шифрования данных, если есть угроза кражи физического носителя с базами данных.

Внедрение шифрования должно быть хорошо спланировано: нужно учесть дополнительную нагрузку на сервер, могут ли приложения, которые работают с вашим сервером внедрить поддержку шифрования данного типа на своей стороне и многие другие нюансы.

О режимах аутентификации sql server

Давайте рассмотрим эти два режима немного дальше:

Режим аутентификации Windows требует, чтобы пользователи указывали действительное имя пользователя и пароль Windows для доступа к серверу базы данных. Если выбран этот режим, SQL Server отключает функции входа в систему для SQL Server, и личность пользователя подтверждается только через его учетную запись Windows.

Смешанный режим аутентификации позволяет использовать учетные данные Windows, но дополняет их локальными учетными записями пользователей SQL Server, которые администратор создает и поддерживает в SQL Server. Имя пользователя и пароль пользователя хранятся в SQL Server, и пользователи должны проходить повторную проверку подлинности при каждом подключении.

Общие рекомендации по безопасности sql server

Всегда следуйте принципу наименьших привилегий. В том числе настройте аккаунт службы SQL Server с помощью gMSA. Ни в коем случае не используйте доменный аккаунт с привилегиями администратора домена.

Оценка уязвимостей sql server через ssms

В SQL Server Management Studio есть функция оценки уязвимостей для базы данных.

Выберите базу данных -> Tasks -> Vulnerability Assessment -> Scan For Vulnerabilities.

Сканнер оценит базу данных на предмет популярных ошибок в конфигурации безопасности и даст соответствующие рекомендации.

Обязательно стоит пройтись этим сканнером по вашим базам данных. Он может выявить скрытые проблемы, которых не видно на первый взгляд.

Предоставление прав ролям, а не пользователям

Когда пользователей становится много, управлять их разрешениями становится сложнее, и также становится сложнее не допустить ошибки в предоставлении прав.

Рекомендуется предоставлять разрешения ролям, а пользователей добавлять в роли. Таким образом вы добьетесь большей прозрачности, так как все пользователи той или иной роли будут иметь одинаковые права. Добавить или удалить пользователей из роли проще, чем воссоздать отдельные наборы разрешений для отдельных пользователей.

Можно предоставить права пользователю на схему. В этом случае пользователи сразу смогут работать с вновь созданными объектами в этой схеме, в отличии от ролей, когда при создании нового объекта, роли нужно будет раздать на него права.

Прозрачное шифрование данных

Прозрачное шифрование данных или Transparent Data Encryption шифрует всю базу целиком. При краже физического носителя или .mdf/.ldf файла, злоумышленник не сможет получить доступ к информации в базе данных.

Диаграмма, для того чтобы представить весь процесс

Базовое шифрование базы данных через T-SQL:

USE master;GOCREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘password’;goCREATE CERTIFICATE ServerCert WITH SUBJECT = ‘DEK Certificate’;goUSE AdventureWorks2022;GOCREATE DATABASE ENCRYPTION KEYWITH ALGORITHM = AES_128ENCRYPTION BY SERVER CERTIFICATE ServerCert;GOALTER DATABASE AdventureWorks2022SET ENCRYPTION ON;GO

Роли приложений

Роль приложения – это объект базы данных (такой же, как и обычная роль базы данных), который позволяет с помощью аутентификации через пароль менять контекст безопасности в базе данных. В отличие от ролей баз данных, роли приложений по умолчанию находятся в неактивном состоянии и активируются, когда приложение выполняет процедуру sp_setapprole и вводит соответствующий пароль.

В отличие от обычных ролей, роли приложений практически никогда не используются. Как исключение, их применение можно найти в multi-layer приложениях.

Схемы в sql server

У некоторых объектов SQL Server (таблицы, процедуры, представления, функции) есть схема. Схемы можно представить, как контейнеры для различных объектов (или пространство имён/namespace, если вы знакомы с программированием).

Например, если у пользователя есть права на select из схемы, то пользователь так же может делать select со всех объектов этой схемы. То есть объекты, принадлежащие схеме, наследуют её разрешения. Когда пользователи создают объекты в схеме, объекты принадлежат владельцу схемы, а не пользователю.

Главное отличие схем от ролей в том, что разрешения на схемы могут быть предоставлены ролям. Например, у роли testrole могут быть разрешения select со схемы schema1 и разрешения на select/update на схеме schema2. Объект может принадлежать всего одной схеме, но права на него могут быть у нескольких ролей.

Фильтрация данных в sql server

Фильтрация данных в SQL Server через хранимые процедур/представления/функции можно отнести к реализации принципу наименьших привилегий, так как вы предоставляете доступ не ко всем данным в таблице, а лишь к некоторой их части.

Например, можно предоставить пользователю права только на SELECT из представления и запретить прямой доступ к таблицам, которые используются в представлении. Таким образом вы предоставите доступ только к части данных из таблицы, задав фильтр where в представлении.

Фильтрация данных через row-level security

Безопасность на уровне строк или Row-Level Security (RLS) позволяет фильтровать данные таблицы для разных пользователей по настраиваемому фильтру. Это осуществляется через SECURITY POLICY в T-SQL

На данном скриншоте политика настраивается таким образом, что пользователь Sales1 будет видеть строки таблицы, в которых значение столбца Sales равняется имени пользователя (Sales1), а пользователь Manager будет видеть все строки.

Шифрование данных средствами sql server

SQL Server может шифровать данные, процедуры и соединения с сервером. Шифрование возможно с использованием сертификата, асимметричного или симметричного ключа. В SQL Server используется иерархичная модель шифрования, то есть каждый слой иерархии шифрует слой под ним.

Самыми распространенными типами шифрования являются TDE (Прозрачное шифрование данных) и Always Encrypted.

Похожее:  Как подключить Мобильный банк Сбербанка через интернет, телефон и смс, основные SMS-команды

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *