WindowsMacПрограммное обес..НастройкиБезопасностьПродуктивностьЛинуксАндроид (Androi.. Все

Как настроить безопасность в Microsoft SQL Server

Отредактировано 2 Несколько недель назад от ExtremeHow Редакционная команда

Microsoft SQL ServerБезопасностьКонфигурацияБаза данныхWindowsЛинуксИТУправление пользователямиАутентификацияСервер

Как настроить безопасность в Microsoft SQL Server

Перевод обновлен 2 Несколько недель назад

Microsoft SQL Server — это популярная система управления базами данных, которая позволяет хранить, извлекать и обрабатывать данные. Однако, как и в любой системе, которая управляет конфиденциальными данными, безопасность имеет чрезвычайно важное значение. Цель настройки безопасности — защитить данные от несанкционированного доступа и гарантировать, что только правильные люди имеют полномочия управлять данными. Эта статья предоставляет комплексное руководство по настройке безопасности в Microsoft SQL Server.

Модель безопасности SQL Server

Модель безопасности в SQL Server основана на комбинации учетных записей входа, пользователей и ролей. Эти элементы работают в сочетании, чтобы обеспечить доступ к базе данных только уполномоченным пользователям и выполнение определенных операций. Давайте подробнее рассмотрим каждый из этих элементов.

Вход

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

Чтобы создать новый вход, выполните следующие шаги:

use master;
CREATE LOGIN [TestLogin] WITH PASSWORD='YourStrongPassword123';

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

Пользователи

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

Чтобы создать пользователя базы данных для ранее созданного входа, используйте следующую команду:

use your database;
CREATE USER [TestUser] FOR LOGIN [TestLogin];

Эта команда создает пользователя, связанного с входом TestLogin, в указанной базе данных (YourDatabase).

Роли

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

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

Вот как можно добавить пользователя в определенную роль базы данных:

use your database;
EXECUTE sp_addrolemember 'db_datareader', 'TestUser';

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

Разрешения

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

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

use your database;
GRANT INSERT ON [YourTable] TO TestUser;

Эта команда позволяет TestUser вставлять данные в указанную таблицу (YourTable) в YourDatabase.

Шифрование

SQL Server предоставляет возможности шифрования для защиты конфиденциальных данных, хранимых, передаваемых или обмененных между экземплярами SQL Server и приложениями. Это включает поддержку прозрачного шифрования данных (TDE) и функции «всегда зашифровано».

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

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

Чтобы реализовать TDE в базе данных, выполните следующие шаги:

use master;
Create master key encryption by password = 'YourStrongPassword123';
CREATE CERTIFICATE EncryptCert WITH SUBJECT = 'Database Encryption Certificate';
use your database;
Create database encryption key with algorithm = AES_256 Encryption by server certificate EncryptCert;
ALTER DATABASE YourDatabase SET ENCRYPTION ON;

Эта серия команд настраивает шифрование базы данных для YourDatabase с использованием сертификата.

Функция "всегда зашифровано"

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

Настройка функции "всегда зашифровано" требует использования главного ключа столбца и ключа шифрования столбца. Главный ключ столбца хранится вне SQL Server, а ключ шифрования столбца хранится в SQL Server и используется для шифрования конфиденциальных столбцов.

Чаще всего для настройки этой функции требуется конфигурация ключей шифрования и использование SQL Server Management Studio (SSMS) или сценария PowerShell для изменения столбцов таблицы на использование шифрования.

Аудит

Аудит в SQL Server — это неотъемлемая часть безопасности, поскольку он помогает отслеживать и логгировать события, происходящие в системе. Вы можете аудировать события на уровне сервера или базы данных, и SQL Server предоставляет встроенные объекты аудита для облегчения этих действий.

Вот простой пример создания аудита и связывания его с объектом на уровне сервера:

Create a server audit ServerAudit
in file(filepath = 'C:\AuditFiles\');

Change server audit ServerAudit
with (status = on);

Create a server audit specification ServerAuditSpec
ServerAudit for server audits
add(failed_login_group);

Change server audit specification ServerAuditSpec
with (status = on);

Этот скрипт создает аудит, который логгирует неудачные попытки входа и выводит лог в указанное место файла.

Политики безопасности

SQL Server поддерживает несколько политик безопасности, которые помогают автоматизировать и управлять практиками безопасности. Среди них можно выделить политики безопасности на уровне строк (RLS) и динамическое маскирование данных (DDM).

Политики безопасности на уровне строк (RLS)

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

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

CREATE FUNCTION dbo.fn_securitypredicate (@UserName AS sysname)
Returns Table
With SchemaBinding
As
select return 1 as result
where @username = USER_NAME();

Create a security policy SecurityPolicy
ADD FILTER PREDICATE dbo.fn_securitypredicate(username)
on your table
with (status = on);

Этот пример фильтрует доступ к YourTable на основе имени пользователя.

Динамическое маскирование данных (DDM)

DDM — это встроенная функция в SQL Server, которая способствует процессу скрытия конфиденциальных данных при отображении данных неавторизованным пользователям. Данные хранятся полностью, но скрываются или анонимизируются при извлечении.

Вот пример настройки DDM на таблице:

ALTER TABLE YourTable
ALTER COLUMN SensitiveColumn ADD MASKED WITH (FUNCTION = 'partial(2,"*",0)');

Это маскирует SensitiveColumn, используя частичную функцию маскирования, оставляя первые две буквы отображаемыми, а остальные буквы замаскированными.

Заключение

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

Если вы найдете что-то неправильное в содержании статьи, вы можете


Комментарии