Published on

June 20, 2021

Исследование эволюции Always Encrypted в SQL Server

С момента его введения в 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

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.