Руководство. Начало работы с анклавами Always Encrypted с Анклавами VBS в База данных SQL Azure
Применимо к: База данных SQL Azure
В этом руководстве описано, как приступить к работе с Always Encrypted с безопасными анклавами в База данных SQL Azure с помощью анклавов безопасности на основе виртуализации (VBS). Буду рассмотрены следующие темы.
- Создание среды для тестирования и оценки Always Encrypted с анклавами VBS.
- Шифрование данных на месте и выдача полнофункциональных конфиденциальных запросов к зашифрованным столбцам с помощью SQL Server Management Studio (SSMS).
Необходимые компоненты
- Активная подписка Azure. Если ее нет, создайте бесплатную учетную запись. Чтобы подписка могла создавать ресурсы, необходимо быть участником или ролью владельца.
- Необязательно, но рекомендуется хранить главный ключ столбца для Always Encrypted: хранилище ключей в Azure Key Vault. Сведения о создании хранилища ключей см. в кратком руководстве по созданию хранилища ключей с помощью портал Azure.
- Если хранилище ключей использует модель разрешений политики доступа, убедитесь, что у вас есть следующие разрешения ключа в хранилище ключей:
get
, ,list
create
,unwrap key
,wrap key
, .verify
sign
См. раздел "Назначение политики доступа Key Vault". - Если вы используете модель разрешений на основе ролей Azure (RBAC), убедитесь, что вы являетесь членом роли офицера шифрования Key Vault для хранилища ключей. Сведения о предоставлении доступа к ключам Key Vault, сертификатам и секретам с помощью управления доступом на основе ролей Azure.
- Если хранилище ключей использует модель разрешений политики доступа, убедитесь, что у вас есть следующие разрешения ключа в хранилище ключей:
Требования инструмента
Для работы с этим руководством требуется СРЕДА SQL Server Management Studio (SSMS). Вы можете использовать PowerShell или Azure CLI для включения анклавов VBS.
Скачайте последнюю версию SQL Server Management Studio (SSMS).
Шаг 1. Создание и настройка сервера и базы данных
На этом шаге вы создадите новый База данных SQL Azure логический сервер и новую базу данных.
Перейдите к краткому руководству. Создание одной базы данных — База данных SQL Azure и следуйте инструкциям в разделе "Создание одной базы данных", чтобы создать новый логический сервер База данных SQL Azure и новую базу данных.
Внимание
Убедитесь, что вы создаете пустую базу данных с именем ContosoHR (а не примером базы данных).
Шаг 2. Включение анклава VBS
На этом шаге вы включите анклава VBS в базе данных, которая требуется для Always Encrypted с безопасными анклавами. Чтобы включить анклава VBS в базе данных, необходимо задать для свойства базы данныхEnclaveType значение VBS.
Откройте портал Azure и найдите базу данных, для которой требуется включить безопасные анклава.
В параметрах безопасности выберите "Шифрование данных".
В меню "Шифрование данных" выберите вкладку Always Encrypted.
Установите для включения безопасных анклавах значение ON. Если для него уже задано значение ON, перейдите к следующему шагу.
Нажмите кнопку "Сохранить", чтобы сохранить конфигурацию Always Encrypted.
Шаг 3. Заполнение базы данных
На этом шаге вы создадите таблицу и заполните ее данными, которые позже будут зашифрованы и запрошены.
Откройте среду SSMS и подключитесь к базе данных ContosoHR на логическом сервере Azure SQL, созданном без включения Always Encrypted для подключения к базе данных.
В диалоговом окне Подключение к серверу укажите полное имя сервера (например, myserver135.database.windows.net) и введите имя и пароль администратора, указанные при создании сервера.
Выберите "Параметры >> " и перейдите на вкладку "Свойства подключения". Обязательно выберите базу данных ContosoHR (а не базу данных по умолчанию
master
).Выберите вкладку Always Encrypted.
Убедитесь, что флажок Включить Always Encrypted (шифрование столбцов)не установлен.
Нажмите Подключиться.
Создайте новую таблицу с именем Employees.
CREATE SCHEMA [HR]; GO CREATE TABLE [HR].[Employees] ( [EmployeeID] [int] IDENTITY(1,1) NOT NULL, [SSN] [char](11) NOT NULL, [FirstName] [nvarchar](50) NOT NULL, [LastName] [nvarchar](50) NOT NULL, [Salary] [money] NOT NULL ) ON [PRIMARY]; GO
Добавьте несколько записей о сотрудниках в таблицу Employees.
INSERT INTO [HR].[Employees] ([SSN] ,[FirstName] ,[LastName] ,[Salary]) VALUES ('795-73-9838' , N'Catherine' , N'Abel' , $31692); INSERT INTO [HR].[Employees] ([SSN] ,[FirstName] ,[LastName] ,[Salary]) VALUES ('990-00-6818' , N'Kim' , N'Abercrombie' , $55415);
Шаг 4. Подготовка ключей с поддержкой анклава
На этом шаге вы создадите главный ключ столбца и ключ шифрования столбца, который разрешает вычисления анклава.
С помощью экземпляра SSMS из предыдущего шага в обозревателе объектов разверните базу данных и перейдите к пункту Безопасность>Ключи Always Encrypted.
Подготовьте новый главный ключ столбца с поддержкой анклава:
- Щелкните правой кнопкой мыши Ключи Always Encrypted и выберите Создать главный ключ столбца....
- Введите имя нового главного ключа столбца: CMK1.
- Убедитесь, что выбрано разрешение вычислений анклава. (Если для базы данных включена безопасная анклав, она должна быть включена по умолчанию, так как база данных использует конфигурацию оборудования серии DC.)
- Выберите Azure Key Vault (рекомендуется) или Хранилище сертификатов Windows (текущий пользователь или локальный компьютер).
- Если выбрать Azure Key Vault, войдите в Azure, выберите подписку Azure, содержащую хранилище ключей, которое вы хотите использовать, и выберите хранилище ключей. Выберите "Создать ключ", чтобы создать новый ключ.
- Если выбрать Хранилище сертификатов Windows, нажмите кнопку "Создать сертификат ", чтобы создать сертификат.
- Нажмите ОК.
Создайте ключ шифрования столбцов с поддержкой анклава:
- Щелкните правой кнопкой мыши Ключи Always Encrypted и выберите Создать ключ шифрования столбца.
- Введите имя для нового ключа шифрования столбцов: CEK1.
- В раскрывающемся списке Главный ключ столбца выберите ключ, созданный на предыдущих шагах.
- Нажмите ОК.
Шаг 5. Шифрование некоторых столбцов на месте
На этом шаге вы выполните шифрование данных, хранящихся в столбцах SSN и Salary в анклаве на стороне сервера, а затем протестируете запрос SELECT к данным.
Откройте новый экземпляр SSMS и подключитесь к базе данных без включенной функции Always Encrypted для подключения к базе данных.
Создайте новый экземпляр SSMS.
В диалоговом окне Подключение к серверу укажите полное имя сервера (например, myserver135.database.windows.net) и введите имя и пароль администратора, указанные при создании сервера.
Выберите "Параметры >> " и перейдите на вкладку "Свойства подключения". Обязательно выберите базу данных ContosoHR (а не базу данных по умолчанию
master
).Выберите вкладку Always Encrypted.
Установите флажок Enable Always Encrypted (шифрование столбцов).
Выберите "Включить безопасные анклава".
Задайте для протокола значение None. См. снимок экрана ниже.
Нажмите Подключиться.
Если отобразится запрос на включение параметризации для запросов Always Encrypted, нажмите кнопку Включить.
Используя тот же экземпляр SSMS (с включенной функцией Always Encrypted), откройте новое окно запроса и выполните шифрование столбцов SSN и Salary с помощью приведенных ниже инструкций.
ALTER TABLE [HR].[Employees] ALTER COLUMN [SSN] [char] (11) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL WITH (ONLINE = ON); ALTER TABLE [HR].[Employees] ALTER COLUMN [Salary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL WITH (ONLINE = ON); ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
Примечание.
Инструкция ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE очищает кэш плана запросов для базы данных в приведенном выше скрипте. Изменив таблицу, необходимо очистить планы всех пакетов и хранимых процедур, которые обращаются к таблице, чтобы обновить сведения о параметрах шифрования.
Чтобы убедиться в том, что столбцы SSN и Salary зашифрованы, откройте новое окно запроса в экземпляре SSMS без включенной функции Always Encrypted для подключения к базе данных и выполните приведенную ниже инструкцию. Окно запроса должно возвратить зашифрованные значения столбцов SSN и Salary. Если вы выполните тот же запрос с помощью экземпляра SSMS с включенной функцией Always Encrypted, данные будут расшифрованы.
SELECT * FROM [HR].[Employees];
Шаг 6. Выполнение полнофункциональных запросов к зашифрованным столбцам
Вы можете выполнить полнофункциональные запросы к зашифрованным столбцам. Некоторая обработка запросов будет выполняться в анклаве на стороне сервера.
В экземпляре SSMS с включенной функцией Always Encrypted убедитесь, что включена параметризация для Always Encrypted.
- Выберите пункт Инструменты в главном меню SSMS.
- Выберите Параметры.
- Выберите Выполнение запроса>SQL Server>Дополнительно.
- Убедитесь, что установлен флажок Включить параметризацию для Always Encrypted.
- Нажмите ОК.
Откройте новое окно запроса, а затем вставьте и выполните приведенный ниже запрос. Запрос должен возвратить соответствующие заданным условиям поиска значения и строки в виде открытого текста.
DECLARE @SSNPattern [char](11) = '%6818'; DECLARE @MinSalary [money] = $1000; SELECT * FROM [HR].[Employees] WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
Попробуйте выполнить тот же запрос еще раз в экземпляре SSMS с отключенной функцией Always Encrypted. Произойдет сбой.
Следующие шаги
После завершения работы с этим учебником вы можете обратиться к одному из следующих учебников:
- Руководство по разработке приложения .NET с помощью Always Encrypted с безопасными анклавами
- Руководство по разработке приложения .NET Framework с помощью Always Encrypted с безопасными анклавами
- Руководство по началу работы с Always Encrypted и безопасными анклавами в SQL Server