Руководство. Начало работы с анклавами Always Encrypted с Анклавами VBS в База данных SQL Azure

Применимо к:База данных SQL Azure

В этом руководстве описано, как приступить к работе с Always Encrypted с безопасными анклавами в База данных SQL Azure с помощью анклавов безопасности на основе виртуализации (VBS). Буду рассмотрены следующие темы.

  • Создание среды для тестирования и оценки Always Encrypted с анклавами VBS.
  • Шифрование данных на месте и выдача полнофункциональных конфиденциальных запросов к зашифрованным столбцам с помощью SQL Server Management Studio (SSMS).

Необходимые компоненты

Требования инструмента

Для работы с этим руководством требуется СРЕДА 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.

  1. Откройте портал Azure и найдите базу данных, для которой требуется включить безопасные анклава.

  2. В параметрах безопасности выберите "Шифрование данных".

  3. В меню "Шифрование данных" выберите вкладку Always Encrypted.

  4. Установите для включения безопасных анклавахзначение ON. Если для него уже задано значение ON, перейдите к следующему шагу.

    Screenshot of enabling secure enclaves on an existing database in the Azure portal.

  5. Нажмите кнопку "Сохранить", чтобы сохранить конфигурацию Always Encrypted.

Шаг 3. Заполнение базы данных

На этом шаге вы создадите таблицу и заполните ее данными, которые позже будут зашифрованы и запрошены.

  1. Откройте среду SSMS и подключитесь к базе данных ContosoHR на логическом сервере Azure SQL, созданном без включения Always Encrypted для подключения к базе данных.

    1. В диалоговом окне Подключение к серверу укажите полное имя сервера (например, myserver135.database.windows.net) и введите имя и пароль администратора, указанные при создании сервера.

    2. Выберите параметры >> и перейдите на вкладку свойств Подключение ion. Обязательно выберите базу данных ContosoHR (а не базу данных по умолчаниюmaster).

    3. Выберите вкладку Always Encrypted.

    4. Убедитесь, что флажок Включить Always Encrypted (шифрование столбцов)не установлен.

      Screenshot of Connect to Server using SSMS without Always Encrypted enabled.

    5. Нажмите Подключиться.

  2. Создайте новую таблицу с именем 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
    
  3. Добавьте несколько записей о сотрудниках в таблицу 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. Подготовка ключей с поддержкой анклава

На этом шаге вы создадите главный ключ столбца и ключ шифрования столбца, который разрешает вычисления анклава.

  1. С помощью экземпляра SSMS из предыдущего шага в обозревателе объектов разверните базу данных и перейдите к пункту Безопасность>Ключи Always Encrypted.

  2. Подготовьте новый главный ключ столбца с поддержкой анклава:

    1. Щелкните правой кнопкой мыши Ключи Always Encrypted и выберите Создать главный ключ столбца....
    2. Введите имя нового главного ключа столбца: CMK1.
    3. Убедитесь, что выбрано разрешение вычислений анклава. (Если для базы данных включена безопасная анклав, она должна быть включена по умолчанию, так как база данных использует конфигурацию оборудования серии DC.)
    4. Выберите Azure Key Vault (рекомендуется) или Хранилище сертификатов Windows (текущий пользователь или локальный компьютер).
      • Если выбрать Azure Key Vault, войдите в Azure, выберите подписку Azure, содержащую хранилище ключей, которое вы хотите использовать, и выберите хранилище ключей. Выберите "Создать ключ", чтобы создать новый ключ.
      • Если выбрать Хранилище сертификатов Windows, нажмите кнопку "Создать сертификат ", чтобы создать сертификат. Screenshot of the allow enclave computations selection in SSMS when creating a new column master key.
    5. Нажмите ОК.
  3. Создайте ключ шифрования столбцов с поддержкой анклава:

    1. Щелкните правой кнопкой мыши Ключи Always Encrypted и выберите Создать ключ шифрования столбца.
    2. Введите имя для нового ключа шифрования столбцов: CEK1.
    3. В раскрывающемся списке Главный ключ столбца выберите ключ, созданный на предыдущих шагах.
    4. Нажмите ОК.

Шаг 5. Шифрование некоторых столбцов на месте

На этом шаге вы выполните шифрование данных, хранящихся в столбцах SSN и Salary в анклаве на стороне сервера, а затем протестируете запрос SELECT к данным.

  1. Откройте новый экземпляр SSMS и подключитесь к базе данных без включенной функции Always Encrypted для подключения к базе данных.

    1. Создайте новый экземпляр SSMS.

    2. В диалоговом окне Подключение к серверу укажите полное имя сервера (например, myserver135.database.windows.net) и введите имя и пароль администратора, указанные при создании сервера.

    3. Выберите параметры >> и перейдите на вкладку свойств Подключение ion. Обязательно выберите базу данных ContosoHR (а не базу данных по умолчаниюmaster).

    4. Выберите вкладку Always Encrypted.

    5. Выберите проверка box включить always Encrypted (шифрование столбцов).

    6. Выберите "Включить безопасные анклава".

    7. Задайте для протокола значение None. См. снимок экрана ниже.

      Screenshot of the SSMS Connect to Server dialog Always Encrypted tab, with attestation protocol set to None.

    8. Нажмите Подключиться.

    9. Если отобразится запрос на включение параметризации для запросов Always Encrypted, нажмите кнопку Включить.

  2. Используя тот же экземпляр 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 очищает кэш плана запросов для базы данных в приведенном выше скрипте. Изменив таблицу, необходимо очистить планы всех пакетов и хранимых процедур, которые обращаются к таблице, чтобы обновить сведения о параметрах шифрования.

  3. Чтобы убедиться в том, что столбцы SSN и Salary зашифрованы, откройте новое окно запроса в экземпляре SSMS без включенной функции Always Encrypted для подключения к базе данных и выполните приведенную ниже инструкцию. Окно запроса должно возвратить зашифрованные значения столбцов SSN и Salary. Если вы выполните тот же запрос с помощью экземпляра SSMS с включенной функцией Always Encrypted, данные будут расшифрованы.

    SELECT * FROM [HR].[Employees];
    

Шаг 6. Выполнение полнофункциональных запросов к зашифрованным столбцам

Вы можете выполнить полнофункциональные запросы к зашифрованным столбцам. Некоторая обработка запросов будет выполняться в анклаве на стороне сервера.

  1. В экземпляре SSMS с включенной функцией Always Encrypted убедитесь, что включена параметризация для Always Encrypted.

    1. Выберите пункт Инструменты в главном меню SSMS.
    2. Выберите Параметры.
    3. Выберите Выполнение запроса>SQL Server>Дополнительно.
    4. Убедитесь, что установлен флажок Включить параметризацию для Always Encrypted.
    5. Нажмите ОК.
  2. Откройте новое окно запроса, а затем вставьте и выполните приведенный ниже запрос. Запрос должен возвратить соответствующие заданным условиям поиска значения и строки в виде открытого текста.

    DECLARE @SSNPattern [char](11) = '%6818';
    DECLARE @MinSalary [money] = $1000;
    SELECT * FROM [HR].[Employees]
    WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
    
  3. Попробуйте выполнить тот же запрос еще раз в экземпляре SSMS с отключенной функцией Always Encrypted. Произойдет сбой.

Следующие шаги

После завершения работы с этим учебником вы можете обратиться к одному из следующих учебников:

См. также