С момента его введения в SQL Server 2016 Always Encrypted стал ценной функцией для повышения безопасности данных. Однако изначально он имел некоторые ограничения, которые затрудняли его применение. В этой статье мы рассмотрим, как Always Encrypted развивался со временем и стал ли он более простым в использовании.
Включение Always Encrypted
Включение Always Encrypted стало гораздо проще благодаря улучшениям, внедренным в клиентские инструменты. Например, шифрование столбца с использованием SQL Server Management Studio (SSMS) теперь является простым процессом. Давайте посмотрим, как включить Always Encrypted:
CREATE DATABASE AlwaysEncrypted;
GO
USE AlwaysEncrypted;
GO
CREATE TABLE dbo.Employees
(
EmployeeID int IDENTITY(1,1) NOT NULL,
FirstName nvarchar(64) NOT NULL,
LastName nvarchar(64) NOT NULL,
BirthDate date NOT NULL,
Salary int NOT NULL,
NationalID char(9) NOT NULL,
CONSTRAINT PK_Employees PRIMARY KEY (EmployeeID)
);
INSERT dbo.Employees(FirstName, LastName, BirthDate, Salary, NationalID)
VALUES(N'A', N'B', '19770101', 50000, '992993994');
-- Применить Always Encrypted с помощью мастера SSMS
-- Щелкните правой кнопкой мыши на таблице и выберите "Зашифровать столбцы..."
В процессе шифрования вам будет предложено выбрать столбцы для шифрования, тип шифрования (детерминированный или случайный) и ключ(и) шифрования столбца, которые следует использовать. Важно отметить, что строковые столбцы могут потребовать преобразования в сортировку, совместимую с шифрованием.
Кроме того, вам будет предложено указать мастер-ключ шифрования, который защищает ключ(и) столбца. Мастер-ключ следует хранить в надежном хранилище ключей, таком как Azure Key Vault. Рекомендуется использовать центральное хранилище сертификатов или Azure Key Vault для удаленного доступа.
Запрос данных
После завершения процесса шифрования вы можете выполнять запросы к зашифрованным данным. Однако по умолчанию SSMS не настроен для поддержки Always Encrypted. Чтобы включить Always Encrypted в SSMS, просто установите флажок “Включить Always Encrypted” в панели параметров подключения.
При запросе зашифрованных столбцов вам будет предложено подключиться к Azure. После успешного подключения вы увидите расшифрованные значения в выводе.
Манипулирование данными
Манипуляция данными с использованием зашифрованных столбцов Always Encrypted требует некоторых соображений. При выполнении вставок важно использовать параметры или локальные переменные с соответствующими типами для обработки значений в виде обычного текста. SSMS можно настроить для правильной параметризации переменных при вставке.
Стоит отметить, что работа с зашифрованными данными может быть сложной, особенно при управлении им из приложения, которому необходимо аутентифицироваться в Azure для доступа к ключам. Важно оценить, является ли Always Encrypted правильным механизмом для защиты ваших данных. Рассмотрите другие варианты, такие как разрешения на столбцы или маскировка динамических данных для нечувствительной информации.
Безопасные анклавы в SQL Server 2019
В SQL Server 2019 было введено новое дополнение под названием безопасные анклавы, которое позволяет выполнять операции над зашифрованными столбцами в безопасной области памяти на сервере, устраняя множество ограничений, которые затрудняют применение Always Encrypted.
Используя безопасные анклавы, зашифрованные столбцы могут стать более функциональными и доступными. Это улучшение предоставляет возможность выполнять операции, такие как сопоставление шаблонов и сортировка, которые ранее были невозможны с Always Encrypted.
В заключение, Always Encrypted развивался со временем, становясь более простым в использовании и безопасным. Благодаря улучшениям в клиентских инструментах и введению безопасных анклавов в SQL Server 2019 были устранены ограничения Always Encrypted, предоставляя более надежное решение для шифрования данных в SQL Server.
Дата последнего обновления статьи: 2023-05-09